python将html转化为pdf
一、安装wkhtmltopdf
1、下载地址:https://wkhtmltopdf.org/downloads.html
2、把下载好的包放到服务器上
3、先安装依赖
yum install -y fontconfig libX11 libXext libXrender libjpeg libpng xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
4、wkhtmltox安装
rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
5、配置
cp /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
6、配置字体
如果 linux 上没有安装中文字体,那么处理 html 中的中文字符将会有问题。所以需要在 linux 上安装中文字体。首先在一台安装了中文字体的机器上找到需要安装的字体文件,我在自己的 Windows10 的目录 C:\Windows\fonts 下找了宋体对应的字体文件 simsun.ttc 并拷贝到 centos7 的字体文件目录 /usr/share/fonts 目录中即可
7、测试
wkhtmltopdf https://www.baidu.com/ /tmp/test.pdf
二、python代码实现
1、安装pdfkit库
pip install pdfkit
2、代码实现
# pdf格式设置
options = {
'page-size': 'A3',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
],
'cookie': [
('cookie-name1', 'cookie-value1'),
('cookie-name2', 'cookie-value2'),
],
'no-outline': None
}
# 将wkhtmltopdf.exe程序绝对路径传入config对象
config = pdfkit.configuration(wkhtmltopdf=r"/usr/local/bin/wkhtmltopdf")
pdfkit.from_file('/usr/local/nginx/html/report.html', '/root/server/python_report/python/report/testReport/report.pdf', options=options, configuration=config)