0

我目前正在为HexaPDF实现对 AcroForm 的支持。复选框已经可以正常工作,但单选按钮让我头疼。

我创建了一个带有两个单选按钮的简单 PDF 。据我所知,生成的 PDF 包含所需的对象,并且根据 PDF 1.7 规范构建。但是,至少在 Adob​​e Reader 和 Evince 中,单击单选按钮什么也没做。

从PDF:

  • 有单选按钮字段(对象 6):

    <<
      /FT /Btn
      /T (Radio)
      /V /card1
      /Ff 98304
      /Kids [7 0 R 8 0 R ]
    >>
    
  • 然后是两个小部件注释(对象 7 和 8,仅显示了 7 个):

    <<
      /Type /Annot
      /Subtype /Widget
      /Rect [200 500 250 550 ]
      /AP <<
        /N <<
          /card1 10 0 R
          /Off 9 0 R
        >>
      >>
      /MK <<
        /BC [0.0 ]
        /BG [1.0 ]
        /CA (l)
      >>
      /BS <<
        /W 1
        /S /S
      >>
      /Parent 6 0 R
      /AS /card1
      /F 4
    >>
    

将提供的文件与使用其他工具创建的 PDF 文件进行比较并没有让我对单选按钮进行任何更改以使其正常工作。

对于我做错了什么,我将不胜感激 - 谢谢!

4

1 回答 1

0

事实证明,/Ff由于古老的“off by one”索引错误,错误地设置了字段标志。PDF 规范在位描述中使用基于 1 的索引,Ruby 在访问整数的各个位时使用基于 0 的索引。

因此未设置“单选”位,因此按钮无法工作,因为它们不是单选按钮。

更改索引后,现在可以在查看器中正常查看 PDF。

于 2020-07-17T10:08:26.257 回答