在android上填充itext后,pdf表单字段为空

时间:2016-08-19 08:10:52

标签: java android pdf itext

在我的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工作得非常好!

1 个答案:

答案 0 :(得分:1)

这可能是由不同的事情造成的。

不正确的iTextG版本

请参阅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);开始。