PDF生成Java库

Ste*_*erl 42 java pdf-generation jasper-reports itext apache-fop

我知道之前已经问过这个问题,但是我还没有确定哪个PDF生成框架可用于我当前的项目.

我的要求

  • 即时生成PDF文档(主要是订单,发票)
  • 基于Java
  • 易于布局
  • 应该是开源的
  • 易于改变布局

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

我知道,Apache FOP在这里可能是一个解决方案,但是我再次发现XSLT很繁琐,而且我读到FOP在许多文档的大量组合中可能会很慢?

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

有什么想法吗?

Jan*_*cki 21

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

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

  • 以防万一未来的任何人绊倒这个旧线程:现在使用[JasperSoft Studio](http://community.jaspersoft.com/project/jaspersoft-studio)而不是iReport. (10认同)

Adr*_*ith 9

我已经实现了一个很好的解决方案,我的软件创建了一个独立于格式的"纯"XML文件,然后我给了我的老板XSD,并将它放入Altova StyleVision,在那里他可以根据他从XSD中提取的数据进行WYSIWYG设计报告.该软件生成XSLT.所以我的计划:

  • 生成与格式无关的"纯"XML
  • 使用XSLT对其进行转换,其输出为XML-FO
  • 使用Apache FOP将XML-FO转换为PDF

这是一个非常好的解决方案,意味着每次我的老板想要在报告中更改颜色时,我(作为程序员)不得不更改我的代码,我的工作就是生成"纯"XML.

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


Pra*_*L M 5

根据我的经验,建议您考虑使用Java PDF库来创建PDF报告,

  1. 动态报表
  2. Apache PDF框
  3. iText PDF
  4. PDF小丑

根据您的要求,我认为DynamicReports将是正确的选择。最近3年来,我一直将Dynamic Reports用于所有PDF Reporting要求。只需很少的代码,您就可以轻松创建真正的动态PDF。Dynamicreports是Jasper Report的包装。因此,它在内部利用Jasper报告。