2008-09-18 8 views
5

J'essaie de lire un fichier .doc dans une base de données pour pouvoir indexer son contenu. Existe-t-il un moyen facile pour PHP sur Linux de lire les fichiers .doc? A défaut, est-il possible de convertir des fichiers .doc en rtf, pdf ou un autre format 'ouvert' facile à lire?Obtenir PHP pour lire les fichiers .doc sous Linux

Remarque, je ne suis pas intéressé par les fichiers .docx.

Répondre

3

Il semble y avoir un library for accessing Word documents mais je ne sais pas comment y accéder depuis PHP. Je pense que la meilleure solution serait d'appeler leur wv command de PHP.

+0

Cela semble idéal. J'ai besoin de le tester sur certains docs, mais jusqu'ici la fonction wvText semble faire ce dont j'ai besoin. – Conor

1

Vous pouvez utiliser antiword ou AbiWord pour extraire le texte et l'alimenter vers votre indexeur de texte intégral préféré. AbiWord est probablement plus efficace pour vos besoins car il peut convertir en RTF, PDF et autres formats (oui, c'est un traitement de texte GUI, mais il prend également en charge l'utilisation de la ligne de commande).

0

Ce n'est pas PHP, mais il y a un utilitaire doc2rtf que vous pouvez utiliser. De là, vous pouvez simplement ouvrir le fichier RTF en tant que document texte, écrire des routines de remplacement de chaîne pour supprimer les codes de formatage RTF, et avoir un glob de texte approprié pour l'indexation.

Alternativement, vous pouvez obtenir OpenOffice et ouvrir les documents MS Word et juste Fichier> Enregistrer sous> RTF.

0

Les fichiers DOC sont stockés dans un format binaire dans lequel il n'y a pas eu de classes écrites php pour les traiter.

Les fichiers RTF sont beaucoup plus faciles à analyser, étant principalement du texte, vous pouvez simplement les ouvrir avec fopen et lire le contenu.

Je suggère d'utiliser RTF si vous le pouvez, car il n'y a pas encore de solution pour les fichiers DOC.

7

Conor, je suggérerais de regarder les macros appelantes d'interface de ligne de commande d'OpenOffice. Il peut convertir de nombreux formats de fichiers en plusieurs autres. Ensuite, vous pouvez choisir quelque chose de plus analysable que MS doc.

Par exemple, pour convertir au format PDF, une ligne de commande est:

/usr/lib/ooo-2.0/program/soffice.bin -norestore -nofirststart -nologo -headless -invisible "macro:///Standard.Module1.SaveAsPDF(demo.doc)" 
+0

hey c'est un bon conseil: avez-vous un lien vers une référence pour d'autres macros comme ça? – nickf

+0

Essayez ceci: http://www.tinybutstrong.com/tbsooo.php –

2

phpLiveDocx est un composant Zend Framework et peut lire et écrire des fichiers DOC et RTF en PHP sous Linux, Windows et Mac. En outre, vous pouvez l'utiliser pour générer des fichiers PDF et même fusionner des données de PHP dans des fichiers modèles créés avec MS Word ou Open Office!

Voir le site web du projet:

http://www.phplivedocx.org

1

J'ai trouvé un paquet unoconv dans Ubuntu. Il effectue la conversion entre tous les formats supportés par OpenOffice. Vous devriez être capable d'utiliser exec en php pour exécuter cet utilitaire.

0

Après des jours de recherche, voici ma meilleure solution: http://wvware.sourceforge.net/

Installer le paquet

sudo apt-get install wv 

utiliser dans PHP:

$output = str_replace('.doc', '.txt', $filename); 
shell_exec('/usr/bin/wvText ' . $filename . ' ' . $output); 
$text = file_get_contents($output); 
# Convert to UTF-8 if needed 
if(!mb_detect_encoding($text, 'UTF-8', true)) 
{ 
    $text = utf8_encode($text); 
} 
unlink($output); 
Questions connexes