使用java创建复杂的pdf

我有一个基于Java / Java EE的应用程序,其中我需要为将提供给用户的各种服务创建PDF证书。 我正在寻找一种创建PDF的方法(目前不需要数字证书)。

这样做最简单方便的方法是什么? 我努力了

  1. XSL转换为pdf
  2. 使用itext进行HTML到PDF的转换。
  3. 粗java方式(使用PDFWriter,PdfPCell等)

最好的方法是什么,还是有其他方法更简单方便?

当您谈到证书时,我认为标准表对于证书的每个接收者来说都是相同的,除了:

  • 接收者的名字
  • 接收者遵循的过程
  • 一个约会

如果是这种情况,我会使用任何工具,允许您创建一个花哨的证书(Acrobat,Open Office,Adobe InDesign,…)并创建一个包含三个字段的静态表单(有时称为AcroForm):name当然,约会。

然后我会使用iText填写这样的字段:

PdfReader reader = new PdfReader(pathToCertificateTemplate); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(pathToCertificate)); AcroFields form = stamper.getAcroFields(); form.setField("name", name); form.setField("course", course); form.setField("date", date); stamper.setFormFlattening(true); stamper.close(); reader.close(); 

从代码创建这样的证书是“艰难的方式”; 从XML创建这样的证书是“痛苦”(因为XML不适合定义布局),使用iText的XML Worker可以从(HTML + CSS)创建证书,但所有这些解决方案都有缺点要正确定位每件物品,确保所有物品都放在同一页面等等,这是很难的工作……

使用固定字段维护模板要容易得多。 这样,您只需编写一次代码。 如果由于某种原因你想将字段移动到另一个地方,你只需要更改模板,你不必担心在代码,XML,HTML或CSS中搞乱。

有关更多信息,请参见http://www.manning.com/lowagie2/samplechapter6.pdf (第6.3.5节)。

尝试使用Jasper Reports配合。 请访问http://community.jaspersoft.com/查看

我推荐第一种方法:XSL到pdf转换,这是最强大的。 我有使用Apache FOP优雅地生成大量PDF报告(每个页面有数千页)的经验,我认为它足够好并且相当容易(但它需要一些xsl-FO的知识)。

即使这是一个老问题,我认为应该是有问题的。

要创建非常复杂的pdf,例如证书,报告或付款单等。您绝对可以使用动态报告库。 这个库依赖于jasper报告(这也是非常受欢迎的旧库)。 动态报告将使您能够使用Java代码设计文档,以便您可以根据需要轻松地进行操作或进行更改。

他们的网站上有很多可用的例子,很容易从这些例子中学习。

以下是链接:

http://www.dynamicreports.org/

使用iText pdf库创建pdf。您可以轻松地从该API生成pdf。 链接在这里

http://itextpdf.com/

Text®是一个允许您创建和操作PDF文档的库。 它使开发人员能够通过动态PDF文档生成和/或操作来增强Web和其他应用程序。

开发人员可以使用iText:

将PDF服务到浏览器

从XML文件或数据库生成动态文档

使用PDF的许多交互function

添加书签,页码,水印等。

拆分,连接和操作PDF页面

自动填写PDF表格

将数字签名添加到PDF文件

您提到PDF可能很复杂。 如果这与可变性或布局有关,则提供相当复杂的基于模板的布局和控件的一个选项是Docmosis 。 您提供docmosis doc或odt文件作为模板,因此它们非常容易更改,并且调用Docmosis以邮件合并以创建pdf或其他格式。 请不要为创建Docmosis的公司工作。

希望有所帮助。