java通过itext操作PDF文件的问题

liuyang_king 2013-10-11 05:10:55
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
显示出来也没有值,但是你用鼠标点文本域,就能显示值。

在网上找了些资料,但都没有结果,请高手指点下,已经弄了两天了,谢谢
...全文
855 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
送外卖 2016-05-30
  • 打赏
  • 举报
回复
楼主怎么解决的啊,求指教~~
zoyation 2013-10-15
  • 打赏
  • 举报
回复
经过测试是你定义的模板有问题,要注意模板里定义的TextBox等的名称
liuyang_king 2013-10-14
  • 打赏
  • 举报
回复
没有人来回答下么,自己顶

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧