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

4
我正在开发一款软件,应该能够自动将Word文档转换为PDF格式。有没有支持Java的库可以实现这个功能?它可以是免费的或商业的,都可以。谢谢。
6个回答

1

docx2pdf 是一个命令行工具和 Python 库,可在 macOS 和 Windows 上实现此功能。从 Java 中,您应该能够使用命令行调用该工具。在内部,这个 Python 库通过命令行调用 AppleScript 以使其在 macOS 上运行。

https://github.com/AlJohri/docx2pdf/

这种方法的好处是它使用了Word自己的API来创建像素完美的转换。

免责声明:我编写了这个工具。


注意:这个库需要安装 Word 才能使脚本正常工作。 - Herz3h

0

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


0

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


3
POI不支持PDF格式。我可以让你以编程方式读取Office文档,然后如果需要的话,将其导入到PDF编写器中。 - Nicholas

0

有几个开源解决方案可用,但没有一个完全保留源文档的格式。

看看Muhimbi PDF 转换服务。它以可扩展和强大的 Windows 服务的形式安装在您的环境中,并专门为从基于服务器的应用程序(如 Java 和 ASP.NET)中使用而设计。

它附带了友好的基于 Web 服务的接口,允许它从大多数现代环境(如 Java 和 .NET)中使用。它支持所有常见的以及一些不太常见的文件格式。还包括水印和 PDF 安全功能。免责声明,我曾在这个产品上工作,因此通常的免责声明适用。话虽如此,它的工作效果非常好。


0

@BoffinbraiN,POI对于将Office文档转换为PDF并没有太大帮助。

Apache FOP可以用来完成这个任务,但如果你想使用FOP,首先需要将Office文档转换为XSL-FO。

在这里,docx4j可以提供帮助,因为它生成XSL-FO,并使用FOP 1.0创建PDF。

假设有OutputStream os和已加载的WordprocessingMLPackage wordMLPackage:

PdfConversion c = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);
c.output(os);

请参考docx4j示例CreatePdf.java。

0
你可以与opensagres-xdocreport配合使用apache-poi

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接