Почему метод 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 "Флажки")
Что касается вашего вопроса, поэтому:
Это значения по умолчанию? У каждого программного обеспечения для создания форм разные значения по умолчанию?
Одно состояние флажка всегда выключено, имя проверенного состояния можно выбрать произвольно, но, вероятно, многие формы будут следовать примеру выше и использовать Да. Таким образом, ожидайте найти Да часто, но будьте готовы справиться с чем угодно.