使用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编程中time模块的一些关键用法解析
Jan 19 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
Python文件如何引入?详解引入Python文件步骤
Dec 10 Python
python3 pathlib库Path类方法总结
Dec 26 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
Python3如何在服务器打印资产信息
Aug 27 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
PHP 中执行系统外部命令
2006/10/09 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
php array_slice函数的使用以及参数详解
2008/08/30 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
拖拉表格的JS函数
2008/11/20 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
js快速排序的实现代码
2013/12/08 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
js评分组件使用详解
2017/06/06 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
办公室岗位职责
2014/02/12 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
数学教研活动总结
2014/07/02 职场文书
委托书怎么写
2014/07/31 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
党员自评材料范文
2014/12/17 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
关于EntityWrapper的in用法
2022/03/22 Java/Android