Java的PDF生成库[关闭]

Posted

技术标签:

【中文标题】Java的PDF生成库[关闭]【英文标题】:PDF Generation Library for Java [closed] 【发布时间】:2011-04-28 12:25:43 【问题描述】:

我知道之前有人问过这个问题,但我仍然不确定要为我当前的项目使用哪个 PDF 生成框架。

我的要求

动态生成 PDF 文档(主要是订单、发票) 基于 Java 易于布局 应该是开源的 易于更改布局

很多人似乎都在使用 iText,但我对关注点分离有一些担忧(除了更改的许可证):在 html 上下文中,有很好的 MVC 支持,我通常坚持Spring MVC 和 FreeMarker 将逻辑和布局分开。我有点担心使用 iText 你最终会混淆代码和布局。

我知道,Apache FOP 在这里可能是一个解决方案,但是我再次发现 XSLT 使用起来很乏味,而且我读到 FOP 在处理大量文档时可能会很慢?

我也考虑过 JasperReports,但据我了解,这更适合包含表格数据集的报告,而不是需要大量布局格式的发票等单个文档?

对此有什么想法吗?

【问题讨论】:

@Pang 等人:我真的很喜欢你们 :DI 知道离题规则,但仍然:这是我最轻松最受欢迎的问题,最多支持和最多的观点,所以我想问这种问题对 SO 上的用户有用。为什么你一直关闭这些问题完全不在我的脑海里。 Haberi 我也不懂。在有一个类似的问题结束时,他们推荐了一个 SO 站点来获得软件推荐,但我要求一个库或框架来促进实现分流场算法(我已经实现了很多次)无论如何它没有不管它是文字处理器、软件库还是软件框架,显然都是合适的地方问......这很好,很容易问,但几乎没有人会经常去真正有答案的人! 【参考方案1】:

试试 JasperReports。使用 iReport 创建 .jrxml 文件。 JapserReports 可以处理复杂的布局。对于基于不同查询的报告部分,请查看使用嵌入到主报告中的子报告。

就像@Adrian Smith 的解决方案一样,这种方法将报告布局编辑与数据源分开。

【讨论】:

+1 看起来也不错! 谢谢 Janek,我想我会使用 Jasper 制作原型 以防万一将来有人偶然发现这个旧线程:现在使用 JasperSoft Studio 而不是 iReport。 JasperReports 是一个重量级的报告应用程序。它可以处理 PDF,但将其集成到另一个应用程序中是一件复杂的事情(我是根据经验说话)。我会选择更简单的东西,最好是图书馆。【参考方案2】:

我已经实现了一个很好的解决方案,我的软件创建了一个与格式无关的“纯”XML 文件,然后我将 XSD 交给我的老板,他将其放入Altova StyleVision,在那里他可以根据他提取的数据所见即所得设计报告来自 XSD。该软件生成一个 XSLT。所以我的程序:

生成独立于格式的“纯”XML 使用 XSLT 对其进行转换,其输出为 XML-FO 使用Apache FOP 将XML-FO 转换为PDF

这是一个非常棒的解决方案,意味着我(作为一名程序员)不必再每次我的老板想要更改报告中的颜色时更改我的代码,我的工作只是生成“纯”XML。

更新:我还应该指出,我允许我的老板使用 Tortoise SVN 访问我们的 SVN 存储库,它非常易于使用,他可以毫无错误地使用它。因此,他可以将 XSLT 文件直接检查到 SVN 并运行构建/部署,甚至不必打扰我的工作。显然,该工作流程仅适用于足够精确以至于不会犯错误等的人,但在这种情况下它对我们来说效果很好。

【讨论】:

【参考方案3】:

根据我的经验,我建议您考虑关注Java PDF Libraries 来创建 PDF 报告,

    动态报告 Apache PDF 框 iText PDF PDF小丑

对于您的要求,我认为DynamicReports 将是正确的选择。过去 3 年以来,我一直在使用动态报告来满足我的所有 PDF 报告要求。使用非常少的代码,您可以轻松创建真正动态的 PDF。 Dynamicreports 是 Jasper Report 的包装器。因此,它在内部使用 Jasper 报告。

【讨论】:

DynamicReports 的链接好像失效了 我已经更新了链接。托管动态报告的原始网站不再可用。该链接在过去几个月中已关闭。现在,社区中很少有人维护这个项目。【参考方案4】:

Docmosis 允许您在 Word 或 OpenOffice 编写器中创建模板 - 很好地分离关注点,然后在最熟悉的工具中进行布局。

【讨论】:

【参考方案5】:

我已经使用JODConverter 有一段时间了,我真的很喜欢它。

我们所做的是使用JODReports 生成动态的 OpenOffice.org 文档(内部使用 FreeMarker)。然后我们使用 JODConverter 将这些文档转换为 PDF 文档。

听起来工作量很大,但实际上并非如此。

【讨论】:

【参考方案6】:

一种可能性是

以 PostScript 格式创建文档,然后 使用 ghostscript (ps2pdf) 将其转换为 pdf

【讨论】:

以上是关于Java的PDF生成库[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用于C / C ++应用程序的开源PDF库? [关闭]

如何从html网页生成pdf? [关闭]

最佳服务器端 .NET PDF 编辑库 [关闭]

有没有直接的方法可以通过python从markdown文件生成pdf [关闭]

使用 iText 库读取 pdf 文件 [关闭]

如何在 C# 中将 .docx 转换为 .pdf [关闭]