标记pdf(使用itext)打开时会显示错误消息

时间:2014-03-14 11:18:58

标签: itext itextpdf

我有一个包含acrofields的pdf。当我对那些领域进行冲压并使这个pdf变平时,一切都运行良好。我得到了pdf,所有的acrofield都有适当的价值。问题是,当我打开这个标记文件时,Acrobat成功打开它,但是当我向下滚动到存在我的acrofields的6页时,它会显示错误弹出窗口,其中包含以下消息:

此页面上存在错误。 Acrobat可能无法正确显示页面。请与创建PDF文档的人员联系以解决此问题。

我还发送了pdfs的链接(pdf带有acrofields和盖章的pdf),发生了错误。

pdf file without filling acrofield

stamped pdf file

用于标记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 个答案:

答案 0 :(得分:1)

您开始使用的原始格式Form-I-9.pdf是错误的,其中一个表单字段的外观内容流包含语法错误。但是,由于Adobe Reader用于在某些情况下从字段值重新创建现场外观,所以似乎并不关心。

当表单字段被展平时,该错误的外观内容流变为xobject内容流。 Reader无法再修复此语法错误(毕竟没有任何字段可以使用其值)。因此,您会收到错误消息。

问题本身位于第7页,而不是6(一旦Reader开始呈现第7页,它就会出现)。它是CountryOfIssuance[0]中对象910中的字段Form-I-9.pdf的外观流,它在展平的testFormI9.pdf中成为对象43 0:

q
1 1 273.543 13.12 re
W
n
BT
/CourierNewPSMT 10 Tf
2 5.8549 Td
17.01 TL
 Tj
ET
Q

如您所见,缺少 Tj 操作的参数。