在Java Web应用程序中生成PDF

时间:2011-06-07 02:16:54

标签: java web-applications pdf itext

我需要在用户付款后生成(动态)PDF并将其附加到电子邮件并在我的Java Web应用程序中发送。

我正在考虑使用iText,但我真的不喜欢所有格式和布局如何与PDF的内容混合在一起,如此链接中的示例所示:http://www.coderanch.com/how-to/java/ItextExample

我不喜欢将它们混合在一起的原因是因为我们的UI人员不愿意接触这个Java代码。

我还有其他选择吗?我真的不想生成包含所需数据的XML文件,然后必须对其进行转换,所以我认为XSL-FO可能已经用完了。

2 个答案:

答案 0 :(得分:1)

我已经在几个项目中使用了Jasper Reports,它在编译报告时效果非常好,速度也很快。尽管您需要熟悉数据模型,但创建报告的UI并不算太糟糕。您可以将任何您想要的内容作为数据源传递,包括XML文件或填充了数据的简单哈希映射:

http://jasperforge.org/website/jasperreportswebsite/trunk/documentation.html?header=project&target=jasperreports

<强>伪代码

File myJasperFile  // reference to compiled Jasper file
JRExporter exp = new JRPdfExporter()
ByteArrayOutputSream b;
JasperPrint p = JasperFillManager.fillReport(...)
exp.setParameter(JRExporterParameter.OUTPUT_STREAM, b)
exp.setParameter(JRExporterParameter.JASPER_PRINT, p)
exp.exportReport() // b now contains the PDF binary

答案 1 :(得分:0)

有许多HTML-&gt; PDF选项可供选择(包括iText)。您可以从UI人员创建的模板生成HTML,并将其转换为PDF。微不足道的。

如果你的HTML变得非常花哨和编写脚本,iText(以及大多数其他转换器)将无法正确处理它。对于高级内容,您需要WKHTML2PDF,这是一个基于webkit的应用程序,可以写入PDF而不是屏幕。这是SLICK(有点重量级)。 iText会更有效率。