2009-12-07 12 views

risposta

0

Provate questo: http://www.dancrintea.ro/doc-to-pdf/

Oltre a sostituire le stringhe nei file MS Word può anche: - leggere/scrivere file Excel utilizzando API semplificata come: getCell (x, y) e SetCell (x, y, string) - nascondere fogli Excel (calcoli secondari per esempio) - sostituire le immagini in formato DOC, i file ODT e SXW - e convertire:

doc -> PDF, HTML, TXT, RTF xls -> pdf, html , csv ppt -> pdf, swf

2

Vorrei suggerire la libreria Apache POI:

http://poi.apache.org/

Guardando più - sembra che non è stato tenuto aggiornato - Boo! Potrebbe essere abbastanza completo ora per fare ciò che ti serve comunque.

0

Vorrei dare un'occhiata al progetto POI di Apache. Questo è quello che ho usato per interagire con i documenti MS in passato.

http://poi.apache.org/

5

Mentre non v'è il supporto di MS Word in Apache POI, non è molto buona. Il caricamento e il salvataggio di qualsiasi file con una formattazione diversa da quella di base probabilmente altereranno il layout. Dovresti provarlo, forse funziona per te.

Ci sono anche un certo numero di librerie commerciali, ma non so se nessuna di esse sia migliore.

La "soluzione" di merda mi sono dovuto accontentare di quando si lavora su un requisito analogo di recente è stato utilizzando il formato DOCX, apertura del contenitore ZIP, la lettura del documento XML, e quindi sostituendo le mie marcatori con i testi giusti. Questo funziona per sostituire semplici bit di testo senza paragrafi, ecc.

private static final String WORD_TEMPLATE_PATH = "word/word_template.docx"; 
private static final String DOCUMENT_XML = "word/document.xml"; 

/*....*/ 

final Resource templateFile = new ClassPathResource(WORD_TEMPLATE_PATH); 

final ZipInputStream zipIn = new ZipInputStream(templateFile.getInputStream()); 
final ZipOutputStream zipOut = new ZipOutputStream(output); 

ZipEntry inEntry; 
while ((inEntry = zipIn.getNextEntry()) != null) { 
    final ZipEntry outEntry = new ZipEntry(inEntry.getName()); 
    zipOut.putNextEntry(outEntry); 

    if (inEntry.getName().equals(DOCUMENT_XML)) { 
     final String contentIn = IOUtils.toString(zipIn, UTF_8); 
     final String outContent = this.processContent(new StringReader(contentIn)); 
     IOUtils.write(outContent, zipOut, UTF_8); 
    } else { 
     IOUtils.copy(zipIn, zipOut); 
    } 

    zipOut.closeEntry(); 
} 

zipIn.close(); 
zipOut.finish(); 

Non ne sono orgoglioso, ma funziona.

+1

Soluzione creativa, anche se hackish! Ha funzionato perfettamente per me Tuttavia, devi stare attento con il modo in cui digiti i tuoi marcatori nel documento. A volte, Word si suddivideva per parola chiave marcatore in due tag XML, ad esempio: ' ciao mondo! '. Sembra funzionare bene finché si digita l'intera parola marcatore senza cambiare la posizione del cursore nel mezzo. – Michael

Problemi correlati