Создание отсутствующих свойств XFA

Модуль: HPDFXFAEventScript, интегрирован через HPDFXFARuntime и HPDFXFA

Доступ из событий

Узлы форм JavaScript открывают getElement(className, occurrence=0); отсутствующее поддерживаемое свойство создаётся с дефолтами схемы, а повторный доступ возвращает тот же живой хэндл свойства

Прямой доступ к свойствам, например field.font или draw.para, создаёт вхождение ноль, когда поддерживаемый ребёнок отсутствует

const label = xfa.form.resolveNode("main.row[1].label");
const font = label.getElement("font", 0);
font.typeface = "Helvetica";
font.size = "18pt";
font.fill.color.value = "0,128,255";
label.para.hAlign = "right";
label.border.getElement("edge", 3).thickness = "0.25pt";

Аргумент вхождения должен быть неотрицательным целым в пределах кардинальности схемы; запрос edge[3] создаёт предшествующие отсутствующие вхождения edge, каждое со своими дефолтами схемы

Поддерживаемые пути создания

Родительский классПоддерживаемые дети и максимум вхождений
fieldassist, bind, border, calculate, caption, desc, extras, font, format, keep, margin, para, traversal, ui, validate и value: по одному; items: два
drawassist, border, caption, desc, extras, font, keep, margin, para, traversal, ui и value: по одному
uiextras и picture: по одному; один взаимоисключающий выбор виджета, как описано в Переопределения свойств UI
passwordEdit, choiceList и checkButtonborder, extras и margin: по одному
fontextras и fill: по одному
parahyphenation: один
borderedge и corner: по четыре; extras, fill и margin: по одному
captionextras, font, margin, para и value: по одному
marginextras: один
fillcolor и extras: по одному; linear, pattern, radial, solid и stipple: один взаимоисключающий ребёнок
textEditborder, comb, extras и margin: по одному
edge и cornercolor и extras: по одному

Неперечисленные дочерние классы возвращают из getElement null; недопустимые вхождения и конфликтующие дети выбора fill проваливают транзакцию события

Создание контейнеров метаданных не выполняет заново сохранённые скрипты; поведение event, calculate и validate следует существующей модели выполнения рантайма

Нативное сохранение и идентичность

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

Следующее событие перестраивает привязки свойств только формы из сохранённого нативного packet формы, поэтому и прямой доступ, и SOM-разрешение видят созданную иерархию

Удерживаемые ссылки script objects продолжают указывать на нативное свойство после успешных транзакций и вставки экземпляров; запись по ссылке после удаления её экземпляра проваливается и восстанавливает транзакцию

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

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

Эффективные потребители и сохраняемый PDF-вывод

Потребители полей и rich draw читают созданные свойства font, fill/color, абзаца и border/edge во время фактической раскладки и уплощения; последующие события и перезагрузки сохранённого XDP сохраняют эти значения

При THotPDF.AutoFormAppearances=True текстовые поля XFA генерируют свой нативный appearance после применения эффективного стиля, включая поддерживаемые стандартные семейства шрифтов, размер в пунктах, цвет текста, выравнивание и цвет и ширину сплошной границы

AutoFormAppearances остаётся явной опцией документа; его дефолт False по-прежнему полагается на генерацию appearance читалкой

Покрытие создания и покрытие потребителей форматирования разделены: дополнительные дочерние классы значений и схемы виджетов, общие классы схемы, удаление/перепривязка свойств, более богатый текст виджетов и встраивание Unicode-внешности остаются активными целями реализации

Связанные API

Нативный Property DOM XFA, Дефолты схемы свойств XFA, TXFAEventAction и TXFAEventBinding