我有一个包含acrofields的pdf . 当我对那些领域进行冲压并使这个pdf变平时,一切正常 . 我得到了pdf,所有的acrofield都有适当的 Value . 问题是,当我打开这个标记文件时,Acrobat成功打开它,但当我向下滚动到我的acrofield存在的6页时,它会显示错误弹出窗口,其中包含以下消息:
此页面上存在错误 . Acrobat可能无法正确显示页面 . 请与创建PDF文档的人员联系以解决此问题 .
我还发送了pdfs的链接(带有acrofields的pdf和标记为pdf),发生了错误 .
pdf file without filling acrofield
用于标记pdf文件的代码: -
`
PdfReader reader = new PdfReader(location1);
Integer i=0;
PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(location2));
AcroFields form2 = stamper.getAcroFields();
Set<String> fields2 = new HashSet(form2.getFields().keySet());
for(String s1 : fields2)
{
i = i+1;
form2.setField(s1, i.toString());
}
stamper.setFormFlattening(true);
stamper.close();`
出现此错误的场景:1)使用itext 2.0.8进行标记(在程序中(在主方法中完成标记)和Web应用程序中进行标记
2)使用itextpdf 5.4.1进行标记(仅当标记流在Web应用程序中运行时才会出现错误消息 . 但是如果我使用程序生成标记的pdf(使用main方法),则不会出现错误消息) .
请帮帮我 .
1 回答
您开始的原始表单
Form-I-9.pdf
已经是错误的,其中一个表单字段的外观内容流包含语法错误 . 但是,由于Adobe Reader用于在某些情况下从字段值重新创建现场外观,因此似乎并不在意 .当表单字段被展平时,该错误的外观内容流变为xobject内容流 . Reader无法再修复此语法错误(毕竟没有任何字段可以使用其值) . 因此,您收到错误消息 .
问题本身位于第7页,而不是6(一旦Reader开始呈现第7页,它就会出现) . 它是
Form-I-9.pdf
中对象91 0中字段CountryOfIssuance[0]
的外观流,它在展平的testFormI9.pdf
中变为对象43 0:如您所见,缺少 Tj 操作的参数 .