浏览器打印最常用但样式支持弱;weasyprint适合定制化输出且css兼容好;pdfkit轻量但布局兼容差;在线工具省事但有安全风险;专业软件适合后续编辑。

浏览器打印功能最常用,但别指望它处理复杂样式
绝大多数人第一反应就是用 Chrome/Firefox/Safari 的 Ctrl+P 或 Cmd+P,选“另存为 PDF”——这确实能跑通,尤其对纯文本、简单表格的 HTML。但它本质是“截图式渲染”,不走真正的排版引擎。
- 遇到
@media print未适配的 CSS,页眉页脚错位、分页断裂很常见 - 含
position: fixed或transform的元素可能被截断或消失 - 中文字体若本地没安装对应字体(比如用了“阿里巴巴普惠体”但系统没装),会回退成方块或默认黑体
- JavaScript 渲染的内容(如 Vue/React 动态生成的 DOM)必须等页面完全加载完再按
Ctrl+P,否则导出空白
用 pdfkit 或 weasyprint 写脚本,适合需要批量或定制化输出
如果你要自动化导出报表、邮件模板、合同预览,或者得控制页边距、水印、页码、字体嵌入——就得上命令行或代码工具。Python 生态里,weasyprint 对 CSS 支持最接近浏览器,pdfkit(底层调用 wkhtmltopdf)更轻量但已停止维护。
-
weasyprint能正确解析@page、counter-increment,支持 TrueType 字体嵌入,但处理大量图片时内存占用高 -
pdfkit启动快,适合单页小文件,但对 Flex/Grid 布局兼容差,display: contents直接失效 - 两者都不执行 JS:如果 HTML 依赖 JS 渲染内容,得先用
Puppeteer或Playwright预渲染成静态 HTML 再交给它们
示例(weasyprint):
weasyprint input.html output.pdf --zoom 1.0 --page-size A4
在线工具省事,但敏感内容千万别传
像 pdfcrowd.com、hipdf.cn 这类服务,上传 HTML 或粘贴 URL,点一下就出 PDF——适合临时救急、非机密内容。它们背后其实也是调用类似 Puppeteer 或 wkhtmltopdf 的服务端渲染。
立即学习“前端免费学习笔记(深入)”;
- 上传后文件通常 24 小时内自动删除(如 WPS 官方转 PDF 服务声明),但无法验证是否真删了
- 带登录态的页面(如内网后台、含 token 的报表页)根本传不了,因为在线工具无法携带你的 Cookie 或 Header
- 免费版常限单文件 ≤10MB、每月 ≤5 次、不支持自定义页眉页脚——这些限制藏在“高级选项”折叠菜单里,容易忽略
专业软件如福昕、万兴 PDF,适合需要后续编辑的场景
如果你导出 PDF 后还要加签名、批注、OCR 识别文字、合并多个 HTML——直接用桌面端 PDF 工具反而更顺。它们底层封装了更稳定的渲染引擎,并做了中文排版优化。
- 福昕 PDF 阅读器的“转换 → 网页转 PDF”支持输入 URL,也能拖入本地
.html文件,可设缩放比例和纸张方向 - 万兴 PDF 批量转换时,多个 HTML 会按导入顺序合成一个 PDF,但无法指定每个 HTML 单独成章(需额外加封面页)
- 这类软件导出的 PDF 默认带可复制文字,而浏览器打印出的 PDF 有时文字是“图片化”的,搜不到也复制不了
真正卡住人的,往往不是“怎么转”,而是“转出来为什么缺字/错页/没样式”。建议先用浏览器快速试一次,再根据问题类型决定:要保样式就上 weasyprint,要保交互就用 Puppeteer 预渲染,要后续编辑就开福昕——别一上来就堆工具。











