java 可以将Word文档doc(x)转换为PDF的库

fiei3ece  于 2023-05-05  发布在  Java
关注(0)|答案(6)|浏览(209)

我正在开发一个软件,它应该能够自动将Word文档转换为PDF。有没有支持Java的库可以实现这一点?它可以是免费的,也可以是商业的,没关系。
谢谢

kq0g1dla

kq0g1dla1#

docx2pdf是一个命令行工具和python库,可以在macOS和Windows上实现这一点。在Java中,您应该能够使用命令行调用该工具。在内部,这个python库从命令行调用AppleScript,以便让它在macOS上工作。
https://github.com/AlJohri/docx2pdf/
这种方法的好处是它使用Word自己的API来创建像素完美转换。
免责声明:我写了这个工具。

8wtpewkr

8wtpewkr2#

我没有用过,但你可以试试JODConverter

yzckvree

yzckvree3#

StackOverflow上的大多数人推荐Apache POI,它可以将大多数Microsoft Office格式转换为PDF,反之亦然。这是开源的

bvhaajcl

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。

izj3ouym

izj3ouym5#

有几个开源解决方案可用,但没有一个完全保留源文档的格式。
给予Muhimbi PDF Converter Services。它作为一个可扩展的、健壮的Windows服务安装在您的环境中,并且专门设计用于基于服务器的应用程序,如Java和ASP.NET。
它带有一个friendly web services based interface,允许它在大多数现代环境中使用,如Java和. NET。它支持所有常见的以及一些不太常见的文件格式。Watermarking和PDF安全也包括在内。
免责声明,我曾在这个产品,所以通常的声明适用。话虽如此,效果很好。

o4tp2gmn

o4tp2gmn6#

您可以将apache-poiopensagres-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

相关问题