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