我想自动填写双AcroForm / XFA PDF表格 . 我包含了一个XFA数据集包,所有值都显示在Adobe Reader中 . 我将AcroForms条目中的 V=
键设置为新值,所有值都显示为替代PDF阅读器 .
但是,当我在Adobe Reader中使用XFA和AcroForm V=
条目打开PDF时,只显示当前所选文本字段的值:
当AcroForms和XFA存在时,我在PDF specification中找不到要设置的特殊标志 . 我假设 XFA
和 Field
键的顺序可能很重要,但事实并非如此 .
如何更改my PDF file以便在启动时在Adobe Reader中以及仅支持AcroForms而非XFA的PDF阅读器中显示这些值?
1 回答
有两个问题需要回答:
为什么Adobe Reader仅在选择字段时显示字段值?
如何确定是否使用AcroForm或XFA?
1.显示的字段值
在某些情况下,Adobe Reader / Acrobat将根据是否选择显示表单字段 . 这对于具有已定义外观的字段而言是典型的,该外观与Reader / Acrobat基于其值(以及可能的某些外观设置)呈现字段的方式不同 .
未选择该字段时,将显示已定义的外观 . 选择该字段后,将显示Reader / Acrobat如何呈现它的预览 .
一些背景:
表单字段由逻辑部分(字段名称,字段值,...)(称为字段字典)和可视化部分(称为窗口小部件注释)组成 . 窗口小部件注释可以选择包含 AP 条目,其中包含定义其可视化的外观流 . 参看PDF规范,1.7,表8.15:
在示例PDF中,没有 AP 条目,即空白可视化 . 这是_2779874的预览,基于字段值 .
您可以通过使用Reader / Acrobat手动更改字段值来验证这一点 . 在这种情况下,将生成并保存新的外观 . 无论选择与否,该字段现在都以相同的方式显示 .
在Reader / Acrobat中防止这些“空白”字段的两个选项:
结果:
内部PDF结构:
true
. 参看PDF规范,1.7,表8.67:这将触发查看器生成所有外观:
2. AcroForm或XFA?
通常,支持XFA的查看器将显示XFA表单 . 没有XFA支持的查看器将使用AcroForm . 您可以通过为相应的AcroForm和XFA字段设置不同的值来验证这一点 . 这就是结果,左侧是Chrome的内置PDF查看器(没有XFA支持),右边是Acrobat:
知道Reader / Acrobat正在使用XFA表格,为什么我们仍然看到空白字段(参见问题1)?
似乎,当XFA字段的值及其相应的AcroForm字段相同时,Reader / Acrobat也使用来自AcroForm的一些信息,即 . 它的外观信息 . 当XFA值与AcroForm值不同时,AcroForm字段似乎完全被忽略 .
TL; DR设置 NeedAppearances 至
true
以解决空白字段 . 无XFA的 Spectator 将自动退回到AcroForm .(我的测试基于Adobe Acrobat X.)