wkhtmltopfd python包装器,使用webkit呈现引擎和qt将html转换为图像
imgkit的Python项目详细描述
_____ __ __ _____ _ __ _ _ |_ _| | \/ | / ____| | |/ / (_) | | | | | \ / | | | __ | ' / _ | |_ | | | |\/| | | | |_ | | < | | | __| _| |_ | | | | | |__| | | . \ | | | |_ |_____| |_| |_| \_____| |_|\_\ |_| \__|
用于wkhtmltoimage实用程序将html转换为img的python 2和3包装器 使用WebKit。
安装
安装imgkit:
pipinstallimgkit
安装wkhtmltoppdf:
debian/ubuntu:
sudo apt-get install wkhtmltopdf
警告!Debian/UbuntuRepos中的版本已经减少 功能(因为它编译时没有wkhtmltopfqt 修补程序),如添加大纲、页眉、页脚、目录等 此选项应安装静态二进制文件 wkhtmltopdf站点或您可以使用此 script。
MacOSX
brew install wkhtmltopdf
windows和其他选项:检查wkhtmltopdf homepage中的二进制安装程序或wiki page。
用法
简单示例:
importimgkitimgkit.from_url('http://google.com','out.jpg')imgkit.from_file('test.html','out.jpg')imgkit.from_string('Hello!','out.jpg')
您可以传递包含多个URL或文件的列表:
imgkit.from_url(['google.com','yandex.ru','engadget.com'],'out.jpg')imgkit.from_file(['file1.html','file2.html'],'out.jpg')
您还可以传递打开的文件:
withopen('file.html')asf:imgkit.from_file(f,'out.jpg')
如果您希望进一步处理生成的img,可以将其读到 变量:
# Use False instead of output path to save pdf to a variableimg=imgkit.from_url('http://google.com',False)
您可以通过键入wkhtmltoimage命令找到所有wkhtmltoimage选项 或者去看看这个 Manual。 您可以在选项名称中删除“-”。如果选项没有值,请使用none, 对于dict值,false或''。对于可重复的选项(包括允许, cookie,自定义头,post,postfile,run script,replace)您可以使用 列表或元组具有需要多个值的选项(例如 –custom header authorization secret)我们可以使用2元组(参见示例 下面)。
options={'format':'png','crop-h':'3','crop-w':'3','crop-x':'3','crop-y':'3','encoding':"UTF-8",'custom-header':[('Accept-Encoding','gzip')]'cookie':[('cookie-name1','cookie-value1'),('cookie-name2','cookie-value2'),],'no-outline':None}imgkit.from_url('http://google.com','out.png',options=options)
在一些无头服务器上,可能需要安装xvfb:
# at ubuntu server, etc. sudo apt-get install xvfb # at centos server, etc. yum install xorg-x11-server-Xvfb
然后将imgkit与选项xvfb:{"xvfb": ""}一起使用。
默认情况下,imgkit将显示所有wkhtmltoimage输出。如果你不知道 想要它,您需要传递quiet选项:
options={'quiet':''}imgkit.from_url('google.com','out.jpg',options=options)
由于wkhtmltoimage命令语法,toc和cover选项必须 单独说明。如果你需要掩护,使用 cover_first选项:
toc={'xsl-style-sheet':'toc.xsl'}cover='cover.html'imgkit.from_file('file.html',options=options,toc=toc,cover=cover)imgkit.from_file('file.html',options=options,toc=toc,cover=cover,cover_first=True)
转换文件或字符串时可以指定外部css文件 使用css选项。
# Single CSS filecss='example.css'imgkit.from_file('file.html',options=options,css=css)# Multiple CSS filescss=['example.css','example2.css']imgkit.from_file('file.html',options=options,css=css)
您还可以通过HTML中的元标记传递任何选项:
body=""" <html> <head> <meta name="imgkit-format" content="png"/> <meta name="imgkit-orientation" content="Landscape"/> </head> Hello World! </html> """imgkit.from_string(body,'out.png')
配置
每个api调用都有一个可选的配置参数。这应该是一个 imgkit.config()api调用的实例。它将配置选项作为 初始参数。可用选项有:
- wkhtmltoimage-二进制文件wkhtmltoimage的位置。由 默认imgkit将尝试使用 哪个(on UNIX type systems) or where(在Windows上)。
- meta_tag_prefix-特定于imgkit元标记的前缀- 默认情况下,这是imgkit-
示例-例如当wkhtmltopdf不在$PATH中时:
config=imgkit.config(wkhtmltoimage='/opt/bin/wkhtmltoimage')imgkit.from_string(html_string,output_file,config=config)
故障排除
- IOError: 'No wkhtmltopdf executable found':
确保您的$PATH中有wkhtmltoimage或通过 自定义配置(见前一节)。其中wkhtmltoimage在 windows或哪个wkhtmltoimage在linux上应该返回 二元的。
- IOError: 'Command Failed':
此错误表示imgkit无法处理输入。你可以试试 从错误消息直接运行命令并查看导致的错误 失败(在某些WKHTMLTOIMAGE版本上,这可能是由于 分段错误)