Как распечатать .doc и .docx в Java - PullRequest
2 голосов
/ 02 марта 2011

Я только что узнал, как выполнять некоторые базовые манипуляции .doc и .docx с использованием Apache-POI. И теперь я хочу напечатать эти документы из моего приложения. Любая идея, как я могу это сделать? Вот как я создаю документы:

public void newWordDoc(String filename) throws FileNotFoundException, IOException {
    XWPFDocument document = new XWPFDocument();
    XWPFParagraph tmpParagraph = document.createParagraph();
    XWPFRun tmpRun = tmpParagraph.createRun();
    tmpRun.setText("Writing to a .doc");
    tmpRun.setFontSize(18);
    document.write(new FileOutputStream(new File(filename + ".doc")));
}

public void newWordDocX(String filename) throws FileNotFoundException, IOException {
    XWPFDocument document = new XWPFDocument();
    XWPFParagraph tmpParagraph = document.createParagraph();
    XWPFRun tmpRun = tmpParagraph.createRun();
    tmpRun.setText("Writing to a .docx");
    tmpRun.setFontSize(18);
    document.write(new FileOutputStream(new File(filename + ".docx")));
}

Полагаю, теперь мне нужно создать метод, который снова читает их и печатает, верно? Какой самый простой и быстрый способ напечатать их на моем принтере? Нужно ли использовать API печати Java или есть какой-нибудь бесплатный API, который может упростить задачу? Также я хотел бы упомянуть, что я ехал в пост где-то еще, что Java не может сделать такую ​​вещь, как печать документов Word, и что мы должны сначала преобразовать их в PDF. Это правда? Я надеюсь, что нет: (

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Apache POI предназначен только для чтения объектов, НЕ для рендеринга, ни на экране, ни на принтере.

Вам определенно придется написать программу, которая может отображать документы в формате doc и docx. Microsoft Word приходит на ум, но OpenOffice также должен выполнять более или менее приемлемую работу, если вам повезет:).

Для Word: используйте Com4J, который прекрасно работает.

Для OpenOffice: используйте их собственный Java API.

0 голосов
/ 03 марта 2011

Полагаю, теперь мне нужно создать какой-нибудь метод, который снова их читает и печатает, верно?

верно.если только их содержимое не находится в памяти.

Какой самый простой и быстрый способ напечатать их на моем принтере?Нужно ли использовать API печати Java или есть какой-нибудь бесплатный API, который может упростить задачу?

Вам следует разделить проблемы.Во-первых, вы должны беспокоиться о чтении.Ответственность за печать будет возложена на другой объект:)

О выпуске transform-to-pdf.Я предполагаю, что это не требование.Насколько вы можете читать содержимое, вы можете делать с ним практически все, что захотите:)

...