我知道之前已经问过这个问题,但我仍然没有确定哪个PDF生成框架可用于我当前的项目。
我的要求
很多人似乎都使用 iText ,但我对关注点分离有一些顾虑(除了更改的许可证):在HTML上下文中有很好的MVC支持,我通常坚持Spring MVC和FreeMarker分离逻辑和布局。我有点担心,使用iText,你最终会混合代码和布局。
我知道, Apache FOP 在这里可能是一个解决方案,但是我再次发现XSLT很繁琐,我读到FOP在很多文档的大量组合时可能会很慢?
我还考虑过 JasperReports ,但根据我的理解,这更适合包含表格数据集的报表,而不是单个文档,例如需要大量布局格式的发票?
对此有何想法?
答案 0 :(得分:21)
尝试JasperReports。使用iReport创建.jrxml文件。 JapserReports可以处理复杂的布局。对于基于不同查询的报表部分,请查看使用嵌入主报表的子报表。
就像@Adrian Smith的解决方案一样,这种方法将报表布局编辑与数据源分开。
答案 1 :(得分:9)
我已经实现了一个很好的解决方案,我的软件创建了一个独立于格式的“纯”XML文件,然后我给了我的老板XSD并将其放入Altova StyleVision,在那里他可以根据数据进行WYSIWYG设计报告从XSD中拔出来。该软件生成XSLT。所以我的计划:
这是一个非常好的解决方案,意味着每次我的老板想要在报告中更改颜色时,我(作为程序员)不得不更改我的代码,我的工作就是生成“纯粹的”XML。 / p>
更新:我还应该指出,我让我的老板使用Tortoise SVN访问我们的SVN存储库,这很容易使用,他可以毫无错误地使用它。因此,他可以直接检查XSLT文件到SVN并运行构建/部署,甚至不必打扰我的工作。显然,工作流程只适用于那些足够精确且不会犯错等的人,但在这种情况下,它对我们来说效果很好。
答案 2 :(得分:4)
根据我的经验,我建议您考虑使用Java PDF Libraries来创建PDF报告,
根据您的要求,我认为DynamicReports将是正确的选择。我过去3年一直在使用动态报告来满足我的所有PDF报告要求。使用非常少量的代码,您可以轻松创建真正动态的PDF。 Dynamicreports是Jasper Report的包装器。因此,它在内部使用了Jasper报告。
答案 3 :(得分:2)
Docmosis允许您在Word或OpenOffice编写器中创建模板 - 很好地分离关注点,然后使用最熟悉的工具进行布局。
答案 4 :(得分:1)
我一直在使用JODConverter一段时间,我非常喜欢它。
我们所做的是使用JODReports生成动态OpenOffice.org文档(内部使用FreeMarker)。然后我们使用JODConverter将这些文档转换为PDF文档。
这听起来像是很多工作,但实际上并非如此。
答案 5 :(得分:1)
一种可能性是