Domanda

Ho un progetto web in cui devo importare testo e immagini da un documento fornito dall'utente e uno dei formati possibili è Microsoft Office 2007. È inoltre necessario generare documenti in questo formato.

Il server esegue CentOS 5.2 e ha installato PHP / Perl / Python. Posso eseguire binari locali e script di shell, se necessario. Usiamo Apache 2.2 ma passeremo a Nginx una volta che sarà attivo.

Quali sono le mie opzioni? Qualcuno ha avuto esperienza con questo?

È stato utile?

Soluzione

I formati di file di Office 2007 sono aperti e ben documentati . In parole povere, tutti i nuovi formati di file che terminano in " x " sono documenti XML compressi tramite zip. Ad esempio:

  

Per aprire un file XML di Word 2007 Creare un   cartella temporanea in cui archiviare il file   file e sue parti.

     

Salva un documento di Word 2007, contenente   testo, immagini e altri elementi, come   un file .docx.

     

Aggiungi un'estensione .zip alla fine di   nome del file.

     

Fai doppio clic sul file. Si aprirà   l'applicazione ZIP. Puoi vedere il   parti che compongono il file.

     

Estrai le parti nella cartella che   hai creato in precedenza.

Gli altri formati di file sono approssimativamente simili. Non conosco ancora nessuna libreria open source per interagire con loro - ma a seconda delle tue esatte esigenze, non sembra troppo difficile leggere e scrivere documenti semplici. Certamente dovrebbe essere molto più semplice rispetto ai formati precedenti.

Se devi leggere i formati precedenti, OpenOffice ha un'API e può leggere e scrivere documenti Office 2003 e precedenti con più o meno successo.

Altri suggerimenti

Il modulo docx python può generare file docx Microsoft Office formattati da Python puro. Immediatamente fa intestazioni, paragrafi, tabelle e punti elenco, ma il modulo makeelement () può essere esteso per fare elementi arbitrari come le immagini.

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')

Ho usato con successo il SDK in formato OpenXML in un progetto per modificare un foglio di calcolo Excel tramite codice. Ciò richiederebbe .NET e non sono sicuro di come funzionerebbe sotto Mono.

Probabilmente puoi controllare il codice per Sphider . Sono documenti e pdf, quindi sono sicuro che possono leggerli. Potrebbe anche portarti nella giusta direzione per altri formati di Office.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top