使用流式布局与选择性分页控制,将 HTML/CSS 转换为专业 PDF,避免打印页面空白和布局问题。
PDF 生成技能 : 目的: 从 HTML/ CSS 生成专业 PDF , 无需空白或布局问题
功能概述
PDF 生成技能 : 目的: 从 HTML/ CSS 生成专业 PDF , 无需空白或布局问题是一项面向实际任务的技能,主要用于问题 : 当 HTML 生成 PDF 时, 页面断开侧面: 避免原因 orph。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
PDF 生成技能
目的:从 HTML/CSS 生成专业 PDF,避免空白间隙与布局异常。
问题所在
在基于 HTML 生成 PDF 时,使用 page-break-inside: avoid 会导致孤立空白(orphan whitespace)——即无法完整容纳在当前页的内容会被整体推至下一页,从而在当前页底部留下大片空白。
解决方案
1. 使用流式布局(而非固定页面容器)
❌ 错误做法:
✅ 正确做法:
应改用 @page CSS 规则,而非依赖固定高度的页面容器:
@page {
size: A4;
margin: 18mm 15mm;
}
2. 仅对小型元素启用防断行保护
仅对满足以下条件的元素应用 break-inside: avoid:
- 尺寸较小(如卡片、单行、短型盒子)
- 若被分页截断会显得不完整或断裂
✅ 应保护的元素:
- 单个表格行(
tr) - 卡片(高度 < 100px)
- 时间线条目(timeline items)
- 步骤项(step items)
- 高亮框(highlight boxes)
❌ 不应保护的元素:
- 整张表格(entire tables)
- 大型容器(large containers)
- 整节内容(entire sections)
- 多列布局(multi-column layouts)
- 位于文档末尾的引用框(quote boxes at document end)
3. 同时使用现代与兼容性属性
.small-element {
break-inside: avoid; /* 现代标准 */
page-break-inside: avoid; /* 兼容旧版引擎 */
}
4. 确保标题与后续内容同页
h2, h3, h4, .section-header {
break-after: avoid;
page-break-after: avoid;
}
5. 防止孤行(orphan lines)
body {
orphans: 3; /* 页面底部至少保留 3 行 */
widows: 3; /* 页面顶部至少保留 3 行 */
}
6. 允许表格跨页,但保持行内完整性
table {
/* 不设置 break-inside: avoid */
}
tr {
break-inside: avoid;
page-break-inside: avoid;
}
模板
@page {
size: A4;
margin: 18mm 15mm;
}
body {
font-size: 10pt;
line-height: 1.5;
orphans: 3;
widows: 3;
}
/* 标题与后续内容保持同页 */
h2, h3, h4 {
break-after: avoid;
page-break-after: avoid;
}
/* 小型元素禁止分页截断 */
.card, .highlight-box, .step, .timeline-item {
break-inside: avoid;
page-break-inside: avoid;
}
/* 表格行保持完整,表格本身可跨页 */
tr {
break-inside: avoid;
page-break-inside: avoid;
}
/* 大型容器保持自然流式布局 */
table, .section, .two-col {
/* 不设置 break-inside: avoid */
}
@media print {
body {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
}
工具
| 工具 | 适用场景 | 安装方式 |
|---|---|---|
| WeasyPrint | HTML/CSS → PDF(CSS 支持最完善) | brew install weasyprint 或 pip install weasyprint |
| Pandoc | Markdown → PDF(经由 LaTeX) | brew install pandoc |
| wkhtmltopdf | 复杂布局场景 | 从 wkhtmltopdf.org 下载安装 |
| Puppeteer | 含 JavaScript 渲染内容的页面 | npm install puppeteer |
WeasyPrint 命令示例
weasyprint input.html output.pdf
发布前检查清单
在发送任何 PDF 文件之前,请务必完成以下检查:
- 在 PDF 查看器中打开,逐页滚动检查全部内容
- 检查是否存在大段空白间隙
- 确保页面顶部未出现单行孤立文本(orphan lines)
- 验证表格未在某一行中间发生不自然的分页断裂
- 确认标题下方紧随正文内容,而非单独出现在页面底部
常见错误
| 错误做法 | 修正方式 |
|---|---|
对大型容器设置 page-break-inside: avoid |
移除此样式,允许内容自然流动 |
使用固定高度的页面 div(如 min-height: 297mm) |
改用 @page 规则定义页面尺寸与边距 |
| 文档末尾的引用框(quote box)设置了防断行保护 | 移除其 break-inside: avoid 类或样式 |
对整张 table 元素设置防断行保护 |
仅对 tr 设置,不要作用于 table |
未设置 orphans/widows |
添加 orphans: 3; widows: 3; |
参考资料
- WeasyPrint 官方文档:https://doc.courtbouillon.org/weasyprint/
- CSS Paged Media 标准:https://www.w3.org/TR/css-page-3/
- Print CSS 实践指南:https://www.smashingmagazine.com/2018/05/print-stylesheets-in-2018/
本技能由 Bartok 创建 — 2026 年 3 月 6 日
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习