前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 Python 把网页转换成 PDF

用 Python 把网页转换成 PDF

作者头像
伪君子
发布2019-06-02 21:36:39
3.3K0
发布2019-06-02 21:36:39
举报
文章被收录于专栏:伪君子的梦呓

前言

前段时间有个需求是要把本地的 html 转换成 pdf,一个两个还好说,上千上万的话,只能写代码解决问题。

试了几个,发现 python 实现起来也挺简单的,那就去掉复杂的逻辑,简单说一下怎么实现。

1 安装

1.1 安装 wkhtmltopdf

https://wkhtmltopdf.org/downloads.html

下载 wkhtmltopdf

圈起来的那两个,上面写着 Installer 的是安装包,直接安装就行;下面写着 7z archive 的是压缩包,如果没记错的话,需要下载 7-Zip 才能解压使用。

https://www.7-zip.org/

如果需要,可以把 wkhtmltopdf 加到系统变量 Path 中;如果不需要,把路径记住就好。

1.2 安装 pdfkit

先说一下环境,Win10 系统下 Python3,编译器是 PyCharm 。

pdfkit 可以直接用 pip install pdfkit 安装,要是不知道该怎么安装,那还是用 PyCharm 安装吧。

PyCharm 安装第三方库

PyCharm 安装第三方库

2 代码

代码挺少的,为了能解释清楚,所以是按顺序分开来,用的时候按顺序复制就好。

先导入要用的库 pdfkit,这里加上 time 只是为了计时。

代码语言:javascript
复制
import time
import pdfkit

下面这个 wk_path 是 wkhtmltopdf 的路径,config 是配置。

代码语言:javascript
复制
#  wkhtmltopdf 的路径
wk_path = r'E:\Program Files\wkhtmltox\bin\wkhtmltopdf.exe'
config = pdfkit.configuration(wkhtmltopdf=wk_path)

url 是需要把 html 转换成 pdf 的那个网页;name 是文件名,文件名这里一定要有后缀名 .pdf,不然得自己手动添加后缀名。

pdfkit.from_url(url, name, configuration=config)就是开始把 html 转换成 pdf 。

time1 和 time2 是我用来计时的,跑完代码之后会输出用时。

代码语言:javascript
复制
url = "https://lbjheiheihei.xyz/2019/05/07/Spoof-QRcode.html"
name = "lbj.pdf"
time1 = time.time()
pdfkit.from_url(url, name, configuration=config)
time2 = time.time()
print(str(time2 - time1)+" s")

代码截图 + 运行结果

我用这个把一个博客的部分文章导成了 PDF,结果如下,用 SumatraPDF 查看能看到目录。

PDF PDF和网页对比如下图,左边是 PDF,右边是 网页。(网页背景颜色原来是白色的,我的浏览器会自动把背景颜色进行替换)

PDF和网页对比

3 相关说明

这样把 html 转换成的 pdf 肯定和网页原来的样子是有差别的,但是把本地的 html 转换成 pdf 还是挺合适我心意的,毕竟解决了我的问题。

如果想把多个 PDF 合并成一个的话,可以使用 PyPDF2,挺好用的。

题图:Photo by Jesse Schoff on Unsplash

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪君子的梦呓 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 1 安装
      • 1.1 安装 wkhtmltopdf
      • 1.2 安装 pdfkit
    • 2 代码
      • 3 相关说明
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档