用途:创建、读取、编辑和操作 .docx 文档及 .dotx 模板。.docx 本质是 XML 文件的 ZIP 包,需按任务选择方式:新建文档用 docx(npm)脚本;填充模板占位符用 docx 的 patchDocument({ data, outputType, patches });编辑任意现有内容则安全解包、修改相关 OOXML 部件后重新打包;读取内容可用 pandoc -f docx -t markdown --track-changes=all file.docx。
主要能力与用法:新建时注意页面默认 A4,US Letter 需设 page: { size: { width: 12240, height: 15840 } };横向用 PageOrientation.LANDSCAPE;表格固定布局用 TableLayoutType.FIXED 与 DXA 宽度;列表用 LevelFormat.BULLET 而非字面 •;ImageRun 需 type;PageBreak 须在 Paragraph 内;段落用独立 Paragraph,段内换行用 TextRun({ break: 1 })。TOC 需在 Word/LibreOffice 中更新字段后才计算页码。编辑现有文档先转换旧版 .doc,再用 safe_extract 解包、merge_runs.py 合并碎片化 run,直接改 word/document.xml(勿重排格式),再 zip -Xr 打包并用 validate.py 校验。修订需保留作者/日期/ID,用 <w:ins>/<w:del> 包裹,删除文本用 <w:delText>。接受全部修订可用 accept_changes.py。批注用 comment.py 写入 comments 等部件,并需手动放置 commentRangeStart/End/Reference 标记才可见。
适用场景:文档生成、模板填充、批量编辑、审阅与批注、修订接受、PDF 预览校验。
限制:依赖 docx(npm)、Python defusedxml 与 lxml、pandoc、LibreOffice、pdftoppm;无需凭据或服务 API。merge_runs.py 仅处理 word/document.xml,不覆盖页眉页脚等其它故事;校验器基于 2016 schema,非完整兼容性判定;redlining 检查仅覆盖正文文本。Microsoft Word 与 Google Docs 渲染未测试。