我正在编写将 HTML 转换为 PDF 的代码,其中包括以下 2 个依赖项:
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-core</artifactId>
<version>9.1.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf-itext5</artifactId>
<version>9.1.6</version>
<scope>compile</scope>
</dependency>
我已经可以使用了。我能想到的唯一方法是使用 ITextRenderer。不幸的是,看起来这是 iText 5,需要 AGPL 许可证,或者支付一大笔许可费。
基于此许可证,我觉得很清楚:https://github.com/flyingsaucerproject/flyingsaucer/blob/master/LICENSE
这是正确的吗?
有没有其他不需要 iText(或许可软件)的方法来做到这一点?
我尝试过 Apache PDFBox,但它的级别太低,我不确定它是否可行。我知道这并不容易。 HTML -> PDF 绝对不可能。
OpenPDF 看起来有点弱。
有什么想法/建议吗?
这是我们项目(启动)的一小部分,因此许可软件不是首选。
谢谢。
编辑:正如评论中指出的,
org.xhtmlrenderer:flying-saucer-pdf
现在使用OpenPDF(2024年)。这取代了 org.xhtmlrenderer:flying-saucer-pdf-openpdf
。
截至今天(2018 年),Flying Saucer 提供了三种实现,其中之一是 OpenPDF。
引用他们的自述文件(强调我的):
可用的工件有:
- org.xhtmlrenderer:flying-saucer-core - 核心库和 Java2D 渲染
- org.xhtmlrenderer:flying-saucer-pdf - 使用 iText 2.x 的 PDF 输出
- org.xhtmlrenderer:flying-saucer-pdf-itext5 - 使用 iText 5.x 的 PDF 输出
- org.xhtmlrenderer:flying-saucer-pdf-openpdf - 使用 OpenPDF 输出 PDF
- org.xhtmlrenderer:flying-saucer-swt - SWT 输出
- org.xhtmlrenderer:flying-saucer-log4j - log4j 的日志插件
iText 2.x 有未修复的安全错误。新项目应该避免它。
OpenPDF 和 Flying Saucer 本身均获得 LGPL 许可。因此,您现在可以使用
flying-saucer-pdf-openpdf
来避免 iText 2 的安全问题和 iText 5 的许可问题。