← [ BACK_TO_NOTES ]

专题归档 · 2025 年 12 月(编辑分组,非实际写作日期)

实习排障:Paged.js 分页之后,表格第二页的列为什么歪了?

从报表分页后空单元格与列宽错位的现象辨别 CSS 假设和真实 DOM 证据。

现象出现在分页边界

当时我遇到的现象是:报表的第一列为空时,第二页和后续页首行容易错位。单纯调整原始表格的 CSS 列宽无法稳定解决,问题在生成分页布局之后才格外明显。

当时试过哪些方案

我尝试过设置 colgroup、改用 nth-child、给空单元格填充内容,但只改 CSS 仍然无法解释跨页后的列宽变化。真正值得比较的是分页前后的表格 DOM 和每列的计算宽度。

最终采用的打印技术与这次故障要分开说

最终打印方案使用了 vue-print-next + Paged.js。在这之前我也试过不引入 Paged.js 的纯 CSS 方案,后来才把分页布局交给专门的引擎。

旧打印路径主要把页面 DOM 转成位图,再交给浏览器打印。面对长正文、动态表格以及需要控制的签批区域,位图式输出难以对分页断点作细粒度控制。实际交付选用 DOM 打印入口与分页布局的组合,围绕预览容器 height/overflow、@page、break-inside 和续页边界做调整。

需要特别区分三个对象:文档页眉/LOGO、数据表的列名 thead、每页签批区域。它们在续页规则里的行为不一样,不能简单归结为“一次 CSS 固定定位就解决了每页重复”。

不过,采用这套组合并不意味着第二页列宽错位自动消失。要定位问题,仍然得回到分页后的 DOM、表格布局规则和续页边界。

后来调整的排查方法

我开始把排查重点放在分页前后的 DOM 结构、colspan / rowspan、计算后的样式以及 Paged.js 版本上。只有逐项对比,才能区分是表格结构、分页算法还是 CSS 选择器造成的差异。

创建于 2025/12/21 更新于 2026/10/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本