Создание отсутствующих свойств 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, каждое со своими дефолтами схемы
Поддерживаемые пути создания
| Родительский класс | Поддерживаемые дети и максимум вхождений |
|---|---|
| field | assist, bind, border, calculate, caption, desc, extras, font, format, keep, margin, para, traversal, ui, validate и value: по одному; items: два |
| draw | assist, border, caption, desc, extras, font, keep, margin, para, traversal, ui и value: по одному |
| ui | extras и picture: по одному; один взаимоисключающий выбор виджета, как описано в Переопределения свойств UI |
| passwordEdit, choiceList и checkButton | border, extras и margin: по одному |
| font | extras и fill: по одному |
| para | hyphenation: один |
| border | edge и corner: по четыре; extras, fill и margin: по одному |
| caption | extras, font, margin, para и value: по одному |
| margin | extras: один |
| fill | color и extras: по одному; linear, pattern, radial, solid и stipple: один взаимоисключающий ребёнок |
| textEdit | border, comb, extras и margin: по одному |
| edge и corner | color и 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