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

可能重复:
PDF Generation Library for Java

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

【问题讨论】:

标签: java pdf export


【解决方案1】:

我更喜欢将我的数据输出到 XML(使用 CastorXStreamJAXB),然后使用 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 的库:

  1. iText
  2. Apache PDFBox
  3. 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 集成到现有系统中。它将为您节省整个布局的麻烦,例如当发票跨越多个站点时,每个站点都应该有一个页脚等等。

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2016-04-04
    • 2012-05-22
    • 2011-11-27
    • 1970-01-01
    • 2011-10-18
    • 2018-10-12
    • 2016-03-01
    • 2013-03-22
    相关资源
    最近更新 更多