自动 XFA 富说明文字
Units: HPDFXFA、HPDFXFAHeadless 与 HPDFHeadlessAppearance
HPDFXFAWriteHeadlessPDF 直接从保存的 XDP 消费生效的复选框与单选 caption 值,创建带嵌入字体的真实原生外观 Form
生效的 caption 内容
标量 caption 值与 exData XHTML body 内容成为原生文本;body 必须使用 http://www.w3.org/1999/xhtml 命名空间
部分重复实例表单覆盖会改变对应模板元素的文本与属性,同时保留未变化的模板同级节点及其 XHTML 命名空间
成功的 exData.loadXML 整载荷替换会供给实际导入的 body,而不是把过时模板内容合并回 caption
注释和处理指令保留在原始保存的 XDP 中,但被排除出渲染副本,因此其载荷永远不会变成可见 caption 文本
渲染副本限制在 4096 个节点、深度 64、65536 次覆盖工作步骤和 1 MiB 计费的源与序列化 XHTML;原生解码器和外观构建器保留各自的 run、glyph 和字节限制
真实字体与样式
提供 CaptionFontFamilies 以获得真实的 regular、bold、italic 和 bold-italic 程序以及命名字族
既有的 原生 XHTML 解码器解析行内样式、段落边界、字族列表、颜色、大小、下划线与删除线格式;标量 caption 的字体大小、字重、姿态、字形和填充色提供默认样式
请求的字体或 glyph 缺失会使准备失败;该消费者不伪造 bold 或 italic 外观,也不查找外部字体
测量与摆放
caption 的测量与绘制使用同一套原生富布局和提供的字体程序,包括实际 glyph advance、各样式特有的 ascent 与 descent、共享行基线和折行
固定的 left 或 right reserve 约束文本宽度;正的 top 或 bottom reserve 允许在可用字段宽度内折行
省略 reserve、为零或 schema 默认 -1 时使用自然 caption 尺寸,不做自动折行;显式段落边界仍是换行,超过固定字段矩形的文本被裁剪
自动 left 和 right caption 使用其自然宽度;inline caption 在测量和摆放时都忽略显式 reserve
caption 边距缩小实际文本区域,caption 的水平与垂直对齐决定最终外观的摆放
reserve 行为遵循 XFA 3.3 caption reserve 定义
自然高度包含最后的字体度量行尺寸加上两侧各两点的原生内边距;不包括最后一行之后未使用的行距
hidden 和 inactive caption 不消耗区域;invisible caption 预留其测量区域,但不绘制、不计入 caption glyph
同一 widget 的 off、on 和 neutral 状态共享一个实际 caption Form;重复实例保留各自独立的内容与样式图
段落 margin 与自定义 line-height CSS、caption 图像等其他非文本 caption 载荷、push-button 富 caption 以及后续的交互式外观重建仍是独立的工作
事务与验收
成功的原生属性事件可以先保存并重新加载,再进行自动 PDF 创建;脚本失败恢复精确的原生 XML 字节,准备预算或取消失败保留目标字节、长度和位置
只有完整候选成功后才开始向目标写入;调用方自身流写入产生的错误遵循该流的语义,对任意不可寻址目标无法回滚
Tests/Linux/XFAHeadlessRichCaptionTests.pas 产出真实的带样式、折行、字族选择和不可见 caption PDF;XFAHeadlessRichCaptionRuntimeTests.pas 覆盖重复覆盖、整 XML 替换和回滚
XFAHeadlessRichCaptionBudgetTests.pas 演练真实资源失败和选定的取消边界,HeadlessTextExtentTests.pas 暴露测量出的原生行尺寸
Verify-XFAHeadlessRichCaptions.py 检查保存的 PDF 图、精确的字体程序字节、共享引用、Unicode 文本、原始文本矩阵、fontTools 度量和 MuPDF 渲染像素,全程不打开阅读器 UI
Read-only TextHeight · Boolean callback metadata · Boolean markers and states