2010-10-21 45 views
33

我知道这已经被问过,但我仍未确定哪个PDF生成框架用于我当前的项目。用于Java的PDF生成库

我的要求

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

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

我知道,那Apache防可能是这里的解决方案,但后来我又找到XSLT繁琐继续努力,我读了FOP可能会很慢,当它涉及到许多文件的巨大throuput?

我也算是JasperReports的,但是从我的理解,这是更适合含表格数据集报告,而不是单一的文件,如需要大量的版式格式的发票?

对此有何看法?

+1

@Pang et al:我真的很喜欢你们:DI知道离题的规则,但依然:这是我最喜欢的问题,最有兴趣和最多的观点,所以我想问这种问题对SO用户有用。为什么你总是关闭这样的问题是完全超出我的想法。 – 2017-02-02 08:20:37

+0

Haberi我也不明白。在以类似的方式提出问题时,他们推荐SO站点提供软件建议,但我要求提供一个库或框架以便实施分流码算法(我已实施了好几次),反正它不会不管是Word处理器,软件库,还是软件框架,显然这都是正确的地方问......这很好,很容易问,但几乎没有人会经常问谁会真正有答案! – Quaternion 2018-01-25 01:46:45

回答

18

给JasperReports一个尝试。使用iReport来创建.jrxml文件。 JapserReports可以处理复杂的布局。对于基于不同查询的报告部分,可以使用嵌入到主报告中的子报告。

就像@Adrian Smith的解决方案一样,这种方法将报表编辑和数据采集分开。

+0

+1这看起来也不错! – 2010-10-21 09:55:58

+0

感谢Janek,我想我将使用Jasper的原型 – 2010-10-22 07:34:22

+8

以防万一来自未来的人在这个旧线程中蹒跚而行:现在使用[JasperSoft Studio](http://community.jaspersoft.com/project/jaspersoft-studio)而不是iReport。 – 2015-01-29 08:46:46

9

我已经实现了一个很好的解决方案,我的软件创建了一个格式无关的“纯”XML文件,然后我给我的老板XSD,他把它放入Altova StyleVision,他可以根据他从中剔除的数据设计所见即所得的报告XSD。该软件生成XSLT。所以,我的程序:

  • 可生产格式无关的 “纯” XML
  • 用XSLT转换它,它的输出是XML-FO
  • 使用Apache FOP到XML-FO转换成PDF

这是一个非常棒的解决方案,意味着每当我的老板想要更改报告中的颜色时,我(作为程序员)不得不更改我的代码,我的工作仅仅是生成“纯粹的”XML 。

更新:我还要指出的是,我给我的老板访问我们的SVN仓库与乌龟SVN是足够好用,他可以使用它没有错误。因此,他可以直接将XSLT文件检入到SVN中,然后运行构建/部署,甚至不必中断我的工作。很明显,工作流程只适用于那些确实足够精确以至于不会犯错误等等的人,但在这种情况下对我们来说工作得很好。

1

我一直在使用JODConverter一段时间,我真的很喜欢它。

我们所做的就是使用JODReports来生成动态OpenOffice.org文档(内部使用FreeMarker)。然后我们使用JODConverter将这些文档转换为PDF文档。

听起来像很多工作,但它确实不是。

1

一种可能性是

  • 创建PostScript格式的文档,然后
  • 使用ghostscript的(PS2PDF)
2

Docmosis允许你在Word或OpenOffice创建模板将其转换为PDF格式作家 - 很好地分离问题,然后布局是最熟悉的工具。

2

根据我的经验,我建议你考虑以下Java PDF Libraries创建PDF报告,

  1. DynamicReports
  2. 阿帕奇PDF箱
  3. iText的PDF
  4. PDF小丑

根据您的要求,我认为DynamicReports将是正确的选择。我一直在使用过去3年的动态报告来满足我所有的PDF报告要求。只需少量代码,您就可以轻松创建真正动态的PDF。 Dynamicreports是Jasper Report的一个包装。所以,它在内部使用Jasper报告。