Html转pdf和img

警告
本文最后更新于 2021-03-31,文中内容可能已过时。

用于wkhtmltoimage实用程序将html转换为imgpython 2和3包装器使用WebKit

安装imgkit和pdfkit

1
2
pip3 install imgkit
pip3 install pdfkit

下载驱动

网站:https://wkhtmltopdf.org/downloads.html

1
2
3
4
5
# centos8
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos8.x86_64.rpm

# centos7
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm

安装

yum install wkhtmltox-0.12.6-1.centos7.x86_64.rpm

使用

简单的示例:

1
2
3
4
5
6
7
import imgkit
# 通过连接的方式
imgkit.from_url('http://google.com', 'out.jpg')
# 通过html的方式
imgkit.from_file('test.html', 'out.jpg')
# 通过字符串的方式
imgkit.from_string('Hello!', 'out.jpg')

使用多种url和文件传递一个列表:

1
2
imgkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.jpg')
imgkit.from_file(['file1.html', 'file2.html'], 'out.jpg')

传递一个打开过的文件:

1
2
with open('file.html') as f:
    imgkit.from_file(f, 'out.jpg')

进一步加工生成IMG,你可以读取一个变量:

1
2
# Use False instead of output path to save pdf to a variable
img = imgkit.from_url('http://google.com', False)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
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)

默认的,IMGKit将会显示所有的wkhtmltoimage输出。如果你不想这样,你需要传递 quiet选项:

1
2
3
options = {
    'quiet': ''
    }

你可以在转化文件或者字符串时使用css选项指定额外的CSS文件.

1
2
3
4
5
6
7
# Single CSS file
css = 'example.css'
imgkit.from_file('file.html', options=options, css=css)

# Multiple CSS files
css = ['example.css', 'example2.css']
imgkit.from_file('file.html', options=options, css=css)

乱码

如果图片中中文无法显示,为一个一个的方格,可下载SimSun.ttf

修改centos字体

1
cd /usr/share/fonts/dejavu
0%