Почему метод iText form.getAppearanceStates(key) возвращает противоречивые значения для поля Check Box?

У меня есть PDF с acroForm, который был создан с использованием Adobe Acrobat Standard DC.

Есть поле Chekcbox, которое я заполняю с помощью Java iText 5. И я не понимаю, почему, IMHO, метод form.getAppearanceStates(key) возвращает противоречивые значения для этого поля.

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

Почему я нахожу их несовместимыми, потому что значения:["Off", "Yes"]

Это значения по умолчанию? У каждого программного обеспечения для создания форм разные значения по умолчанию? Почему я спрашиваю об этом, потому что мое программное обеспечение может использоваться с документами, созданными разными способами. Я пытаюсь отработать все случаи в моем коде.

Я знаю, что могу изменить значение экспорта в настройках этого поля, но по умолчанию всегда будет "Да"? И непроверенное значение по умолчанию всегда будет "Выкл"?

Последовательные значения в IMHO будут такими: ["On", "Off"] или ["Yes", "No"]

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 "Флажки")

Что касается вашего вопроса, поэтому:

Это значения по умолчанию? У каждого программного обеспечения для создания форм разные значения по умолчанию?

Одно состояние флажка всегда выключено, имя проверенного состояния можно выбрать произвольно, но, вероятно, многие формы будут следовать примеру выше и использовать Да. Таким образом, ожидайте найти Да часто, но будьте готовы справиться с чем угодно.

Другие вопросы по тегам