DOCXファイルをMSWordからPDFに変換するための「安定した」方法を探しています。今からリスナーとしてインストールされているOpenOfficeを使用していますが、ハングすることがよくあります。問題は、多くのユーザーがSXW、DOCXファイルを同時にPDFに変換したいという状況があることです。他の可能性はありますか?このサイトの例を試してみました: https://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-Java/ しかし、出力結果は良くありません(変換されたドキュメントにはエラーとレイアウトがありますかなり変更されています)。
これは、docx4jで変換されたドキュメントですが、ドキュメント内にいくつかの例外テキストがあります。また、右上隅のテキストが欠落しています。
これはPDF docxからpdfへのコンバーターとしてOpenOfficeで作成されました。一部のテキストに「右上隅」がありません
Javaでdocxをpdfに変換する他のオプションはありますか?
変換を行う方法はたくさんあります。使用される方法の1つは、POIとDOCX4jを使用することです。
InputStream is = new FileInputStream(new File("your Docx PAth"));
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
.load(is);
List sections = wordMLPackage.getDocumentModel().getSections();
for (int i = 0; i < sections.size(); i++) {
wordMLPackage.getDocumentModel().getSections().get(i)
.getPageDimensions();
}
Mapper fontMapper = new IdentityPlusMapper();
PhysicalFont font = PhysicalFonts.getPhysicalFonts().get(
"Comic Sans MS");//set your desired font
fontMapper.getFontMappings().put("Algerian", font);
wordMLPackage.setFontMapper(fontMapper);
PdfSettings pdfSettings = new PdfSettings();
org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
wordMLPackage);
//To turn off logger
List<Logger> loggers = Collections.<Logger> list(LogManager
.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for (Logger logger : loggers) {
logger.setLevel(Level.OFF);
}
OutputStream out = new FileOutputStream(new File("Your OutPut PDF path"));
conversion.output(out, pdfSettings);
System.out.println("DONE!!");
これは完璧に機能し、複数のDOCXファイルで試してみました。