寻找JasperReports的替代品

时间:2011-11-23 17:21:16

标签: reporting jasper-reports report

前一天,我的老板问我,他想从网络应用程序中获取PDF格式的发票。鉴于每个人都使用JasperReports和iReport进行设计,我试过了。我的Web应用程序基于Java + Hibernate和Spring。起初Jasper看起来很好,而iReport也是如此。无论如何,我被两件事所阻止:

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

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

2 个答案:

答案 0 :(得分:5)

如果时间紧迫(通常是老板递给你的东西),我建议你查看 iText (主要网站是here)。

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

我自己承认,JasperReports实施其JRBeanCollectionDataSource是一个更优雅,更灵活,永久的解决方案。但是如果你需要一个快速脏的库来生成PDF,迫在眉睫的截止日期即将到来,我会下载iText JAR并拥有它。

该网站上载有实用的代码示例,可用于您想要完成的任何事情。

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

// 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。在我的拙见中,这是纯粹的邪恶,只会伤透你的心。

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

答案 1 :(得分:2)

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