Автоматическое создание выборов и 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 и поля подписей остаются отдельной интеграционной работой

Метаданные выборов документируют аддитивные подсказки колбэков, используемые этими нативными потребителями