使用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实现ipsec开权限实例
Nov 11 Python
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
Python 通配符删除文件的实例
Apr 24 Python
python中for用来遍历range函数的方法
Jun 08 Python
python读取文本中的坐标方法
Oct 14 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
使用python实现画AR模型时序图
Nov 20 Python
利用python中集合的唯一性实现去重
Feb 11 Python
pytorch进行上采样的种类实例
Feb 18 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
Django静态文件加载失败解决方案
Aug 26 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
swfupload 多文件上传实现代码
2008/08/27 PHP
10个实用的PHP代码片段
2011/09/02 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
Python中使用中文的方法
2011/02/19 Python
跟老齐学Python之开始真正编程
2014/09/12 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python机器学习之神经网络(三)
2017/12/20 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
详解python算法常用技巧与内置库
2020/10/17 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
毕业学生推荐信
2013/12/01 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
前处理班长职位说明书
2014/03/01 职场文书
中药专业自荐信范文
2014/03/18 职场文书
环保小标语
2014/06/13 职场文书
超市店庆活动方案
2014/08/31 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
MySQL池化框架学习接池自定义
2022/07/23 MySQL