在我的Android应用程序中,我使用 itextg 填充pdffile中的表单域:
PdfReader reader = new PdfReader(this.templateFile);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(this.targetFile));
AcroFields form = stamper.getAcroFields();
for (String key : values.keySet()) {
form.setField(key, values.get(key));
}
stamper.setFormFlattening(true);
stamper.close();
我可以看到,在调试和检查压模时,实际设置了formfields的值。但是一旦我打开targetFile,我的所有字段都是空的。
如果我没有展平我的表格,那么价值会保留在字段中,这让我相信这个值也会出现在flattend pdf中,但是根本没有显示。
顺便说一句,使用FormFiller形成itext演示(http://itextpdf.com/itext-android-demos),同样的pdf工作得非常好!
答案 0 :(得分:1)
这可能是由不同的事情造成的。
请参阅Appearance issues with pdf interactive forms using iText,您可以在这里找到答案:
这似乎是某些版本iText的错误。 iTextSharp版本5.5.5我遇到了同样的问题,升级到版本5.5.9后它就解决了。
通过更改外观设置,请参阅Editable .pdf fields disappear (but visible on field focus) after save with evince解决问题的位置:
form.put(PdfName.NEEDAPPEARANCES, PdfBoolean.PDFTRUE);
或者请参阅iText 5.5 fails to fill form,其中指示iText创建外观:
af.setGenerateAppearances(true);
我先从af.setGenerateAppearances(true);
开始。