2

因此,我使用此 PdfFormField.createRadioButton() 创建了一个无线电组,然后调用 setFieldName()。

但是,PdfAnnotation 不显示任何存储字段名称的键。我查看了 PdfAnnotation 中的其他字典,但找不到任何字典。

reader.getAcroFields().getFields().keySet() 确实列出了表单字段的字段名称,但我想问一下是否有任何方法可以通过 PdfAnnotation?

我试图将自定义 PdfName 放在无线电组对象中,但它没有出现在 PdfAnnotation 的字典中。

4

1 回答 1

3

您混淆了注释(链接注释、文件附件注释、小部件注释……)和表单字段(文本字段、选择字段、按钮字段、签名字段)的概念。

PdfAnnotation在 iText 5 中,注释在名为;的类中处理。表单字段在一个名为PdfFormField. 您正在尝试做一些特定于PdfFormField使用类的事情PdfAnnotation。那是错误的。

我理解混乱的根源:每个可见的表单字段都至少对应一个小部件注释。大多数可见的表单字段都与一个小部件注释相对应。这就是为什么我们在 iText 5 中选择了PdfFormFieldextends PdfAnnotation

这种设计选择符合 PDF 规范,其中规定与单个小部件注释对应的字段的字段字典可以合并到单个 PDF 字典中。

在实践中,您会在 PDF 中找到结合了小部件注释字典和字段字典的典型条目的 PDF 字典。(这也解释了为什么getMerged()iText 中有一个方法:该方法为您提供合并的字典对象。)

我希望这已经解释了您的部分问题。你似乎还有另一个问题,但我不明白你想做什么。请澄清使用对 ISO-32000-1 的引用,以便人们了解您正在尝试实施的技术功能。

于 2017-01-06T07:15:51.140 回答