问题背景
在 Web 开发中,使用 wkhtmltopdf 将 HTML 转换为 PDF 是一项常见需求。然而,在处理长表格(Table)分页时,经常会遇到一个诡异的 Bug:原本正常的表格行出现了莫名其妙的空白拉伸。
核心原因分析
wkhtmltopdf 使用的是较旧的 Webkit 渲染引擎(类似于早期 Chrome)。
默认情况下,当一个 <tr>(表格行)的高度跨越了分页线,引擎会尝试将其拆分。但在拆分过程中,旧内核对剩余空间的计算往往会出现偏差,为了“填满”或“对齐”物理页面边缘,它会错误地拉伸行高以填补空白。
终极解决方案
最直接且有效的办法是:强制禁止表格行内部发生分页(Avoid Break Inside)。
通过 CSS 属性 page-break-inside: avoid,我们可以明确告知渲染引擎:如果这一行在当前页面显示不全,请直接将整行推送到下一页,而不是从中间切断。
核心 CSS 代码:
/* 解决行高拉伸的关键方案 */
tr {
page-break-inside: avoid !important;
break-inside: avoid !important;
}
评论区