使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法


Posted in Python onApril 21, 2022

python包-pdfkit 将HTML转换为PDF

什么是pdfkit

pdfkit,把HTML+CSS格式的文件转换成PDF格式文档的一种工具。它就是html转成pdf工具包wkhtmltopdf的Python封装。所以,必须手动安装wkhtmltopdf。

安装

首先需要安装 pdfkit 库,使用 pip install pdfkit 命令就好了。
还需要安装 wkhtmltopdf 工具,本质就是利用这个工具来进行转换,pdfkit 库就是作为接口来调用该工具。
python版本 3.x,在命令行输入:

$sudo apt-get install wkhtmltopdf

工具下载地址:
wkhtmltopdf 官网:https://wkhtmltopdf.org/downloads.html

Ubuntu系统可以直接使用以下命令安装:

$sudo yum intsall wkhtmltopdf

CentOS系统可以直接使用以下命令安装:

$sudo yum intsall wkhtmltopdf

使用

将url生成pdf文件

不指定wkhtmltopdf,会从系统的默认执行路径下找 wkhtmltopdf

import pdfkit
'''将url生成pdf文件'''
def url_to_pdf(url, to_file):
    pdfkit.from_url(url, to_file,verbose=True)
url_to_pdf('http://www.baidu.com','out_3.pdf')

指定 wkhtmltopdf 的位置:

import pdfkit
'''将url生成pdf文件'''
def url_to_pdf(url, to_file):
    config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
    pdfkit.from_url(url, to_file,configuration=config,verbose=True)
url_to_pdf('http://www.baidu.com','out_3.pdf')

字符串生成pdf【pdfkit.from_string()函数】

# 导入库
import pdfkit

'''将字符串生成pdf文件'''
def str_to_pdf(string, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_string(string, to_file, configuration=config)
    print('完成')
str_to_pdf('This is test!','out_3.pdf')

报错

报错OSError: No wkhtmltopdf executable found

在使用pdfkit.from_string或者pdfkit.from_file或者pdfkit.from_url将字符串、文件或者网页内容转化为pdf时,报错:

OSError: No wkhtmltopdf executable found

原因很明显,就是没找到可执行的wkhtmltopdf文件,也就是未找到wkhtmltopdf.exe文件。
python的pdfkit扩展包使用时需要基于wkhtmltopdf.exe这个可执行文件才可运行,因此需要先安装wkhtmltopdf。
对于windows系统,可以在(https://wkhtmltopdf.org/downloads.html)下载安装,然后将该程序的执行文件路径添加到环境变量中(这样即可直接用pdfkit扩展包,否则需要在使用pdfkit时,指明该程序的路径)

Ubuntu系统可以直接使用以下命令安装:

$sudo apt-get install wkhtmltopdf

CentOS系统可以直接使用以下命令安装:

$sudo yum intsall wkhtmltopdf

到此这篇关于python包pdfkit(wkhtmltopdf) 将HTML转换为PDF的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
Python hmac模块使用实例解析
Dec 24 Python
Python爬虫requests库多种用法实例
May 28 Python
使用Python操作MySQL的小技巧
Sep 10 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
基于jquery实现二级联动效果
2017/03/30 jQuery
Vue filter介绍及其使用详解
2017/10/21 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中list循环语句用法实例
2014/11/10 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
详解python分布式进程
2018/10/08 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
网游商务专员求职信
2013/10/15 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
病假证明模板
2015/06/19 职场文书
社区干部培训心得体会
2016/01/06 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers