要使用iText操作radiobuttons,我知道如何获取字段名称并使用AcroFields.getAppearanceStates来获取它们的可能值。但我无法找到任何方法来确定选择了哪个选项。它是iText中缺少的功能吗?
答案 0 :(得分:0)
是的radiobutton可能令人困惑 - 但这更多是由于它们在PDF规范中的定义,而不一定是由于iText。 实际上,外观状态(在孩子中)应该指示选择了哪个值。 (父项的(/ V)值还应包含所选值)。您可以通过迭代子项并提取其外观词典来找到哪些可能的值(Yes1,Yes2和Yes3)。如果(可选)选项数组(例如/ Opt [(Yes1)(Yes2)(Yes3)])确实存在,则可能存在快捷方式。
让我们举一个例子:
//The Parent Object aka radio button group
4 0 obj
<</FT/Btn/Ff 49154/Kids[97 0 R 102 0 R 107 0 R]/T(RadiobuttonGroup)/V/Yes2>>
endobj
//child 1
97 0 obj
<</AP<</N<</Yes1 98 0 R/Off 99 0 R>>>>/AS/Off/BS<</S/I/W 1>>/F 4/MK<</BC[0.0]/BG[1.0]/CA(l)>>/P 19 0 R/Parent 4 0 R/Rect[502 770 515 781]/Subtype/Widget/Type/Annot>>
endobj
//child 2
102 0 obj
<</AP<</N<</Yes2 98 0 R/Off 99 0 R>>>>/AS/Ja2/BS<</S/I/W 1>>/F 4/MK<</BC[0.0]/BG[1.0]/CA(l)>>/P 19 0 R/Parent 4 0 R/Rect[522 770 535 782]/Subtype/Widget/Type/Annot>>
endobj
//child 3
107 0 obj
<</AP<</N<</Yes3 98 0 R/Off 99 0 R>>>>/AS/Off/BS<</S/I/W 1>>/F 4/MK<</BC[0.0]/BG[1.0]/CA(l)>>/P 19 0 R/Parent 4 0 R/Rect[540 770 553 782]/Subtype/Widget/Type/Annot>>
endobj
如您所见:在child2的AS中选择的实际值(a)和在父级的值(/ V)中选择的(b)。