Extraire le texte d'un document word

Extraire le texte d'un document word - PHP - Programmation

Marsh Posté le 11-09-2007 à 14:45:24    

Depuis ce matin, je cherche un programme (en php autant que possible) qui me permette d'extraire le texte d'un document word (.doc -> .txt). Jusqu'à présent, j'ai trouvé antiword mais j'arrive pas à le faire fonctionner via php (ni avec la fonction system() ni avec exec()) et aussi http://www.brothersoft.com/web_aut [...] 49875.html (je suis allé aussi sur le site de l'auteur voir si y'avait pas une nouvelle version), mais ça marche pas terrible.
 
Est-ce que vous avez une solution? Merci. Faudrait que ça marche tant sur un serveur sous Linux que sous Windows
 
ps : j'ai bien pensé à la solution COM pour enregistrer sous un doc word en txt mais COM c'est lourd et ça marche que sous windows :/

Reply

Marsh Posté le 11-09-2007 à 14:45:24   

Reply

Marsh Posté le 11-09-2007 à 15:03:44    

bah a priori les .doc sont des fichiers de type propriétaire. C'est à a dire que leur codage n'est pas libre, et il n'a pas été dévoilé par microsoft.
Même quand tu ouvres des .doc avec Ooo ya des erreurs d'interprétations.
 
Autrement dit, tu pourras toujours aller lire dans un .doc, mais pour interpréter le codage du document bonne chance...

Reply

Marsh Posté le 11-09-2007 à 15:06:48    

je veux pas interpréter le fichier doc, juste récupérer son texte (comme le fait antiword) via php (et sans passer par COM).

Reply

Marsh Posté le 11-09-2007 à 15:10:13    

ouais j'ai bien compris mais pour récupérer le texte, t'es obligé d'interpréter la manière dont il est codé...
Si chez microsoft la lettre "e" elle est codée par "#1453.ertf;" il faut le savoir pour pouvoir récupérer la lettre "e"...

Reply

Marsh Posté le 11-09-2007 à 15:14:53    

En fait ske t'as qu'à faire pour t'aider, c'est écrire un ptit script php qui prend un fichier .doc et qui te donne à l'écran son contenu, codé.
Comme ça tu vois à quoi ça ressemble et si ya moyen pour en récupérer le texte...

Reply

Marsh Posté le 11-09-2007 à 15:25:33    

en ouvrant le fichier dans un éditeur de texte, j'ai le même résultat. Pas besoin de faire un script php pour ça :/ Pour info, le texte n'est pas codé. Il est "en clair" sauf qu'il est noyé dans tout un tas de caractères à la con qui servent à la mise en forme du doc.
J'ai pu voir qu'il existait en gpl des programmes qui faisaient ce que je demande. Sauf que j'arrive pas à les faire fonctionner avec la commande system() de php :( Je me demandais donc si qq'un pouvait pas m'aider à les faire fonctionner ou me proposer une lib en php déjà toute faite.

Reply

Marsh Posté le 11-09-2007 à 15:33:31    

perso , j'utilise antiword, ca fonctionne pas mal  ( on va dire dans 90% des cas )

 

tu as quoi comme message d'erreur ?


Message édité par flo850 le 11-09-2007 à 15:33:44
Reply

Marsh Posté le 11-09-2007 à 15:48:40    

avec php, j'ai quedalle :(
Si j'utilise antiword en ligne de commande, faut que je sois dans le répertoire c:\antiword pour que ça marche et pareil pour le doc à convertir sinon, il me dit qu'il trouve pas ses fichiers 8859-1, utf-8 (ses tables de charset). Je pense que c'est dû au fait que la variable d'environnement HOME ou PATH sous Windows n'est pas positionnée avec le path d'antiword.
 
J'ai mis ça comme code dans mon script php :

Code :
  1. $Dir = $_SERVER['DOCUMENT_ROOT']."/Doc2Txt/";
  2. $Filename = "Test.doc";
  3. system("c:/antiword \"$Dir$Filename\" > \"".$Dir."Test.txt\"" );


 
ça marche pas :/ J'ai un fichier créé Test.txt vide...
 
Sinon, j'ai trouvé ça : http://www.mousewhisperer.co.uk/php_page.html  
Ca marche pas trop mal mais ça fait sauter tous les retours à la ligne ainsi que les caractères accentués (à cause de la regexp) et ça garde tout un tas de caractères bizarres en fin de fichier.


Message édité par rufo le 11-09-2007 à 15:52:35
Reply

Marsh Posté le 11-09-2007 à 15:55:57    

j'utilise ca comme commande :
"/usr/local/bin/antiword -m UTF-8.txt ".$this->fileName." > ".$out".txt";

 

et voic le contenu de mon fichier UTF-8.txt

Code :
  1. [root@portail modules]# more /root/antiword-0.37/Resources/UTF-8.txt
  2. # UTF-8 to Unicode
  3. # This file is a dummy.
  4. # The conversion is done algorithmicly, not by a table look-up.
 

EDIT : sinon, sous windows, le plus simple est de le faire dans un langage qui gere les ifilter ( comme C# )
ca t'extrait facilement le texte d'un paquet de format ( word, excle, ppt, pdf, ... )


Message édité par flo850 le 11-09-2007 à 15:56:49
Reply

Marsh Posté le 11-09-2007 à 16:08:05    

J'utilise l'option -t pour antiword.
Bon, j'ai progressé. Pour que mon script marche, faut que je le mette dans le répertoire d'antiword. Par contre, je peux mettre mes docs à convertir dans un autre répertoire (et qui peut contenir des espaces dans son nom).
 
Je fais :

Code :
  1. exec("antiword -t \"".$Dir.$Filename."\" > \"".$Dir."Test.txt\"" );


 
Et je ne peux pas utiliser du C# sous Linux...


Message édité par rufo le 11-09-2007 à 16:09:29
Reply

Marsh Posté le 11-09-2007 à 16:08:05   

Reply

Marsh Posté le 08-02-2008 à 16:35:24    

bonjour je souhaiterais moi avoir dans une variable php les propriété de word (mots clés , catégorie, ...)je ne trouve rien sur aucun forum si vous avez une solution merci

Reply

Marsh Posté le 12-02-2008 à 10:23:08    

Si ton serveur est sous Windows, tu peux utiliser COM, mais attention, c'est lourd!


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 12-02-2008 à 15:18:39    

oui mais comment fonction le COM car je n'est rien compris aux doc
comment il s utilise

Reply

Marsh Posté le 13-02-2008 à 14:37:02    

http://www.phpbuilder.com/columns/yunus20031124.php3
 
tu ouvres en fait un objet "word.application", après, si tu sais faire du vba, tu sais faire du COM. faut juste remplacer le . par -> ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed