所以我使用这个PdfFormField.createRadioButton()创建一个无线电组,然后调用setFieldName()。
但是,PdfAnnotation不显示存储字段名称的任何键。我查看了PdfAnnotation中的其他字典但找不到任何字典。
reader.getAcroFields()。getFields()。keySet()会列出表单字段的字段名称,但我想询问是否有任何方法通过PdfAnnotation?
我尝试在自定义组对象中放置一个自定义PdfName,但它没有显示在PdfAnnotation的字典中。
答案 0 :(得分:3)
您混淆了注释的概念(链接注释,文件附件注释,窗口小部件注释......)和表单域(文本字段,选择字段,按钮字段,签名字段)。
在iText 5中,注释在名为PdfAnnotation
的类中处理;表单字段在名为PdfFormField
的类中处理。您正在尝试使用类PdfFormField
执行特定于PdfAnnotation
的操作。那是错的。
我理解混淆的根源:每个可见表单字段与至少一个窗口小部件注释相对应。大多数可见表单字段与恰好一个小部件注释相对应。这就是为什么我们在iText 5中做出设计选择,让PdfFormField
扩展PdfAnnotation
。
此设计选择符合PDF规范,其中表示与单个窗口小部件注释对应的字段的字段字典可以合并为单个PDF字典。
在实践中,您将在PDF中找到PDF词典,这些词典结合了窗口小部件注释词典和字典词典的典型条目。 (这也解释了为什么iText中有一个getMerged()
方法:该方法可以获得合并的字典对象。)
我希望这已经解释了你问题的一部分。你似乎也有另一个问题,但我不明白你想做什么。请使用ISO-32000-1的引用来澄清,以便人们可以了解您尝试实施的技术特性。