诚实说明:本机没有LibreOffice,做不了「同一份docx在两个渲染器下有多少像素差」这种实测。所以这页给的是验收项清单,不是对比结论——真正的对比数据等有环境了再补。
docx错位几乎都出在下面这几项。它们共同点是:规范和渲染器实现之间留有自由度,不同软件填这个空白的方式不同。
| 易错位的地方 | 为什么会偏 | 怎么验 |
|---|---|---|
| 字体缺失时的回退 | 文档指定的字体对方没装,回退到别的字,字宽变了行就重排 | 换一台没装该字体的机器打开,看是否仍在一页内 |
| 行距与段前段后 | 倍数行距在不同渲染器下取整方式不同 | 看段落数是否变化、是否多出孤行 |
| 表格自动列宽 | 由渲染器按内容算宽度,算法不一样 | 把表格列宽改成固定值,再对比 |
| 分页与孤行控制 | 分页规则实现细节不同 | 看关键标题是否被推到下一页 |
| 图片与文字环绕 | 环绕方式实现差异较大 | 重点看图文混排段落 |
| 制表符与缩进 | 制表位默认值不同 | 看目录、签名档这类用制表符对齐的地方 |
生成阶段就能降低风险
- 字体只用人人都有的:中文用宋体/黑体/微软雅黑,别用少见字体。
- 行距用固定值(例如1.5倍改为具体磅值),别用「多倍行距」。
- 表格列宽写死,不要留给自动计算。
- 少用文本框:它是最容易错位的元素。
验证的最短路径
- 生成docx。
- 在你机器上用Word(或WPS)打开,截图或导出PDF记为基线。
- 在另一台机器用另一个渲染器打开,对比关键页:首页、含表格的页、结尾。
- 只对比这四处,不要全篇逐字看——重点永远是结构,不是像素。
如果你也没有第二个渲染器
退一步的做法:把docx自己导出成PDF,PDF的版式是固定的,再对比PDF。这不能替代跨渲染器验证,但能确认「你自己这边的版式是稳定的」。