# 一页纸 docx 排版压缩配方 适用场景:创建必须严格一页的 Word 文档(合作框架、报价单、一页摘要等),通过 OnlyOffice x2t 渲染验证。 ## 迭代压缩流程 x2t 渲染的行高/间距比 python-docx 估算的略宽松,不能靠"调好参数直接交付"。必须走渲染验证循环。 ### 第一轮:合理起点 | 参数 | 值 | |---|---| | 上下边距 | 1.5–2.0 cm | | 左右边距 | 1.8–2.0 cm | | 正文字号 | 9–10 pt | | 表格字号 | 8–9 pt | | 行距 | 1.05–1.15 | ### 验证循环 ```bash bash ~/.hermes/skills/legal/contract-editor/scripts/onlyoffice-render.sh python3 -c " import subprocess r=subprocess.run(['pdftotext','','-'],capture_output=True,text=True) pages=r.stdout.split('\f') print(f'页数: {len(pages)}') " ``` - 页数=1 → 交付 - 页数=2 且末页空白 → 内容刚好溢出,微调即可 - 页数=2 且有内容 → 需要大幅压缩或精简文字 ### 逐级压缩(按优先级) 1. 底部边距:1.5→1.0→0.8→0.5 cm(先砍底部,顶部保阅读感) 2. 表格字号:8→7.5→7 pt 3. 行距:1.05→1.0 4. 左右边距:1.8→1.5 cm 5. 段落间距:Pt(2)→Pt(1)→Pt(0) 6. 精简文字(最后手段) ### 已实证的可用参数(5000字内一页A4) | 参数 | 值 | |---|---| | 上下边距 | 1.2 / 0.5 cm | | 左右边距 | 1.5 cm | | 正文字号 | 8 pt | | 表格字号 | 7 pt | | 行距 | 1.0 | | 段落间距 | 0 | ## 陷阱 - x2t 对表格行高估算偏大,表内文字多时尤其明显 - 分隔线(`—`*N)占用空间,一页紧张时去掉 - 表格 `Table Grid` 样式自带内边距,无法通过 python-docx 参数完全消除 - 第二页空白但无文字 = 内容刚好溢出几像素,再砍 0.2cm 底部边距或减 0.5pt 字号即可