Автоматическое создание выборов и boolean в XFA
Модуль: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF потребляет фактическую раскладку XFA и конструирует поля выбора, виджеты checkbox, родителей и членов radio без подготовленных PDF-слотов
Поля выбора
Поля combo и list используют нативные словари /FT /Ch; отдельные списки отображения и сохранения XFA становятся парами экспорта/отображения /Opt с сохранением Unicode, разделителей, явных пустых экспортов, типизированных скалярных элементов и окружающего пробела экспорта
Редактируемый combo сохраняет своё свободное текстовое значение; нередактируемый выбор требует, чтобы выбранный экспорт существовал в его списке вариантов
Значения multi-select становятся упорядоченным нативным массивом /V и совпадающими индексами /I в порядке вариантов; обычный ввод только значений использует разделённые переводами строк экспорты и отклоняет дублирующиеся выбранные значения при подготовке
Скриптинг элементов выбора сохраняет точные явные индексы для дублирующихся и пустых экспортов через сохранённый XDP, поэтому их PDF-массивы /I, экспортируемые значения /V и appearance меток отображения остаются однозначными
Валидация дублирующегося выбора сравнивает точные строки без переупорядочивания авторского списка выбора; пирамидальная сортировка индексов заменяет квадратичные попарные сравнения и проверяет отмену на протяжении проверки уникальности
Текст appearance выбора использует метки отображения, а /V — значения экспорта; внешность списков содержит измеренное видимое окно с первым выбором, точный верхний индекс /TI и относительные подсветки выбранных строк, сохраняя полный граф вариантов
Нативные флаги combo, edit, multi-select, фиксации выбора и readOnly используют точные целочисленные токены PDF, чтобы старший бит флага не мог стереть бит readOnly
Состояния checkbox и radio
Checkbox содержат настоящие Form XObjects состояний Off и on; Boolean-стили и подписи потребляют фактические формы маркеров, размер, границы UI, цвета поля, скалярные Unicode-подписи и третьи состояния checkbox, не полагаясь на символ галочки в переданном шрифте
Нативный /Opt сохраняет значение экспорта XFA; зарезервированный экспорт Off и экспорты, начинающиеся с XFAOn, получают свободные от коллизий алиасы активного состояния, а их фактические строки экспорта в /Opt остаются неизменными
Члены radio разделяют одного нативного родителя на путь exclusion-group шаблона и путь нативного контекста данных; повторяющиеся группы получают независимые /Kids, /V, /Opt и состояния /AS виджетов, даже когда их отображаемые имена групп совпадают
Одинаковые экспорты внутри одной группы radio устанавливают RadiosInUnison и активируют каждого соответствующего члена; общесимвольная политика редактирования и доступ exclusion-group определяют флаг readOnly родителя
Раскладка exclusion-group tb и lr-tb диспетчируется с текущей нативной областью данных, а позиционированные exclusion groups применяют собственное начало x/y к своим членам
Сохранение в рантайме и подготовка
Чтение и присваивание rawValue exclusion-group участвуют в существующей нативной транзакции событий, связывая ячейки, синхронизацию формы/данных и rollback; сохранённый runtime XDP можно передать автоматическому создателю напрямую
Приёмочная фикстура мутирует второй повторяющийся combo, checkbox и exclusion group, немедленно читает группу через её data-алиас, сохраняет XDP и независимо проверяет значения, состояния и appearance результирующего PDF, сохраняя первый экземпляр
Все сбои подготовки кандидата сохраняют байты, длину и позицию назначения; массивы вариантов выбора, имена полей, boolean-экспорты, счётчики виджетов, выделения графа и агрегированный текст appearance сохраняют существующие ресурсные лимиты
Сбой ввода-вывода назначения сохраняет границу потока вызывающего, описанную в Автоматическое создание нативного PDF из XFA
Оставшаяся работа потребителей
Rich-подписи, размер подписи с переносом, стили границ по граням и с заливкой, последующие фиксации состояний виджетов, последующий интерактивный скроллинг списков, неоднозначность value-only для экспортов с переводами строк, продвинутые раскладки exclusion-group и поля подписей остаются отдельной интеграционной работой
Метаданные выборов документируют аддитивные подсказки колбэков, используемые этими нативными потребителями