使用Java将docx文件转换为PDF

我正在寻找一些“稳定”的方法将DOCX文件从MS WORD转换为PDF。 从现在开始我已经将OpenOffice作为监听器使用,但它经常挂起。 问题是我们遇到许多用户想要同时将SXW,DOCX文件转换为PDF的情况。 还有其他可能吗? 我尝试了这个网站的例子: https : //angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-java/但输出结果不好(转换后的文件)有错误和布局相当修改)。

这是“源”docx文档: 在此处输入图像描述

这里是用docx4j转换的文档,文档中有一些exception文本。 此外,右上角的文字也丢失了。

在此处输入图像描述

这个是使用OpenOffice创建的PDF,从docx转换为pdf。 有些文字缺少“右上角”

在此处输入图像描述

是否有其他选项将docx转换为PDF格式的pdf?

有很多方法可以进行转换使用的方法之一是使用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 loggers = Collections. 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文件。