用途:把一份模板 docx 的格式刷到另一份 docx 上。格式参数从模板实测得出,统一出口应用,避免手调不一致。适用修复(内容正确但格式混乱,如 pandoc 转换产物)、新建(从零生成且格式对齐模板)、诊断(查看两份 docx 格式差异)三类场景。
主要能力:提取模板格式指纹,包括各样式(Normal/Heading 1-3/Body Text)的字体、eastAsia 中文字体、字号、加粗、颜色;正文段落实测行距、首行缩进、对齐分布;标题段落实测参数;封面段落结构;表格边框与单元格字体字号;章节标题是否分页。应用时按样式层、段落层、封面层、表格层、文字层五层顺序覆盖,并重排中文引号开闭。
使用方式: 第一步提取模板指纹:python3 scripts/extract_fingerprint.py "模板.docx" 第二步诊断目标文件:python3 scripts/extract_fingerprint.py "目标.docx" 第三步应用格式:python3 scripts/apply_format.py "目标.docx" --config fingerprint.json [--out "输出.docx"],不带 --out 时原地修复。 新建场景先准备内容 JSON,再执行:python3 scripts/gen_from_template.py "content.json" --config fingerprint.json --out "output/doc/输出.docx",内容 JSON 使用 cover 和 blocks,blocks 支持 heading、paragraph、table、page_break。 验证:python3 scripts/verify_format.py "输出.docx",检查字体分布收敛、表格有 tblBorders、章节标题有 pageBreakBefore、引号方向正确。
限制与注意:中文字体需同时设置 run.font.name 与 rPr.rFonts 的 w:eastAsia,否则中文回落宋体;字号内部为 EMU,磅 = EMU / 12700;清除颜色需从 rPr 移除 w:color 元素;章节分页建议插入 w:pageBreakBefore 元素。修复场景默认原地保存,新建场景输出到 output/doc/。具体脚本参数与内容 JSON 完整示例以脚本顶部说明为准。