首页 文章

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

提问于
浏览
0

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

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

我还发送了pdfs的链接(带有acrofields的pdf和标记为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 回答

  • 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:

    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 操作的参数 .

相关问题