2010-06-30 4 views
2

Un client me demande de créer un module pour son webapp en cours d'exécution qui peut charger des fichiers docx et extraire des données en fonction des titres trouvés dans le document. Je sais que docx est juste un fichier zip et la plupart de ce dont j'ai besoin se trouve dans word/document.xml, bien que je n'aime pas analyser les listes/styles/images/tables et tout ce qui doit être traduit OOXML en HTML.PHP OOXML Bibliothèques?

Existe-t-il des bibliothèques PHP pour ce format? J'ai besoin d'une certaine flexibilité cependant: juste un convertisseur OOXML vers HTML ne va pas le couper, j'ai besoin de décomposer le document en parties.

Répondre

4

Si c'est purement docx, vous pouvez essayer phpdocx ... ne sait pas s'il lit ou écrit seulement. PHPWord n'a pas encore lu, seulement écrit (même si je travaille dessus). Si vous avez seulement besoin des informations de propriétés, alors vous trouverez tout cela dans le fichier /docProps/core.xml dans le fichier zip (et éventuellement dans /docProps/app.xml selon les propriétés dont vous avez besoin), Ainsi, vous pouvez ignorer la plupart des fichiers contenant du texte, du style, des images, etc. Pour vérifier les noms de fichiers, [Content_Types] .xml contient les noms de fichiers core et application comme application/vnd.openxmlformats-officedocument.spreadsheetml. sheet.main + xml et application/vnd.openxmlformats-officedocument.extended-propriétés + xml

EDIT: Si vous avez besoin rubriques, alors vous aurez besoin pour analyser le document, pas seulement les propriétés. Cela signifie identifier les styles de titre et analyser le texte pour les entités avec ces styles.

+0

J'ai besoin de tout style approprié, juste besoin de décomposer le document en fonction des titres trouvés. J'ai seulement besoin de lire, d'écrire ... et phpdocx n'écrit que. –

+0

Réponse à edit: Je sais que je vais devoir analyser le document;) Je cherche juste des bibliothèques qui me faciliteront la tâche. De préférence, je veux transmettre des PARTIES du document qui sont traduites en contenu html. –

+0

Mis à part les deux que j'ai mentionnés, je ne connais pas d'autres bibliothèques PHP qui fonctionnent avec des fichiers au format docx. Si vous devez le développer vous-même, je peux vous indiquer la documentation sur le format: si vous trouvez des bibliothèques de lecteurs, merci de les partager. Il existe toujours l'option de secours d'un serveur Windows exécutant Word, et utilisant PHP COM –

2

Codeplex a un certain nombre de bibliothèques que peuvent travailler avec des documents MS Office:

À l'exception de PHPExcel, je ne sais pas comment ces projets arrivent à maturité sont. S'il n'y a rien pour vous aider, vous pouvez toujours utiliser DOM.

2

OpenTBS peut lire et modifier les documents DOCX (et autres fichiers OpenXML) en PHP en utilisant la technique des templates. Aucun fichier temporaire nécessaire, aucune ligne de commande, tout en PHP.

Mais si vous avez seulement besoin de lire une partie du fichier DOCX, alors vous pouvez utiliser la classe TbsZip. Il peut lire les archives zip (comme tout fichier OpenXML, DOCX est une archive zip contenant principalement des fichiers XML).

Dans les fichiers DOCX, les sous-fichiers en-têtes et pieds de page sont généralement "/word/header1.xml" et "/word/footer1.xml". Ils existent uniquement si l'en-tête/pied de page est défini. Il peut également y avoir un couple optionnel de sous-fichiers XML pour les pages impaires (en général "/word/header2.xml" et "/word/footer2.xml"). Et un couple facultatif de sous-fichiers pour la première page (habituellement "/word/header3.xml" et "/word/footer3.xml").

http://www.tinybutstrong.com/opentbs.php

0

Vous pouvez également utiliser ces bibliothèques https://poi.apache.org/ et les connecter via php pont java http://php-java-bridge.sourceforge.net/pjb/ - installer un serveur tomcat - lieu pont java dans le dossier webapps et ajoutez les bibliothèques poi - alors vous pourriez utilisez ces bibliothèques pour extraire les styles de titre. L'API est bien documentée et vous avez beaucoup d'options. Une bibliothèque PHP qui ferait cela serait le mieux, mais vous pouvez essayer cette approche si cela fonctionne pour vous ou quelqu'un d'autre

Questions connexes