Aujourd’hui, je vous propose un petit bundle Symfony2 de ma création. Celui-ci permet d’extraire du contenu et des metadatas sur vos fichiers. Vous avez la liste des fichiers supportés à cette adresse.
Installation
Clone:
git clone https://github.com/Funstaff/FunstaffTikaBundle vendor/bundles/Funstaff/TikaBundle
Ajout en submodule:
git submodule add https://github.com/Funstaff/FunstaffTikaBundle vendor/bundles/Funstaff/TikaBundle
Télécharger le binaire Tika (runnable jar) à cette adresse et déplacer le dans le path de votre choix que vous renseignerez dans votre configuration.
Nous allons ajouter le namespace « Funstaff » dans le fichier autoload.php
$loader->registerNamespaces(array(
...
'Funstaff' => __DIR__.'/../vendor/bundles',
));
Activons maintenant le bundle:
public function registerBundles()
{
$bundles = array(
...
new Funstaff\TikaBundle\FunstaffTikaBundle(),
);
}
Sa configuration est très simple. Il vous suffit de déclarer ces éléments dans votre fichier config.yml:
funstaff_tika:
tika_path: /path/to/tika-app-1.0.jar
output_format: ~
logging: ~
Options possibles pour ces paramètres:
tika_path: Chemin sur le binaire Tika
output_format: xml, html ou text (défaut: xml)
jogging: true ou false (si non défini, utilise le paramètres jogging du Symfony2)
Utilisation
Dès maintenant, vous avez accès au service « funstaff.tika ». Voici comment l’utiliser.
$tika = $this->get('funstaff.tika')
->setOutputFormat('text')
->addDocument('foo', '/path/to/foo')
->extractContent();
Dans l’exemple ci-dessus, nous avons fixé le format de sortie au format texte, ajouté le document foo et lancer l’extraction. Nous allons maintenant pouvoir récupérer les informations:
foreach ($tika->getDocuments() as $document) {
$content = $document->getContent();
}
Vous pouvez ajouter plusieurs documents en rajoutant plusieurs lignes « addDocument ».
Fonctions existantes pour l’extraction:
extractContent: Uniquement le texte
extractMetadata: Uniquement les metadata
extractAll: Texte et métadata
Exemple avec la récupération du texte et des metadatas:
foreach ($tika->getDocuments() as $document) {
$content = $document->getContent();
$metadata = $document->getMetadata();
$author = $metadata->get('Author');
}
Voilà, nous avons effectué le tour du propriétaire. Si ce bundle vous intéresse, vous le trouverez sur github à l’adresse suivante: FunstaffTikaBundle
Si vous désirez me laisser votre feedback: Github issue
