- OpenPDF 是基于 itext4 开发的开源的jar
- itext5官方不再更新维护,开发的itext7绝大部分功能收费
- 下面代码是使用OpenPDF 开发,itext可参考
使用Adobe Acrobat XI Pro制作模板,以下是个人方案
-
先使用wps,创建一个word,先绘制出来想要的表格,导出pdf
-
然后用Adobe Acrobat XI Pro 编辑,步骤如下:
进入编辑界面,然后选择表单–编辑
定义域的一般属性 名称 是否可见 只读 注意:在代码中通过获取该名称属性来进行对模板填值
代码是一个pdf模板,复制到一个界面,实际情况,可循环,注意close
package com.lowagie.examples.forms.fill;
import com.lowagie.text.pdf.*;
import java.io.ByteArrayOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Register {
public static void main(String[] args) {
System.out.println("Filling in a form");
try {
// 用Adobe Acrobat XI 编辑好的PDF模板
PdfReader reader = new PdfReader("SimpleRegistrationForm.pdf");
// 填充表单
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper stamp = new PdfStamper(reader, bos);
AcroFields form = stamp.getAcroFields();
form.setField("name", "Bruno Lowagie");
form.setField("address", "Baeyensstraat 121, Sint-Amandsberg");
form.setField("postal_code", "BE-9040");
form.setField("email", "bruno@lowagie.com");
stamp.setFormFlattening(true);
stamp.close();
PdfReader pdfReader = new PdfReader(bos.toByteArray());
pdfReader.close();
// 用Adobe Acrobat XI 编辑好的PDF模板
PdfReader reader1 = new PdfReader("SimpleRegistrationForm.pdf");
ByteArrayOutputStream bos1 = new ByteArrayOutputStream();
PdfStamper stamp2 = new PdfStamper(reader1, bos1);
AcroFields form2 = stamp2.getAcroFields();
form2.setField("name", "Bruno Lowagie 6666");
form2.setField("address", "Baeyensstraat 121, Sint-Amandsberg");
form2.setField("postal_code", "BE-9040");
form2.setField("email", "bruno@lowagie.com");
stamp2.setFormFlattening(true);
stamp2.close();
PdfReader pdfReader1 = new PdfReader(bos1.toByteArray());
pdfReader1.close();
//复制上面两个pdf,用于一个模板多页pdf
PdfCopyFields copy = new PdfCopyFields(Files.newOutputStream(Paths.get("registered.pdf")));
//加权限,设置不可编辑,不提供密码,随机生成密码
copy.setEncryption(false,null,null, PdfWriter.ALLOW_PRINTING);
copy.addDocument(pdfReader);
copy.addDocument(pdfReader1);
copy.close();
} catch (Exception de) {
de.printStackTrace();
}
}
}
依赖
com.github.librepdf openpdf 1.3.28 org.bouncycastle bcprov-jdk18on org.bouncycastle bcpkix-jdk18on



