Автоматические Boolean-стили и подписи XFA

Модули: HPDFXFA и HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF потребляет эффективные свойства checkButton и создаёт нативные appearance stream для checkbox и radio из фактической раскладки XFA

Маркеры и границы

Размер checkButton по умолчанию 10pt и управляет квадратной областью маркера внутри области содержимого поля; явные измерения размера, поля field и UI и выравнивание абзаца по горизонтали и вертикали определяют его позицию

Формы square и round определяют границу; дефолтный установленный маркер — крест для квадратной границы и заполненный круг для круглой, следуя спецификации checkButton XFA 3.3

Явные метки check, circle, cross, diamond, square и star используют настоящие векторные пути; они не зависят от наличия символа checkbox в переданном шрифте

Первая грань UI-границы даёт толщину, цвет и видимость; дефолтная граница чёрная и шириной 0.5pt, а эффективный цвет шрифта поля задаёт цвет установленного маркера

Маркер сжимается до оставшейся области содержимого, когда его сконфигурированный размер превышает её; подпись или поле, не оставляющие области содержимого, проваливают подготовку кандидата

Скалярные Unicode-подписи

Скалярный текст подписи сохраняет Unicode и разделители буквально и становится настоящим Form XObject со встроенным шрифтом, на который ссылаются все appearance off, on и neutral этого виджета

Подпись разделяет один appearance и граф шрифтов между своими состояниями, а её единицы UTF-16 считаются один раз на виджет в TXFAHeadlessPDFResult.GlyphUnits

Left и right резервируют ширину подписи, а top и bottom — высоту; опущенный или нулевой reserve использует фактические глифовые advance и метрики строк переданного шрифта для вычисления естественного размера подписи

Встроенные подписи предшествуют маркеру и игнорируют явный reserve; поля подписи задают отступ текста внутри выделенной ему области

Размер и цвет заливки шрифта подписи переопределяют размер и цвет поля; выравнивание абзаца подписи переопределяет выравнивание поля, а CaptionFontFamilies может поставить фактические начертания и именованные семейства

Скрытые и неактивные подписи не занимают область и не выделяют граф шрифтов; невидимые подписи сохраняют свою область, но не рисуют и не выделяют глифы подписи

Потребитель rich-подписей дополнительно потребляет эффективный XHTML, реальные сконфигурированные начертания и выбор семейств, смешанные метрики строк и высоты перенесённых подписей

Третьи состояния checkbox

Когда allowNeutral включён, третий сохранённый элемент — это нейтральный экспорт checkbox; совпадающие значения удерживают отдельный нативный /V и виджет /AS со своей записью /AP /N

Нейтральный appearance рисует пустую границу и ту же подпись; установленный маркер он не рисует

Массив /Opt checkbox удерживает одну запись on-экспорта для своего единственного виджета, как того требует модель кнопочных полей PDF; третье сохранённое состояние appearance не добавляет второй вариант виджета

Пустые экспорты, зарезервированное имя Off и имена, начинающиеся с XFAOn, получают свободные от коллизий нативные алиасы состояний — их байты UTF-8 в верхнем шестнадцатеричном виде после XFAOn; третий исходный экспорт можно восстановить по имени сохранённого состояния

Член radio игнорирует третий элемент и сохраняет существующий двухсостояционный словарь appearance и групповую идентичность областей шаблона и данных

Адаптер сохраняет исходный граф состояний; последующая нативная операция правки кнопки приложения имеет собственный контракт состояний и appearance

Нативные свойства экземпляров и транзакции

Дефолты размера, формы, метки и allowNeutral checkButton доступны через нативную схему рантайма; отсутствующие свойства границы и поля checkButton можно создать через существующую транзакцию свойств

Эффективные свойства checkButton, caption, font и margin повторяющихся экземпляров переживают SaveToBytes и сразу управляют соответствующим автоматически созданным PDF-виджетом; первое повторяющееся вхождение сохраняет независимые свойства

Литеральный исходник событий UTF-8 и Unicode-значения привязок сохраняют свои скаляры до конвертации сохранённого XDP, включая текст подписи, изменённый нативным событием JavaScript; см. HPDFXFAExecuteJavaScriptEvent

Сбой скрипта восстанавливает точный нативный XML до создания, а сбои подготовки сохраняют позицию, длину и байты назначения; бюджеты глифов, объектов и шрифтов и отмена сохраняют границу транзакции автоматического создателя

Источники приёмки

Tests/Linux/XFAHeadlessBooleanStylesTests.pas создаёт настоящие пары маркеров, подписи, нейтральные и зарезервированные состояния, изменения скриптов в повторяющихся экземплярах и случаи rollback без UI читалки

Tests/Linux/Verify-XFAHeadlessBooleanStyles.py проверяет фактические сохранённые словари состояний, общие ресурсы шрифтов, размещение подписей, Unicode-текст и различающиеся пиксели маркеров с помощью pypdf и MuPDF

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