使用 Java 创建 PDF [重复]

Posted

技术标签:

【中文标题】使用 Java 创建 PDF [重复]【英文标题】:Create PDF with Java [duplicate] 【发布时间】:2011-11-13 09:03:55 【问题描述】:

可能重复:PDF Generation Library for Java

我正在为一家本地会计公司制定发票计划。 用Java创建PDF文件的好方法是什么?有什么好的图书馆吗? 我对 PDF 导出完全陌生(使用任何语言)。

【问题讨论】:

List of html to PDF converters 可能重复,Converting HTML Files to PDF 中提到。 【参考方案1】:

我更喜欢将我的数据输出到 XML(使用 Castor、XStream 或 JAXB),然后使用 XSLT 样式表将其转换为 XSL-FO,并使用 Apache FOP 将其呈现为 PDF。迄今为止为 10 页的报告和 400 页的手册工作。我发现这比在代码中使用 iText 生成 PDF 更灵活、更具风格。

【讨论】:

将 400 页的手册转换为 PDF 的速度有多快?我用过 iText,但是对于我们的一些大型文档来说它太慢了。 抱歉,我是在 2005-2007 年这样做的,但是 IIRC 对于一个简单的 10 页报告(带有缓存样式表)来说是亚秒级的,对于一个更复杂的 400 页报告来说是几十秒.当您需要使用不同的数据生成相同/相似的报告时,请缓存已解析的 XSL 样式表——这会带来很大的提升。 我还可以推荐 Velocity 用于将数据输出到 xml。 您也可以使用 freemarker 输出 xml/html 并将字符串泵入 iText。这很像你的做法,但是 freemarker 是一个非常好的模板引擎。【参考方案2】:

以下是一些使用 Java 创建 PDF 的库:

    iText Apache PDFBox BFO

过去,我曾使用 iText 生成 PDF,但有点痛苦。

或者您可以尝试使用 FOP:FOP 是用 Java 编写的 XSL 格式化程序。它与 XSLT 转换引擎结合使用,将 XML 文档格式化为 PDF。

【讨论】:

在 iText 网站上,我读到他们的 AGPL 许可证要求您“分发所有源代码,包括您自己的产品,包括如果它是基于 Web 的应用程序”等等。对于任何商业项目来说似乎是完全不能接受的。 @mvmn:你可以购买商业许可证。 或者您可以使用 iText 1.3,它是 GNU Affero 通用公共许可证 v3 @mvmn 你的链接坏了:(【参考方案3】:

另一种选择是 JasperReports:JasperReports Library。它使用 iText 本身,并且不仅仅是您要求的 PDF 库,但如果它符合您的需求,我会选择它。

简单地说,它允许您设计可以在运行时填写的报告。如果您使用custom datasource,您或许可以轻松地将 JasperReports 集成到现有系统中。它将为您节省整个布局的麻烦,例如当发票跨越多个站点时,每个站点都应该有一个页脚等等。

【讨论】:

以上是关于使用 Java 创建 PDF [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java 设置PDF跨页表格重复显示表头行

在java中将HTML表格写入PDF [重复]

使用Java将HTML文件转换为带有图片和样式的PDF [重复]

使用 PHP 从纯文本和 HTML 文本的混合创建 PDF [重复]

我正在使用以下代码创建pdf并将其存储在设备上,但不成功[重复]

java插件中的html到pdf [重复]