原生 XFA 缺失属性创建

Unit: HPDFXFAEventScript,经 HPDFXFARuntime 和 HPDFXFA 集成

事件访问

JavaScript 表单节点暴露 getElement(className, occurrence=0);受支持的缺失属性以 schema 默认值创建,重复访问返回同一实时属性句柄

直接属性访问(如 field.font 或 draw.para)在受支持的子节点缺失时创建 occurrence 零

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";

occurrence 参数必须是非负整数且不超过 schema 基数;请求 edge[3] 会先创建前面缺失的 edge occurrence,各自带自己的 schema 默认值

受支持的创建路径

父类受支持的子节点与最大 occurrence 数
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:各一;一个互斥 widget 选项,见 UI Property Overrides
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;无效 occurrence 和冲突的 fill 选项子节点会使事件事务失败

创建元数据容器不会执行新存入的脚本;event、calculate 和 validate 行为遵循既有运行时执行模型

原生持久化与标识

创建和后续写入在选定的重复 occurrence 之下发布真实的原生表单包节点;模板与其他 occurrence 保留其原始值

下一个事件从保存的原生表单包重建表单专属属性绑定,因此直接访问和 SOM 解析都能看到创建出的层级

事务成功和实例插入后,脚本对象保留的引用继续指向该原生属性;实例被移除后写引用会失败并恢复事务

克隆重复原型时同样克隆其表单专属属性结构,新属性属性使用 schema 默认值而不是另一 occurrence 的覆盖

引擎失败和原生变更失败恢复原生字节、属性节点、datasets、脚本状态和实例顺序;创建共享节点、操作、深度、字节和值预算

生效消费者与保存的 PDF 输出

字段与富 draw 消费者在实际布局和 flatten 期间读取创建的 font、fill/color、paragraph 和 border/edge 属性;后续事件和保存的 XDP 重载保留这些值

THotPDF.AutoFormAppearances=True 时,XFA 文本字段在生效样式应用后生成其原生外观,包括受支持的标准字族、点大小、文本颜色、对齐以及实线边框颜色和宽度

AutoFormAppearances 仍是显式文档选项;默认 False 继续依赖阅读器生成外观

创建与格式化消费者覆盖是分离的:更多 value 子类与 widget schema、通用 schema 类、属性删除/重新挂载父级、更丰富的 widget 文本和 Unicode 外观嵌入仍是进行中的实现目标

Related APIs

Native XFA Property DOM, XFA Property Schema Defaults, TXFAEventAction 和 TXFAEventBinding