pdf,外观流,焦点丢失后复选框未正确显示

Posted

技术标签:

【中文标题】pdf,外观流,焦点丢失后复选框未正确显示【英文标题】:pdf, appearance streams, checkbox not shown correctly after focus lost 【发布时间】:2013-03-18 14:55:57 【问题描述】:

我正在开发一个程序,将交互式表单生成为 PDF 文件。

生成的文件是here(源代码可读)。复选框位于页面底部。获得焦点后,它被正确渲染(带有红色/蓝色边框的白色正方形),在失去焦点后,正方形消失并显示默认外观(这对我来说不正确)。

在 Acrobat 9、X、XI 中 在内置的 chrome pdf 查看器中运行良好 Adobe XI Pro - 预检 - 显示警告“表单域有多个外观”

我找不到错误。

感谢您的帮助。

那里描述的相同(相似)问题: http://forums.adobe.com/message/5144579#5144579

----这是pdf文件的一部分,我预计会出错

2 0 obj
<<
  /Type /Catalog
  /Pages 1 0 R
  /OutputIntents [7 0 R]
  /Metadata 8 0 R
  /PageLabels 10 0 R
  /AcroForm 14 0 R
>>

endobj

14 0 obj
<< 
  /Fields [13 0 R] 
>>
endobj

13 0 obj
<<
  /Type /Annot
  /Subtype /Widget
  /Rect [20.0 20.0 120.0 120.0]
  /FT /Btn
  /F 4
  /T (name)
  /AS /Yes
  /V /Yes
  /AP << 
        /N <<
             /Yes 11 0 R
             /Off 12 0 R >>
   >>
>>
endobj


11 0 obj
<<
  /Type /XObject
  /SubType /Form
  /BBox [20.0 20.0 120.0 120.0]
  /Length 19 0 R
>>
stream
  ....
endstream
endobj

12 0 obj
<<
  /Type /XObject
  /SubType /Form
  /BBox [20.0 20.0 120.0 120.0]
  /Length 20 0 R
>>
stream
  ....
endstream
endobj

【问题讨论】:

请贴出代码的亮点,方便所有想帮助你的人。 【参考方案1】:

我对您的 PDF 的观察有些不同,但仍然很有趣:

Adobe Acrobat 9 Pro v9.5.4(禁用 PDF/A r/o 视图)完全符合您最初的预期:它只使用红色或蓝色框框。但是,如果一个人切换了该复选框,即使再次切换,它也希望保存一个对您的字段进行一些更改的新修订。

Adobe Reader X! v11.0.2 以 PDF/A 只读模式启动并显示红框。但是,在离开该 r/o 模式后,它会显示默认的交叉外观。当它获得焦点时,它再次使用红色和蓝色框架。当它失去焦点时,它会回到默认外观。

我在 Adob​​e Reader X 中观察到的行为!似乎是您在更多情况下观察到的情况。

因此本质上问题是在某些情况下(对我来说:不在 PDF/A r/o 模式下,不关注表单字段)一些 PDF vewers(对我来说:Adobe Reader XI)不使用您的自定义复选框外观,但有一些标准外观,您认为这是不正确

不幸的是,在 PDF 规范 ISO 32000-1:2008 中有一个提示,根据该提示,查看者可能(甚至可能应该)这样做。 12.5.6.19 节中的表 189 Widget Annotations 解释了外观特征字典中的条目(小部件字典中 /MK 的值;您不提供一个,因此应用默认值),其中/CA

文本字符串(可选;仅限按钮字段)小部件注释的普通标题, 不与用户交互时显示。

与此表中列出的其余条目不同,这些条目仅适用于 与按钮字段关联的小部件注释(请参阅 12.7.4.2,“按钮字段”),CA 条目可以与任何类型的 按钮字段,包括复选框(请参阅 12.7.4.2 中的复选框,“按钮 字段”)和单选按钮(12.7.4.2 中的单选按钮,“按钮字段”)。

特别是复选框,因此,只要不与用户交互,使用他们的正常标题显示,而不是他们的出现。

当表单字段没有焦点时,Adobe Reader 似乎认为表单没有与用户交互,因此切换到显示标题而不是外观。

不幸的是,您可以为按钮定义的正常标题只是一个文本字符串,默认情况下似乎在 Zapf Dingbats 字体的上下文中进行解释(例如,尝试/MK&lt;&lt;/CA(1)&gt;&gt;)。不过,这是您应该继续寻找的地方,也许您可​​以使用您的设计中包含蓝色和红色方框的某些 Type 3 字体。

【讨论】:

是否可以“停用”该行为以便始终保持正常外观? @Lonzak 是否可以“停用”该行为 - PDF 规范要求此行为。因此,我怀疑它可以被停用;可能有一些不起眼的 PDF 查看器高级设置......但我真的怀疑它。

以上是关于pdf,外观流,焦点丢失后复选框未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

PDFBox 字段值在展平后无法显示

复选框在颤动中丢失了检查值

在 WPF 中加载的控件上显示焦点元素

winform 基础

复选标记未显示在 UITableView 中的 iPad 上

未正确读取复选框值