寻找 JasperReports 的替代品 [关闭]

Posted

技术标签:

【中文标题】寻找 JasperReports 的替代品 [关闭]【英文标题】:Looking for an alternative to JasperReports [closed] 【发布时间】:2012-01-04 23:52:55 【问题描述】:

前几天,我的老板问我,他想要来自 web 应用程序的 PDF 格式的发票。鉴于每个人都使用 JasperReports 和 iReport 进行设计,我尝试了它。我的网络应用基于 Java+Hibernate 和 Spring。一开始 Jasper 看起来不错,iReport 也不错。无论如何,我被两件事阻止了:

iReport 是我这辈子见过的最慢的东西。 更严重的是,我有某些具有某些类层次结构的 bean,在 Jasper 中处理它非常复杂。我办公室的每个人都在使用 Jasper 和 SQL 查询,因此它是一个简单方便的工具,但我花了一整天的时间尝试将我的 bean 映射到报表和子报表,但工作很少。

我见过 DynamicJasper,但是,我似乎无法用它设计报告。你怎么看?有更容易使用的替代品吗?

【问题讨论】:

您是否正在寻找可与 Java+Hibernate 和 Spring 结合使用的替代方案? DynamicJasper API 是 JasperReports API 的“包装器” 关于 iReport 性能,最近的 4.1.x 和 4.5 版本中存在某种错误。查看此论坛帖子了解更多信息:jasperforge.org/plugins/espforum/…。对我来说,删除/重置类路径将 iReport 的性能提高了一个数量级。 【参考方案1】:

作为 iReport 的替代方案,您可以尝试 JasperWave 设计器用于 JasperReports。 为了解决第二个问题,为什么不编写一些帮助 Java 代码将 bean 结构转换为报告结构呢?无论如何,将 java 对象映射到某种平面结构总是不容易的。创建一些 java 接口来隐藏底层 bean 结构的复杂性。不确定第二个问题是否是寻找替代报告解决方案的原因。

【讨论】:

【参考方案2】:

如果时间至关重要(通常情况下,当你的老板交给你一些东西时)我会建议查看 iText(主站点是 here)。

学习起来非常非常简单(您可以在 20 分钟内启动、运行并生成简单的“Hello,PDF!”示例),并且可以将几乎任何内容导出为 PDF:表格、列表、图表、图像、超文本等

我自己承认,JasperReports 实施其JRBeanCollectionDataSource 对您来说是一个更优雅、更灵活、更持久的解决方案。但是,如果您需要一个快速且简单的库来生成 PDF, 并且 迫在眉睫的最后期限即将到来,我会下载 iText JAR 并使用它。

该网站加载了几乎所有您想要完成的实用代码示例。

与 JasperReports 不同,iText 不是报告生成器。它只是一个 PDF 生成器(从我在您的问题中可以看出,听起来就像您所需要的一样)。因此,对于任何特定的 Bean,您只需选择要导出到 PDF 发票的属性,然后根据需要使用ChunkParagraph 等类将它们附加到文档中:

// Your POJO/Bean/VO
Employee oEmp = new Employee();

Document oInvoicePdf = new Document();
PdfWriter.getInstance(document, new FileOutputStream("/invoices/2011/Invoice201.pdf"));
document.open();
document.add(new Chunk("Employee's name is : " + oEmp.getName()));
document.close();

即使这不是您想要的,不惜一切代价我建议您避开 Apache PdfBox。在我看来,这是纯粹的邪恶,只会伤你的心。

希望这会有所帮助,祝你好运!

【讨论】:

我第二个 PDFBox 很困难。它的内部数据结构似乎充满了内存泄漏,并且并非真正设计用于处理大型文档。我最终需要关闭并重新打开源 pdf,只是为了清除它保留的所有不必要的数据。我真的希望他们能解决这些问题。 这方面有什么新的更新吗?

以上是关于寻找 JasperReports 的替代品 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

寻找 Psyco 的良好替代品(Python->C 编译器)[关闭]

寻找离子 5 中事件的替代方案 [关闭]

生成报告 - 啥对您有用? [关闭]

CKAN的替代品[关闭]

如何搜索轻量级 JS 包(替代库来替换我的库)? [关闭]

雅虎财经 API 的替代品? [关闭]