使用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 01 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python pymongo模块用法示例
Mar 31 Python
pandas实现选取特定索引的行
Apr 20 Python
如何使用Python实现自动化水军评论
Jun 26 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
python 实现分组求和与分组累加求和代码
May 18 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
php smarty模版引擎中的缓存应用
2009/12/11 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
详解PHP中的Traits
2015/07/29 PHP
jquery 批量上传图片实现代码
2010/01/28 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
JavaScript闭包的简单应用
2017/09/01 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
玩转python爬虫之正则表达式
2016/02/17 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
pytorch 修改预训练model实例
2020/01/18 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
weblogic面试题
2016/03/07 面试题
建筑个人求职信范文
2014/01/25 职场文书
母婴店促销方案
2014/03/05 职场文书
五一劳动节活动记录
2014/03/23 职场文书
售后服务承诺书
2014/03/26 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL