使用 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将HTML文件转换为带有图片和样式的PDF [重复]
使用 PHP 从纯文本和 HTML 文本的混合创建 PDF [重复]