为什么 iText form.getAppearanceStates(key) 方法 return 复选框字段的值不一致?

Why iText form.getAppearanceStates(key) method return inconsistent values for Check Box field?

我有使用 Adob​​e Acrobat Standard DC 创建的带有 acroForm 的 PDF。

我使用 Java iText 5 填充了 Chekcbox 字段。 而且我不明白为什么,恕我直言,form.getAppearanceStates(key) 方法 return 这个字段的值不一致。

String[] states = form.getAppearanceStates(key); 

为什么我发现它们不一致,因为值是: ["Off", "Yes"]

这些是默认值吗?每个表单创建软件都有不同的默认值吗?为什么我会问这个问题,因为我的软件可以用于以多种不同方式创建的文档。我正在尝试解决我代码中的所有情况。

我知道我可以在此字段的选项中更改导出值,但默认值总是 "Yes" 吗?并且默认未选中的值将始终为 "Off"?

恕我直言,一致的价值观如下: ["On", "Off"] 要么 ["Yes", "No"]

这个"inconsistency"是基于PDF格式的,规范强制未选中状态命名为Off,而选中状态的名称可以自由选择,在一个示例中,它使用 Yes 作为选中状态的名称:

The appearance for the off state is optional but, if present, shall be stored in the appearance dictionary under the name Off.

...

EXAMPLE 1 This example shows a typical check box definition.

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 节 "Check boxes")

关于您的问题,因此:

Are these default values? Does each form creation software has different default values?

一个复选框状态总是Off,勾选状态的名称可以自由选择,但可能很多表单会按照上面的例子使用Yes。因此,希望经常找到 Yes,但要准备好处理任何事情。