寻找JasperReports的替代品

got*_*ch4 17 reporting report jasper-reports

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

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

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

IAm*_*aja 5

如果时间至关重要(通常是老板递给你的东西),我建议你查看iText(主站点在这里).

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

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

该站点加载了实用的代码示例,可以完成您想要完成的任何事情.

与JasperReports不同,iText不是报告生成器.它只是一个PDF生成器(从我在你的问题中可以看出,听起来就像你需要的一样).因此,对于任何特定的bean,你只要选择你要导出到PDF发票的属性,使用Chunk,Paragraph等班它们添加到该文件,因为你需要:

// 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();
Run Code Online (Sandbox Code Playgroud)

即使这不是你想要的,不惜一切代价,我建议你避开 Apache PdfBox.在我的拙见中,这是纯粹的邪恶,只会伤害你的心.

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


小智 3

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