python转pdf教程(Python实现将HTML转成PDF的方法分析)
python转pdf教程
Python实现将HTML转成PDF的方法分析本文实例讲述了python实现将html转成pdf的方法。分享给大家供大家参考,具体如下:
主要使用的是wkhtmltopdf的python封装——pdfkit
安装
1. install python-pdfkit:
|
$ pip install pdfkit |
2. install wkhtmltopdf:
- debian/ubuntu:
|
$ sudo apt - get install wkhtmltopdf |
- redhat/centos
|
sudo yum intsall wkhtmltopdf |
- macos
|
brew install caskroom / cask / wkhtmltopdf |
使用
一个简单的例子:
|
import pdfkit pdfkit.from_url( 'http://google.com' , 'out.pdf' ) pdfkit.from_file( 'test.html' , 'out.pdf' ) pdfkit.from_string( 'hello!' , 'out.pdf' ) |
你也可以传递一个url或者文件名列表:
|
pdfkit.from_url([ 'google.com' , 'yandex.ru' , 'engadget.com' ], 'out.pdf' ) pdfkit.from_file([ 'file1.html' , 'file2.html' ], 'out.pdf' ) |
也可以传递一个打开的文件:
|
with open ( 'file.html' ) as f: pdfkit.from_file(f, 'out.pdf' ) |
如果你想对生成的pdf作进一步处理, 你可以将其读取到一个变量中:
|
# 设置输出文件为false,将结果赋给一个变量 pdf = pdfkit.from_url( 'http://google.com' , false) |
你可以制定所有的 wkhtmltopdf 选项 <http://wkhtmltopdf.org/usage/wkhtmltopdf.txt>. 你可以移除选项名字前面的 '--' .如果选项没有值, 使用none, falseor * 作为字典值:
|
options = { 'page-size' : 'letter' , 'margin-top' : '0.75in' , 'margin-right' : '0.75in' , 'margin-bottom' : '0.75in' , 'margin-left' : '0.75in' , 'encoding' : "utf-8" , 'no-outline' : none } pdfkit.from_url( 'http://google.com' , 'out.pdf' , options = options) |
默认情况下, pdfkit 将会显示所有的 wkhtmltopdf 输出. 如果你不想看到这些信息,你需要传递一个 quiet 选项:
|
options = { 'quiet' : '' } pdfkit.from_url( 'google.com' , 'out.pdf' , options = options) |
由于wkhtmltopdf的命令语法 , toc 和 cover 选项必须分开指定:
|
toc = { 'xsl-style-sheet' : 'toc.xsl' } cover = 'cover.html' pdfkit.from_file( 'file.html' , options = options, toc = toc, cover = cover) |
当你转换文件、或字符串的时候,你可以通过css选项指定扩展的 css 文件。
|
# 单个 css 文件 css = 'example.css' pdfkit.from_file( 'file.html' , options = options, css = css) # multiple css files css = [ 'example.css' , 'example2.css' ] pdfkit.from_file( 'file.html' , options = options, css = css) |
你也可以通过你的html中的meta tags传递任意选项:
|
body = """ <html> <head> <meta name="pdfkit-page-size" content="legal"/> <meta name="pdfkit-orientation" content="landscape"/> </head> hello world! </html> """ pdfkit.from_string(body, 'out.pdf' ) #with --page-size=legal and --orientation=landscape |
配置
每个api调用都有一个可选的参数。这应该是pdfkit.configuration()
api 调用的一个实例. 采用configuration 选项作为初始化参数。可用的选项有:
- wkhtmltopdf ——wkhtmltopdf二进制文件所在的位置。默认情况下pdfkit 会尝试使用which (在类unix系统中) 或 where (在windows系统中)来判断.
- meta_tag_prefix -- pdfkit的前缀指定 meta tags(元标签) - 默认情况是pdfkit-
示例 :针对wkhtmltopdf不在系统路径中(不在$path里面):
|
config = pdfkit.configuration(wkhtmltopdf = '/opt/bin/wkhtmltopdf' )) pdfkit.from_string(html_string, output_file, configuration = config) |
问题
- ioerror: 'no wkhtmltopdf executable found':
确保 wkhtmltopdf 在你的系统路径中($path), 会通过 configuration进行了配置 (详情看上文描述)。 在windows系统中使用where wkhtmltopdf命令 或 在 linux系统中使用 which wkhtmltopdf 会返回 wkhtmltopdf二进制可执行文件所在的确切位置.
- ioerror: 'command failed'
如果出现这个错误意味着 pdfkit不能处理一个输入。你可以尝试直接在错误信息后面直接运行一个命令来查看是什么导致了这个错误 (某些版本的 wkhtmltopdf会因为段错误导致处理失败)
- 正常生成,但是出现中文乱码
确保两项:
1)、你的系统中有中文字体
2)、在html中加入<meta charset="utf-8">
下面是我随便写的一个html表格:
|
<html> <head><meta charset = "utf-8" >< / head> <body> <table width = "400" border = "1" > <tr> <th align = "left" >item....< / th> <th align = "right" > 1 < / th> < / tr> <tr> <td align = "left" >衣服< / td> <td align = "right" >$ 241.10 < / td> < / tr> <tr> <td align = "left" >化妆品< / td> <td align = "right" >$ 30.00 < / td> < / tr> <tr> <td align = "left" >食物< / td> <td align = "right" >$ 730.40 < / td> < / tr> <tr> <th align = "left" >total< / th> <th align = "right" >$ 1001.50 < / th> < / tr> < / table> < / body> < / html> |
下面是生成的pdf截图
另:https://pdfcrowd.com/#convert_by_input
希望本文所述对大家python程序设计有所帮助。
原文链接:http://www.cnblogs.com/taceywong/p/5643978.html
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- python3html怎么转换成pdf(Python实现html转换为pdf报告生成pdf报告功能示例)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- vue pdf预览插件(Vue-pdf实现在线预览PDF文件)
- php把当前网页生成pdf(php转换上传word文件为PDF的方法基于COM组件)
- vue前台解析pdf文件流(Vue实现在线预览pdf文件功能利用pdf.js/iframe/embed)
- pythonhtml文件转换成pdf库(Python3转换html到pdf的不同解决方案)
- python创建pdf(Python玩转PDF的各种骚操作)
- pythonjpg转pdf格式(Python使用到第三方库PyMuPDF图片与pdf相互转换)
- python后端生成的pdf文件(Python实现截取PDF文件中的几页代码实例)
- asp.net将ppt文档转换成pdf
- html5canvas画图有什么用(Html5基于canvas实现电子签名并生成PDF文档)
- ASP.NET将WORD、PDF、PPT转为图片
- asp.net将Excel文档转换成pdf
- 利用python合并pdf(Python合并同一个文件夹下所有PDF文件的方法)
- python爬取百度搜索pdf文档(Python实现的爬取百度文库功能示例)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
热门推荐
- sql执行原理详解(Sql server中内部函数fn_PhysLocFormatter存在解析错误详解)
- dedecms标签怎么调用(织梦DEDECMS获取当前页面的顶级栏目名称及链接教程)
- mysql5.7详细安装教程(MySQL5.7.33安装过程图文详解)
- 新买的云服务器注意事项(购买云服务器之前需要了解哪些知识?)
- mysql数据库下载安装步骤(MySQL数据库压缩版本安装与配置详细教程)
- .NET get、post 请求
- 群体面试需要注意哪些
- python与php(解决Python3 被PHP程序调用执行返回乱码的问题)
- laravel队列大批量数据(laravel 中某一字段自增、自减的例子)
- mysql按端口查找配置(MySQL中给定父行找到所有子行的解决方案)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9