0

0

html格式怎么转换成pdf_网页转pdf文件保存【转换】

蓮花仙者

蓮花仙者

发布时间:2026-03-06 19:37:03

|

495人浏览过

|

来源于php中文网

原创

Chrome无头模式导出PDF最稳,支持JS执行、CSS打印媒体、Flex/Grid布局及中文字体;需用file://协议、避免中文路径,Puppeteer导出须设format:'A4'、printBackground:true、waitUntil:'networkidle0'。

chrome 命令行直接导出 PDF 最稳

本地 htmlpdf,最可靠的方式不是靠 js 库,而是调用 chrome 自带的无头模式。它渲染准确、支持 css @media print、能处理现代布局(flex/grid)、也兼容字体和中文。

常见错误是直接用 pdfkitweasyprint 硬转 —— 它们不执行 JS、不加载远程字体、对 position: stickytransform 渲染经常错位。

实操建议:

  • 确保系统已安装 Chrome 或 Chromium(macOS 可用 brew install chromium;Linux 用包管理器;Windows 下路径注意空格,推荐用短路径如 C:\chrome\chrome.exe
  • 命令示例:
    chrome --headless --disable-gpu --print-to-pdf="output.pdf" "file:///path/to/index.html"
  • --margin-top=0 --margin-bottom=0 --margin-left=0 --margin-right=0 去白边;加 --print-to-pdf-no-header 去页眉页脚
  • 如果 HTML 依赖本地 JS/CSS,务必用 file:// 协议,且路径不能含中文或空格(否则 Chrome 会静默失败)

page.pdf() 在 Puppeteer 里怎么设好纸张和缩放

Puppeteer 是自动化场景首选,但默认导出常出现内容被截断、字体糊、或 A4 宽度撑不满——问题多出在纸张尺寸没对齐 viewport,或没等 JS 渲染完就导出。

关键参数必须显式指定:

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

  • format: 'A4'width/height 更稳妥(避免单位换算错误)
  • printBackground: true,否则 CSS background-color 不显示
  • waitUntil: 'networkidle0' 替代 'load',确保异步资源(图标、字体、数据请求)全部完成
  • 若页面有动态高度(比如展开菜单),导出前先执行 await page.evaluate(() => document.body.style.height = 'auto')

为什么 wkhtmltopdf 在 macOS/Linux 上容易崩

它底层用 QtWebkit,早已停止维护,不支持 ES6+、CSS variables、grid,遇到 IntersectionObserver 或 Web Font 就卡死或空白。

墨刀AIPPT
墨刀AIPPT

排版/配图/美化一键优化,3分钟产出专业级PPT

下载

典型报错:QFont::setPixelSize: Pixel size 或直接无输出。

除非你明确要支持 CentOS 6 这类老系统,否则别碰。替代方案:

  • macOS:改用 chromium --headless(比 wkhtmltopdf 快 2–3 倍,内存占用低)
  • CI 环境(如 GitHub Actions):用官方 puppeteer Docker 镜像,自带 Chromium,免配置
  • 真要保 wkhtmltopdf,必须降级到 0.12.6,并禁用所有现代 CSS 特性

导出 PDF 后中文显示为方块?字体路径是关键

不是缺字体,是 Chrome 找不到它。HTML 中用 @font-face 加载的本地字体(如 src: url('./fonts/msyh.ttc')),在 file:// 协议下会被浏览器拦截(CORS + file 协议限制)。

解决路径只有两条:

  • 把字体转成 base64 内联进 CSS(适合小字体文件,msyh.ttc 太大,不推荐)
  • 起一个本地 HTTP 服务(哪怕一行 python3 -m http.server 8000),然后用 http://localhost:8000/index.html 访问再导出 —— 这样字体加载不受限
  • Linux 服务器上记得装中文字体包,如 Ubuntu:sudo apt-get install fonts-wqy-zenhei,否则即使路径对,Chrome 也 fallback 到无中文的默认字体

最容易被忽略的是:PDF 导出时不会报字体加载失败,只会静默用替代字体,所以得打开生成的 PDF 逐页确认中文是否正常显示。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1035

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

826

2023.11.06

es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

106

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

231

2025.12.24

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的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

17

2026.02.03

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

866

2023.07.31

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

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

精品课程

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

共46课时 | 3.5万人学习

AngularJS教程
AngularJS教程

共24课时 | 4万人学习

CSS教程
CSS教程

共754课时 | 40万人学习

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

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