Files

54 lines
1.8 KiB
Markdown

# 一页纸 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 <docx> <pdf>
python3 -c "
import subprocess
r=subprocess.run(['pdftotext','<pdf>','-'],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 字号即可