0

0

html转pdf方法汇总_html怎么转化成pdf【攻略】

雪夜

雪夜

发布时间:2026-03-08 20:25:03

|

351人浏览过

|

来源于php中文网

原创

最快上手是pdfkit(依赖wkhtmltopdf),但易崩;puppeteer更可控但启动慢;window.print()非真PDF;Flying Saucer适合静态报表;核心难点是业务验收细节。

Python 用 pdfkit 转 HTML 最快上手但容易崩

它本质是调用系统里装的 wkhtmltopdf,不是纯 python 实现,所以不装二进制就直接报错:ioerror: wkhtmltopdf not found。常见于 macos 用 homebrew 装了但路径没加进环境变量,或 windows 没勾选“add to path”。

实操建议:

  • 先在终端跑 wkhtmltopdf --version 确认能执行;不行就重装,macOS 推荐 brew install --cask wkhtmltopdf,Windows 去官网下完整安装包(别下“no dll”版)
  • Python 里指定路径更稳:config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
  • 中文乱码?加这两行:options={'encoding': 'UTF-8', 'page-size': 'A4'},再确保 HTML 里有 <meta charset="UTF-8">
  • 页面里含 JS 渲染的内容(比如 Vue 组件),默认不等 JS 执行完就截图,得加 --javascript-delay 2000 到 options 的 configuration

Node.js 用 puppeteer 转 PDF 更可控但启动慢

它启动真实 Chromium,能等 DOM 加载、JS 执行、甚至模拟滚动触发懒加载,适合转 SPA 页面。但每次调用都启浏览器进程,冷启动要 1–2 秒,不适合高并发场景。

实操建议:

  • 别用 launch({ headless: true }) 默认值——新版本 Chromium 默认就是 headless,显式写反而可能出兼容问题;直接 launch() 就行
  • 转本地 HTML 文件时,用 file:// 协议会触发 CORS,改用 page.setContent(htmlString) 或起个最小 Express 服务再 goto('http://localhost:3000')
  • 字体缺失?Linux 服务器常缺中文字体,apt-get install fonts-wqy-zenhei 或把字体文件用 @font-face 内联进 HTML
  • 页眉页脚想用动态内容(如页码),只能用 page.pdf({ displayHeaderFooter: true, headerTemplate: '...' }),且模板里不能用 JS,只支持有限 CSS

前端直接用 window.print() 不是真 PDF

它只是唤起浏览器打印对话框,用户点“另存为 PDF”才生成,无法自动化、不可控格式、不保证跨浏览器一致。有人误以为加 @media print 就算转 PDF,其实只是优化打印样式。

立即学习前端免费学习笔记(深入)”;

讯飞智作-讯飞配音
讯飞智作-讯飞配音

讯飞智作是一款集AI配音、虚拟人视频生成、PPT生成视频、虚拟人定制等多功能的AI音视频生产平台。已广泛应用于媒体、教育、短视频等领域。

下载

实操建议:

  • 如果真要前端生成 PDF,别碰 window.print(),改用 jsPDF + html2canvas 组合,但注意:Canvas 截图会丢失 SVG、CSS transform、fixed 定位元素,且长页面要手动分页
  • html2canvas 对跨域图片报错?加 useCORS: true 并确保图片服务返回 Access-Control-Allow-Origin: *
  • 生成的 PDF 文字不可选、搜索不了——这是 canvas 截图的固有缺陷,纯文本 PDF 必须走服务端

Java 后端用 Thymeleaf + Flying Saucer 适合报表类静态 PDF

Flying Saucer(即 core-renderer)只支持 CSS 2.1,不支持 Flex/Grid、position: sticky、现代伪类,适合转表格、单页通知这类结构简单的内容。

实操建议:

  • Maven 依赖别引错:org.xhtmlrenderer:flying-saucer-pdf-itext5(适配 iText 5),iText 7 需换用 flying-saucer-pdf-itext5 的 fork 版本
  • HTML 必须是严格 XHTML(闭合标签、小写、无自定义属性),否则解析失败;用 Thymeleaf 时加 th:fragment 比用 th:replace 更安全
  • 中文字体必须显式注册:FontResolver resolver = new FontResolver(); resolver.addFont("/path/to/simhei.ttf", "SimHei", true);,否则全是方块
  • 页边距、分页靠 CSS:@page { margin: 2cm; }div.page-break { page-break-after: always; },但 break-inside: avoid 支持不稳定

真正难的不是“怎么转”,而是“转出来能不能被业务接受”:页眉对不齐、表格跨页断裂、中文字体渲染发虚、JS 动态数据没等上……这些细节不会报错,但一上线就被运营打回来改三次。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Node.js后端开发与Express框架实践
Node.js后端开发与Express框架实践

本专题针对初中级 Node.js 开发者,系统讲解如何使用 Express 框架搭建高性能后端服务。内容包括路由设计、中间件开发、数据库集成、API 安全与异常处理,以及 RESTful API 的设计与优化。通过实际项目演示,帮助开发者快速掌握 Node.js 后端开发流程。

409

2026.02.10

Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

18

2026.02.03

java中break的作用
java中break的作用

本专题整合了java中break的用法教程,阅读专题下面的文章了解更多详细内容。

120

2025.10.15

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

261

2025.10.24

go语言goto的用法
go语言goto的用法

本专题整合了go语言goto的用法,阅读专题下面的文章了解更多详细内容。

138

2025.09.05

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

24

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

AngularJS教程
AngularJS教程

共24课时 | 4.1万人学习

CSS教程
CSS教程

共754课时 | 41.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号