ADR-0016:DOCX 原生字段与显式导入宽度
- 状态:已采用。
- 日期:2026-10-15。
背景
PDF 路径已有固定宽度的行内字段。继续拒绝全部 DOCX 字段会丢失文档语义;直接把 PDF 解析值写成文本又会把两种格式的分页混为一谈。标准 Word 字段自行排版,既不包含引擎宽度,也不保证与引擎分页一致。
决策
- DOCX 直接映射 PAGE、NUMPAGES、PAGEREF 和完整段落编号 REF。标准书签指向被引用块,初始缓存为空,由 Word 更新。
- 以可忽略的
od:width保存引擎预留宽度。缺少属性时必须由调用方显式配置默认导入宽度,或按损失策略保留缓存文字;不从缓存推测几何。 - 导入仅解释白名单指令。支持简单字段和扁平复杂字段,严查控制符、目标、样式和资源预算;任意字段均不触发外部请求。
- PAGEREF 只接受块起点书签;REF 编号只接受单个十进制编号段落。不能表示的字段在严格模式失败,允许损失时返回诊断和支持的缓存文字。
- Word 16.0 实测重复表头 PAGE 会复用缓存,不能保持引擎逐次解析的语义。导出明确拒绝此组合,保留重复表头总页数和固定目标引用。
- 未支持的注释标记、题注、目标、字段及包预算在写出任何 ZIP 字节前失败。
结果
字段可与图片、外链和表格富文本共同往返,UTF-16 原文索引保持一致。Word 可独立更新页码、分节引用和编号,模型不依赖 PDF 布局完成 DOCX 导出。
Word 保存会移除自有宽度等属性;一般 Word 文档仍需显式宽度与损失诊断审查。此决策不承诺 Word 与 PDF 的页数、外观或一般文档无损互转一致,也不扩展脚注、目录、修订和表单的 Word 映射。验证见阶段十二。