如何从 PdfAnnotation 中提取 PdfFormField 的字段名
How to extract fieldname of PdfFormField from PdfAnnotation
所以我使用 PdfFormField.createRadioButton() 创建了一个无线电组,然后调用 setFieldName()。
但是,PdfAnnotation 不显示任何存储字段名称的键。我查看了 PdfAnnotation 中的其他词典,但找不到。
reader.getAcroFields().getFields().keySet() 确实列出了表单字段的字段名称,但我想问一下是否有任何方法可以通过 PdfAnnotation?
我尝试将自定义 PdfName 放入单选组对象中,但它没有显示在 PdfAnnotation 的字典中。
您混淆了注释(link 注释、文件附件注释、小部件注释...)和表单字段(文本字段、选择字段、按钮字段、签名字段)的概念。
在 iText 5 中,注释在名为 PdfAnnotation
的 class 中处理;表单字段在名为 PdfFormField
的 class 中处理。您正在尝试使用 class PdfAnnotation
做一些特定于 PdfFormField
的事情。错了。
我理解混乱的根源:每个 visible 表单字段对应于 至少一个 小部件注释。大多数 visible 表单字段对应 exactly one 小部件注释。这就是为什么我们在 iText 5 中做出设计选择,让 PdfFormField
扩展 PdfAnnotation
.
此设计选择符合 PDF 规范,其中规定与单个小部件注释对应的字段的字段字典可以合并到单个 PDF 字典中。
在实践中,您会发现 PDF 中的 PDF 词典结合了小部件注释词典和字段词典的典型条目。 (这也解释了为什么 iText 中有一个 getMerged()
方法:该方法为您提供合并的字典对象。)
我希望这已经解释了您的部分问题。你似乎也有另一个问题,但我不明白你想做什么。请澄清使用对 ISO-32000-1 的引用,以便人们可以理解您要实现的技术特性。
所以我使用 PdfFormField.createRadioButton() 创建了一个无线电组,然后调用 setFieldName()。
但是,PdfAnnotation 不显示任何存储字段名称的键。我查看了 PdfAnnotation 中的其他词典,但找不到。
reader.getAcroFields().getFields().keySet() 确实列出了表单字段的字段名称,但我想问一下是否有任何方法可以通过 PdfAnnotation?
我尝试将自定义 PdfName 放入单选组对象中,但它没有显示在 PdfAnnotation 的字典中。
您混淆了注释(link 注释、文件附件注释、小部件注释...)和表单字段(文本字段、选择字段、按钮字段、签名字段)的概念。
在 iText 5 中,注释在名为 PdfAnnotation
的 class 中处理;表单字段在名为 PdfFormField
的 class 中处理。您正在尝试使用 class PdfAnnotation
做一些特定于 PdfFormField
的事情。错了。
我理解混乱的根源:每个 visible 表单字段对应于 至少一个 小部件注释。大多数 visible 表单字段对应 exactly one 小部件注释。这就是为什么我们在 iText 5 中做出设计选择,让 PdfFormField
扩展 PdfAnnotation
.
此设计选择符合 PDF 规范,其中规定与单个小部件注释对应的字段的字段字典可以合并到单个 PDF 字典中。
在实践中,您会发现 PDF 中的 PDF 词典结合了小部件注释词典和字段词典的典型条目。 (这也解释了为什么 iText 中有一个 getMerged()
方法:该方法为您提供合并的字典对象。)
我希望这已经解释了您的部分问题。你似乎也有另一个问题,但我不明白你想做什么。请澄清使用对 ISO-32000-1 的引用,以便人们可以理解您要实现的技术特性。