2009-12-07 20 views

Odpowiedz

0

Spróbuj tego: http://www.dancrintea.ro/doc-to-pdf/

Oprócz wymiany strun w plikach tekstu ms może również: - odczyt/zapis plików Excel za pomocą uproszczonego interfejsu API jak: getCell (x, y) i setCell (x, y, string) - ukrywanie arkuszy Excel (obliczenia wtórnych na przykład) - zastąpić obrazy w dOC, ODT i SXW pliki - i konwersji:

doc -> pdf, html, txt, rtf xls -> pdf, html , csv ppt -> pdf, swf

2

Proponuję biblioteki Apache POI:

http://poi.apache.org/

Patrząc więcej - wygląda na to, że nie został uaktualniane - Boo! Może być teraz wystarczająco kompletny, aby zrobić to, czego potrzebujesz.

0

Chciałbym rzucić okiem na projekt Apache POI. To jest to, czego używałem do interakcji z dokumentami MS w przeszłości.

http://poi.apache.org/

5

Chociaż jest wsparcie MS Word w Apache POI, to nie jest bardzo dobra. Ładowanie, a następnie zapisywanie dowolnego pliku o innym niż najbardziej podstawowym formatowaniu najprawdopodobniej przerwie układ. Powinieneś to wypróbować, może to zadziała dla ciebie.

Istnieje wiele komercyjnych bibliotek, ale nie wiem, czy którekolwiek z nich są lepsze.

Brzydkim "rozwiązaniem", z którym musiałem się zadowolić podczas pracy nad podobnym wymogiem, było ostatnio użycie formatu DOCX, otwarcie pojemnika ZIP, odczytanie dokumentu XML, a następnie zastąpienie moich znaczników odpowiednimi tekstami. To działa w przypadku zastępowania prostych fragmentów tekstu bez akapitów itp.

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(); 

Nie jestem z tego dumny, ale działa.

+1

Kreatywne, aczkolwiek hackowe, rozwiązanie! Idealne dla mnie. Należy jednak zachować ostrożność w sposobie pisania znaczników w dokumencie. Czasami program Word dzielił słowa kluczowe znacznika na dwa znaczniki XML, takie jak: ' hello świat! '. Wydaje się działać poprawnie, dopóki wpisujesz całe słowo znacznika bez zmiany położenia kursora na środku. – Michael

Powiązane problemy