Potrzebujemy biblioteki Java, aby zastąpić ciągi w plikach MS Word.W języku Java: zastąp ciąg znaków w pliku MS Word
Czy ktoś może zasugerować?
Potrzebujemy biblioteki Java, aby zastąpić ciągi w plikach MS Word.W języku Java: zastąp ciąg znaków w pliku MS Word
Czy ktoś może zasugerować?
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
Proponuję biblioteki Apache POI:
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.
Chciałbym rzucić okiem na projekt Apache POI. To jest to, czego używałem do interakcji z dokumentami MS w przeszłości.
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.
Dzięki wszystkim. Spróbuję uzyskać http://www.dancrintea.ro/doc-to-pdf/
, ponieważ muszę przekonwertować klasyczny plik DOC (binarny), a nie DOCX (format zip).
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