我的PDF是使用Adobe Acrobat Standard DC创建的acroForm。
我使用Java iText 5填充了Chekcbox字段。 我不明白为什么,恕我直言,form.getAppearanceStates(key)方法返回此字段的不一致值。
String[] states = form.getAppearanceStates(key);
为什么我发现它们不一致,因为值是: ["关闭","是"]
这些是默认值吗?每个表单创建软件都有不同的默认值吗?我为什么要问这个问题,因为我的软件可以用于以多种不同方式创建的文档。我试图在我的代码中解决所有情况。
我知道我可以在此字段的选项中更改导出值,但默认情况下将始终为"是"?并且默认未选中的值将始终为"关"?
恕我直言中的一致价值如下: [" On"," Off"] 要么 ["是","否"]
答案 0 :(得分:1)
这种“不一致”基于PDF格式,规范强制将未经检查的状态命名为关,同时可以自由选择已检查状态的名称,并在示例中使用是作为已检查状态的名称:
关闭状态的外观是可选的,但如果存在,则应以关闭的名称存储在外观字典中。
...
示例1此示例显示了典型的复选框定义。
1 0 obj <</Type /Annot /Subtype /Widget /Rect [100 100 120 120] /FT /Btn /T (Urgent) /V /Yes /AS /Yes /AP <</N <</Yes 2 0 R /Off 3 0 R>> >> endobj
(ISO 32000-2:2017,第12.7.5.2.3节“复选框”)
关于你的问题,因此:
这些是默认值吗?每个表单创建软件都有不同的默认值吗?
一个复选框状态始终为关闭,可以自由选择已选中状态的名称,但可能会有许多表单将遵循上面的示例并使用是。因此,期望经常找到是,但随时准备处理任何事情。