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
- html转ppt(HTML里显示pdf、word、xls、ppt的方法示例)
- 利用python合并pdf(Python合并同一个文件夹下所有PDF文件的方法)
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- python爬取百度搜索pdf文档(Python实现的爬取百度文库功能示例)
- python创建pdf(Python玩转PDF的各种骚操作)
- asp.net把word文档转换成pdf
- ASP.NET将WORD、PDF、PPT转为图片
- pythonhtml文件转换成pdf库(Python3转换html到pdf的不同解决方案)
- python读取word的表格(Python使用reportlab模块生成PDF格式的文档)
- vue pdf预览插件(Vue-pdf实现在线预览PDF文件)
- pythonjpg转pdf格式(Python使用到第三方库PyMuPDF图片与pdf相互转换)
- python转换doc到pdf(利用python将图片版PDF转文字版PDF)
- vue浏览pdf文件(如何在vue中使用pdfjs预览pdf文件)
- html5canvas画图有什么用(Html5基于canvas实现电子签名并生成PDF文档)
- php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)
- 辱华品牌新百伦官宣新代言人IU,个别粉丝希望get爱豆同款(辱华品牌新百伦官宣新代言人IU)
- 巅峰时期被爆床照,曾被选国民最讨厌女星,IU不为人知的黑历史(巅峰时期被爆床照)
- 每天1万吨牛奶倒进下水道,美国大萧条一幕重现(每天1万吨牛奶倒进下水道)
- 如何看待美国数十万加仑牛奶倒下水道 历史又重演了(如何看待美国数十万加仑牛奶倒下水道)
- 历史惊人的相似,美国80万加仑牛奶倒入下水道,意味着什么(历史惊人的相似)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
热门推荐
- mysql支持存储表情(MySQL如何插入Emoji表情)
- 真实的codeigniter错误(Codeigniter里的无刷新上传的实现代码)
- ftp文件操作三种类型(详解ftp创建文件权限问题)
- CSS中常用的几个技巧
- linux系统安装宝塔面板启动失败(Linux云主机安装宝塔面板新手教程)
- laravel 数据库迁移(Laravel数据库读写分离配置的方法)
- html5本地存储功能(利用Node实现HTML5离线存储的方法)
- linux如何进入makefile(linux中无make命令的问题make: *** 没有指明目标并且找不到 makefile及make命令安装方)
- 怎么编写计算小程序(微信小程序实现简易计算器)
- python怎么进行参数传递(在Python中如何传递任意数量的实参的示例代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9