Question

J'ai un projet Web dans lequel je dois importer du texte et des images à partir d'un document fourni par l'utilisateur. L'un des formats possibles est Microsoft Office 2007. Il est également nécessaire de générer des documents dans ce format.

Le serveur exécute CentOS 5.2 et est doté de PHP / Perl / Python. Je peux exécuter des fichiers binaires locaux et des scripts shell si je le dois. Nous utilisons Apache 2.2, mais nous basculerons vers Nginx une fois qu'il sera disponible.

Quelles sont mes options? Quelqu'un en a-t-il eu l'expérience?

Était-ce utile?

La solution

Les formats de fichier Office 2007 sont ouverts et bien documentés . Grosso modo, tous les nouveaux formats de fichier se terminant par "x". sont des documents XML compressés zip. Par exemple:

  

Pour ouvrir un fichier XML Word 2007 Créez un   dossier temporaire dans lequel stocker le   fichier et ses parties.

     

Enregistrez un document Word 2007 contenant   texte, images et autres éléments, comme   un fichier .docx.

     

Ajoutez une extension .zip à la fin de la   nom du fichier.

     

Double-cliquez sur le fichier. Il ouvrira dans   l'application ZIP. Tu peux voir le   parties qui composent le fichier.

     

Extrayez les pièces dans le dossier qui   vous avez créé précédemment.

Les autres formats de fichiers sont à peu près similaires. Je ne connais pas encore de bibliothèques open source permettant d'interagir avec elles - mais, en fonction de vos exigences, il ne semble pas trop difficile de lire et d'écrire des documents simples. Cela devrait certainement être beaucoup plus facile qu'avec les anciens formats.

Si vous devez lire les anciens formats, OpenOffice dispose d'une API et peut lire et écrire des documents Office 2003 et plus anciens avec plus ou moins de succès.

Autres conseils

Le module docx python peut générer des fichiers docx Microsoft Office formatés à partir de Python pur. Hors de la boîte, il fait des en-têtes, des paragraphes, des tableaux et des puces, mais le module makeelement () peut être étendu pour faire des éléments arbitraires comme des images.

from docx import *
document = newdocument()

# This location is where most document content lives 
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0]

# Append two headings
docbody.append(heading('Heading',1)  )   
docbody.append(heading('Subheading',2))
docbody.append(paragraph('Some text')

J'ai utilisé avec succès le SDK au format OpenXML dans un projet modifier un tableur Excel via un code. Cela nécessiterait .NET et je ne sais pas si cela fonctionnerait bien avec Mono.

Vous pouvez probablement vérifier le code pour Sphider . Ils docs et pdfs, donc je suis sûr qu’ils peuvent les lire. Cela pourrait également vous guider dans la bonne direction pour d’autres formats Office.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top