用 wkhtmltopdf 0.12.6 导 60 页目录,第一页正常,第二页开始表格整体右移,右边三列被裁掉,页码压到页脚外面。乍看像缓存或者权限的锅,追下去往往不是。
@page { size: A4; margin: 15mm; }
table { table-layout: fixed; width: 100%; }
tr { page-break-inside: avoid; }
追下去是这么回事:表格用了 float 布局,分页时每页重新计算宽度,重复的 thead 又带了一次 margin。页面没设 @page 尺寸,默认按 A4 缩放,宽度直接溢出。
「目录导出 PDF 排版」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
具体做法是,打印样式里给表格加 table-layout: fixed 和明确列宽,别用 float;设置 @page size 为 A4 并留页边距,关掉智能缩放;导出后用 pdfinfo 看页数和纸张,再翻到中间几页确认列是否齐。
验收就看一点,导出的 PDF 每页列宽一致,最右一列完整,页脚页码留在页面内。
