我正在开发一个软件,它应该能够自动将Word文档转换为PDF。有没有支持Java的库可以实现这一点?它可以是免费的,也可以是商业的,没关系。谢谢
kq0g1dla1#
docx2pdf是一个命令行工具和python库,可以在macOS和Windows上实现这一点。在Java中,您应该能够使用命令行调用该工具。在内部,这个python库从命令行调用AppleScript,以便让它在macOS上工作。https://github.com/AlJohri/docx2pdf/这种方法的好处是它使用Word自己的API来创建像素完美转换。免责声明:我写了这个工具。
docx2pdf
8wtpewkr2#
我没有用过,但你可以试试JODConverter
yzckvree3#
StackOverflow上的大多数人推荐Apache POI,它可以将大多数Microsoft Office格式转换为PDF,反之亦然。这是开源的
bvhaajcl4#
@BoffinbraiN,POI并不能帮助您将Office文档转换为PDF。Apache FOP可用于完成此操作,但如果要使用FOP,则首先需要将Office文档转换为XSL-FO。在这里,docx 4j可以提供帮助,因为它生成XSL-FO,并使用FOP 1.0创建PDF。假设OutputStream os和加载的WordprocessingMLPackage wordMLPackage:
PdfConversion c = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage); c.output(os);
进一步参见docx 4j示例CreatePdf.java。
izj3ouym5#
有几个开源解决方案可用,但没有一个完全保留源文档的格式。给予Muhimbi PDF Converter Services。它作为一个可扩展的、健壮的Windows服务安装在您的环境中,并且专门设计用于基于服务器的应用程序,如Java和ASP.NET。它带有一个friendly web services based interface,允许它在大多数现代环境中使用,如Java和. NET。它支持所有常见的以及一些不太常见的文件格式。Watermarking和PDF安全也包括在内。免责声明,我曾在这个产品,所以通常的声明适用。话虽如此,效果很好。
o4tp2gmn6#
您可以将apache-poi与opensagres-xdocreport一起使用。
pom.xml
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.poi.xwpf.converter.pdf</artifactId> <version>2.0.4</version> </dependency> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.xdocreport.document</artifactId> <version>2.0.4</version> </dependency>
代码示例- Java
try (XWPFDocument mailMergedXwpfDocument = PoiMailMerge.perform(templatePath, bodyMap); ByteArrayOutputStream out = new ByteArrayOutputStream()) { if (null == toFormat || "".equals(toFormat)) { mailMergedXwpfDocument.write(out); } else if ("pdf".equalsIgnoreCase(toFormat)){ try { PdfOptions pdfOptions = PdfOptions.create(); // HERE convert docx as xwpf document into PDF PdfConverter.getInstance().convert(mailMergedXwpfDocument, out, pdfOptions); resultFileName = FilenameUtils.removeExtension(filename) + ".pdf"; } catch (IOException e) { // ... } catch (XWPFConverterException e) { // ... } } // here is the PDF as byte array byte[] bytes = out.toByteArray();
完整代码为Azure函数
我将把完整的工作代码放在github https://github.com/donniexyz/ms-donniexyz-poi-azure-function上
6条答案
按热度按时间kq0g1dla1#
docx2pdf
是一个命令行工具和python库,可以在macOS和Windows上实现这一点。在Java中,您应该能够使用命令行调用该工具。在内部,这个python库从命令行调用AppleScript,以便让它在macOS上工作。https://github.com/AlJohri/docx2pdf/
这种方法的好处是它使用Word自己的API来创建像素完美转换。
免责声明:我写了这个工具。
8wtpewkr2#
我没有用过,但你可以试试JODConverter
yzckvree3#
StackOverflow上的大多数人推荐Apache POI,它可以将大多数Microsoft Office格式转换为PDF,反之亦然。这是开源的
bvhaajcl4#
@BoffinbraiN,POI并不能帮助您将Office文档转换为PDF。
Apache FOP可用于完成此操作,但如果要使用FOP,则首先需要将Office文档转换为XSL-FO。
在这里,docx 4j可以提供帮助,因为它生成XSL-FO,并使用FOP 1.0创建PDF。
假设OutputStream os和加载的WordprocessingMLPackage wordMLPackage:
进一步参见docx 4j示例CreatePdf.java。
izj3ouym5#
有几个开源解决方案可用,但没有一个完全保留源文档的格式。
给予Muhimbi PDF Converter Services。它作为一个可扩展的、健壮的Windows服务安装在您的环境中,并且专门设计用于基于服务器的应用程序,如Java和ASP.NET。
它带有一个friendly web services based interface,允许它在大多数现代环境中使用,如Java和. NET。它支持所有常见的以及一些不太常见的文件格式。Watermarking和PDF安全也包括在内。
免责声明,我曾在这个产品,所以通常的声明适用。话虽如此,效果很好。
o4tp2gmn6#
您可以将apache-poi与opensagres-xdocreport一起使用。
pom.xml
代码示例- Java
完整代码为Azure函数
我将把完整的工作代码放在github https://github.com/donniexyz/ms-donniexyz-poi-azure-function上