实施 PDF 单选按钮字段时出现问题
Problem implementing PDF radio button fields
我目前正在为 HexaPDF 实现对 AcroForm 的支持。复选框已经可以正常工作了,但是单选按钮让我很头疼。
我创建了一个带有两个单选按钮的 simple PDF。据我所知,生成的 PDF 包含所需的对象,并且是根据 PDF 1.7 规范构建的。但是,至少在 Adobe Reader 和 Evince 中单击单选按钮没有任何作用。
来自 PDF:
有单选按钮字段(对象6):
<<
/FT /Btn
/T (Radio)
/V /card1
/Ff 98304
/Kids [7 0 R 8 0 R ]
>>
然后是两个widget注解(对象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 文件进行比较并没有让我对单选按钮进行任何更改以使其正常工作。
如能指出我做错了什么,我将不胜感激 - 谢谢!
事实证明,字段标志 /Ff
是由于古老的“off by one”索引错误而错误设置的。 PDF 规范在位描述中使用基于 1 的索引,Ruby 在访问整数的各个位时使用基于 0 的索引。
因此未设置“单选”位,因此按钮无法工作,因为它们不是单选按钮。
更改索引后,现在可以在查看器中正常查看 PDF。
我目前正在为 HexaPDF 实现对 AcroForm 的支持。复选框已经可以正常工作了,但是单选按钮让我很头疼。
我创建了一个带有两个单选按钮的 simple PDF。据我所知,生成的 PDF 包含所需的对象,并且是根据 PDF 1.7 规范构建的。但是,至少在 Adobe Reader 和 Evince 中单击单选按钮没有任何作用。
来自 PDF:
有单选按钮字段(对象6):
<< /FT /Btn /T (Radio) /V /card1 /Ff 98304 /Kids [7 0 R 8 0 R ] >>
然后是两个widget注解(对象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 文件进行比较并没有让我对单选按钮进行任何更改以使其正常工作。
如能指出我做错了什么,我将不胜感激 - 谢谢!
事实证明,字段标志 /Ff
是由于古老的“off by one”索引错误而错误设置的。 PDF 规范在位描述中使用基于 1 的索引,Ruby 在访问整数的各个位时使用基于 0 的索引。
因此未设置“单选”位,因此按钮无法工作,因为它们不是单选按钮。
更改索引后,现在可以在查看器中正常查看 PDF。