使用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的setuptools框架下生成egg的教程
Apr 13 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
python实现感知器算法(批处理)
Jan 18 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python super()函数使用及多重继承
May 06 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
python Selenium 库的使用技巧
Oct 16 Python
Python3+Flask安装使用教程详解
Feb 16 Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
You might like
PHP脚本数据库功能详解(中)
2006/10/09 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
php检查页面是否被百度收录
2015/10/28 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
prototype Element学习笔记(篇一)
2008/10/26 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
python常见的格式化输出小结
2016/12/15 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
python学生信息管理系统实现代码
2019/12/17 Python
python代码xml转txt实例
2020/03/10 Python
Python中的流程控制详解
2021/02/18 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
单位实习证明怎么写
2014/01/17 职场文书
学校校庆演讲稿
2014/05/22 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
工作经历证明书范文
2014/11/02 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python