使用java创建复杂的pdf

Ank*_*kit 5 java pdf-generation itext

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

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

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

最好的方法是什么,还是有其他方法更容易和方便?

Bru*_*gie 9

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

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

如果是这种情况,我会使用任何工具,允许您创建一个花哨的证书(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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 在这种情况下,我不明白这个问题:要么使用AcroForms,要么使用动态内容. (2认同)