wkhtmltopfd python包装器,使用webkit呈现引擎和qt将html转换为图像

imgkit的Python项目详细描述


Build StatusCode CoverageCodacy BadgePyPI version

 _____   __  __    _____   _  __  _   _
|_   _| |  \/  |  / ____| | |/ / (_) | |
  | |   | \  / | | |  __  | ' /   _  | |_
  | |   | |\/| | | | |_ | |  <   | | | __|
 _| |_  | |  | | | |__| | | . \  | | | |_
|_____| |_|  |_|  \_____| |_|\_\ |_|  \__|

用于wkhtmltoimage实用程序将html转换为img的python 2和3包装器 使用WebKit。

安装

  1. 安装imgkit:

    pipinstallimgkit
  2. 安装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命令语法,toccover选项必须 单独说明。如果你需要掩护,使用 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版本上,这可能是由于 分段错误)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何编写带有连接的动态JPA查询?   子列表上的java分区列表,其中相邻子列表的第一个和最后一个元素相同   java限定符注释方法找不到作为配置类的bean   java同时抛出主异常和子类型,有合适的方法吗?   LString将是一个链表类,它模仿标准的JavaString和StringBuilder类   spring上下文关闭时java停止ConcurrentTaskScheduler   Java继承基类使用派生类方法   java Google的zxing(斑马线)条形码库的位矩阵不是它应该位于的位置   java使用springhateoas反序列化包含(_链接和_嵌入)的JSON   java破坏者如何使用环形缓冲区读取文件?   java在Android中获得用户的日常路线?   javajenkins:依赖于其他工件/项目的构建作业   java家庭替换应用程序/视图网格使用哪种布局?   java如何从签名证书创建信任库和密钥库?