String fileUrl = "d:\ContractInfoTemplate1.pdf";
try {
PdfReader reader = new PdfReader(fileUrl);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper ps = new PdfStamper(reader, bos);
AcroFields s = ps.getAcroFields();
System.out.println("s: " + s);
System.out.println("AcroFields: " + s.getFields());
System.out.println("AcroFields.class: " + s.getFields().getClass());
System.out.println("getSignatureNames: " + s.getSignatureNames());
System.out.println("getSignatureNames: " + s.getTotalRevisions());
System.out.println("s: " + s.getBlankSignatureNames());
System.out.println("s: " + s.getFieldCache());
s.setField("hetonghao", "00000000000", "00000000000");
s.setField("tbdwmc", "投保单位名称");
System.out.println("hetonghao:" + s.getField("hetonghao"));
System.out.println("tbdwmc:" + s.getField("tbdwmc"));
ps.setFormFlattening(false);
ps.close();
FileOutputStream fos = new FileOutputStream("D:\123.pdf");
fos.write(bos.toByteArray());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
代码目的是把一个pdf中的指定的文本域的内容改成输入的字符串,并生成新的pdf文件。
问题:建立的是文本域,stamp.setFormFlattening(false); 这句话很关键
假如本人设置true那么出来的就是原来的模板,没有本人的赋值,但是本人设置false
显示出来也没有值,但是你用鼠标点文本域,就能显示值。
在网上找了些资料,但都没有结果,请高手指点下,已经弄了两天了,谢谢
解决方案
100
经过测试是你定义的模板有问题,要注意模板里定义的TextBox等的名称