使用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使用sorted函数对列表进行排序的方法
Apr 04 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python实现多张图片拼接成大图
Jan 15 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
windows支持哪个版本的python
Jul 03 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
分享3个php获取日历的函数
2015/09/25 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
jQuery select的操作实现代码
2009/05/06 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
angularjs基础教程
2014/12/25 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
python中pycurl库的用法实例
2014/09/30 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
解决python线程卡死的问题
2019/02/18 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
质检部职责
2013/12/28 职场文书
高中地理教学反思
2014/01/29 职场文书
采购求职信
2014/03/17 职场文书
事业单位考核材料
2014/05/21 职场文书
商场促销活动总结
2014/07/10 职场文书
承诺书模板
2014/08/30 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
Django模型层实现多表关系创建和多表操作
2021/07/21 Python