使用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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
Python3读取zip文件信息的方法
May 22 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python实现FTP文件传输的实例
Jul 07 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP安装攻略:常见问题解答(一)
2006/10/09 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php利用事务处理转账问题
2015/04/22 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
javascript折半查找详解
2015/01/26 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
Python运算符重载用法实例分析
2015/06/01 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python多进程实现文件下载传输功能
2018/07/28 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
上课睡觉检讨书
2014/01/28 职场文书
暑期社会实践证明书
2014/11/17 职场文书