chrome html导出pdf,使用Selenium实现HTML转PDF

本文介绍了在觅道文档中遇到的HTML转PDF问题,以及如何利用Selenium和Chrome的无头模式解决这个问题。通过配置Chrome启动参数,使用Selenium的webdriver打开HTML并执行Page.printToPDF命令,成功将HTML转换为PDF。此外,还提到了第三方模块pyhtml2pdf作为更简便的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在之前,州的先生为了在觅道文档中实现 markdown 转 pdf 的功能,考察和调研的市面上的一些通行解决方案,详见https://zmister.com/archives/1607.html。

在那之后,觅道稳定选择了 Chromium + pyppeteer 的方案作为 HTML 转换 PDF 的技术栈。

但是这个方案并非完美,由于 PyPeeteer 这个第三方库年久失修,很多 Bug 没有修复,导致在觅道文档中调用它经常性地会出现异常。

不得已,州的先生只得另寻它法。由于觅道文档中生成的 PDF 是需要动态渲染一些图形的(比如 Echarts 图表、思维导图、流程图等),所以只能在基于浏览器内核进行渲染的工具中进行选择。因为 whtmltopdf 使用的是老旧的 webkit 作为渲染内核,第一个就将其否决掉。

然后基于对 PyQt5 的熟悉,在 Windows 上使用 PyQt5 的 QWebengine 小部件对 HTML 文件进行 PDF 转换,测试效果还行。结果代码上传到 Linux 服务器上之后,各种系统依赖性的确实和报错。考虑到安装部署的便捷性,只能放弃这个测试了很久的方案。

最后转向了使用 Selenium 调用 Chromium 浏览器的无头模式,将打开的 HTML 打印导出为 PDF,算是比较完美地解决了觅道文档中文集导出 PDF 的问题。下面来看看最核心的实现过程:

依赖库

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

import base64

配置 chrome 的启动参数

webdriver_options = Options()

webdriver_prefs = {}

webdriver_options.add_argument('--headless')

webdriver_options.add_argument(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值