用途:在用户要求生成 Word 文档(报告、信函、合同),或需要读取 .docx 的文本、大纲、样式、内嵌图片,修改现有文档(替换文本、编辑表格单元格、增删段落、应用样式),填充 .docx 模板中的 {{占位符}},审阅修订与批注,排查文件损坏,以及插入目录或“Page X of Y”页脚时使用。不适用于旧版 .doc、.odt 或所见即所得排版。
前置:Python 3.10+,pip install python-docx(导入名为 docx,自带 lxml)。批注添加在 python-docx >= 1.2 用原生 API,旧版自动走 XML 回退。图片块要求本地存在 PNG/JPEG 文件。
用法:所有脚本位于本文件旁 scripts/ 目录,用终端运行,均支持 --help 并输出 JSON。 python scripts/docx_create.py spec.json out.docx python scripts/docx_read.py out.docx --text python scripts/docx_edit.py replace out.docx --find old --replace new python scripts/docx_template.py tpl.docx values.json filled.docx python scripts/docx_revisions.py list out.docx python scripts/docx_comments.py list out.docx python scripts/docx_validate.py out.docx
主要能力:create 依据 JSON 规格生成文档,规格支持页面尺寸与边距、页眉页脚、footer_page_numbers、自定义样式及 heading、paragraph、bullet_list、numbered_list、table、image、toc、page_break 等块。read 用单一模式标志返回 text、structure、styles、images、revisions。edit 支持 replace(保留格式,可加 --body-only)、set-cell、insert、delete、style、normalize、toc、page-numbers。revisions 可 list/accept-all/reject-all 及按 --id 处理单条。comments 可 list/add/delete。template 用 JSON 值填充 {{token}},--strict 在未填时失败。
限制:不渲染文档,PDF 需安装 LibreOffice 后执行 soffice --headless --convert-to pdf --outdir outdir/ file.docx,否则应告知环境不支持。修订仅自动处理 run 级增删,段落标记、表格行、格式变更和移动仅检测不自动解决。批注线程回复和已解决状态存于 commentsExtended.xml,本技能忽略。toc 与页码为字段代码,由 Word/LibreOffice 打开时计算。docx_validate.py 是健康检查而非 XSD 校验。应用样式须已定义,set-cell 会重置该单元格格式,List Number 可能连续编号,不可直接解压改 XML。编辑后应重新读取并运行校验。