在 android 上用 itext 填充 pdf 表单字段后为空
pdf form fields empty after filling them with itext on android
在我的 android 应用程序中,我使用 itextg 从 pdf 文件填写表单域,如下所示:
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 的值实际上是在调试和检查压模时设置的。但是一旦我打开目标文件,我的所有字段都是空的。
如果我不展平我的表格,值会保留在字段中,这让我相信该值也会出现在展平 pdf 中,但根本不会显示。
顺便说一句,使用 FormFiller 形成 itext 演示 (http://itextpdf.com/itext-android-demos) 相同的 pdf 工作得很好!
这可能是由不同的原因造成的。
不是正确的 iTextG 版本
请参阅 Appearance issues with pdf interactive forms using iText 可以找到此答案的地方:
This seems to be a bug on some versions of iText. I had the same problem with iTextSharp version 5.5.5 and it was solved after I upgraded to version 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);
开始。
在我的 android 应用程序中,我使用 itextg 从 pdf 文件填写表单域,如下所示:
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 的值实际上是在调试和检查压模时设置的。但是一旦我打开目标文件,我的所有字段都是空的。
如果我不展平我的表格,值会保留在字段中,这让我相信该值也会出现在展平 pdf 中,但根本不会显示。
顺便说一句,使用 FormFiller 形成 itext 演示 (http://itextpdf.com/itext-android-demos) 相同的 pdf 工作得很好!
这可能是由不同的原因造成的。
不是正确的 iTextG 版本
请参阅 Appearance issues with pdf interactive forms using iText 可以找到此答案的地方:
This seems to be a bug on some versions of iText. I had the same problem with iTextSharp version 5.5.5 and it was solved after I upgraded to version 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);
开始。