前一天,我的老板问我,他想从网络应用程序中获取PDF格式的发票。鉴于每个人都使用JasperReports和iReport进行设计,我试过了。我的Web应用程序基于Java + Hibernate和Spring。起初Jasper看起来很好,而iReport也是如此。无论如何,我被两件事所阻止:
我见过DynamicJasper,但似乎我无法用它设计报告。你怎么看?是否更容易使用替代品?
答案 0 :(得分:5)
如果时间紧迫(通常是老板递给你的东西),我建议你查看 iText (主要网站是here)。
学习起来非常非常简单(您可以在20分钟内完成,运行并生成简单的“Hello,PDF!”示例)并且可以将任何内容导出为PDF:表格,列表,图表,图像,超文本等
我自己承认,JasperReports实施其JRBeanCollectionDataSource
是一个更优雅,更灵活,永久的解决方案。但是如果你需要一个快速脏的库来生成PDF,和迫在眉睫的截止日期即将到来,我会下载iText JAR并拥有它。
该网站上载有实用的代码示例,可用于您想要完成的任何事情。
与JasperReports不同,iText不是报告生成器。它只是一个PDF生成器(从我在你的问题中可以看出,声音就像你需要的一样)。因此,对于任何特定Bean,您只需选择要导出到PDF发票的属性,然后使用Chunk
,Paragraph
等类将它们附加到文档中:< / 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接口。不确定第二个问题是寻找替代报告解决方案的原因。