Python HTML->PDF

1. 依赖:

Linux系统
wkhtmltopdf 最好是 (with patched qt) 版本 功能更加完善
下载地址: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.5/

2. 流程

(1). 生成本地 HTML 文件
(2). 使用 wkhtmltopdf 命令

# 1. 生成html
save_file_path = "/static/"
file_name = "123456"
html_str = "XXXXX"
html_file = save_file_path + file_name + ".html"
with open(file=html_file, mode="wb") as f:
	f.write(html_str)

# 2. wkhtmltopdf 生成PDF
pdf_file = save_file_path + file_name + ".pdf"
cmd = "wkhtmltopdf --enable-local-file-access --javascript-delay 3000" \
	" --footer-center '第[page]页 / 共[topage]页' --image-quality 200 -L 30 -R 30 -T 20 -B 20 %s %s" % (
	html_file, pdf_file)
try:
	os.system(cmd)
	if os.path.isfile(pdf_file):
		os.remove(html_file)

except Exception as e:
	logging.error(e)

命令讲解:

1. --enable-local-file-access 允许访问 HTML 里面的静态文件 如图片
2. --javascript-delay 3000    等待 HTML 内 JS 代码执行 3秒后 再渲染 PDF
3. --footer-center '第[page]页 / 共[topage]页'   PDF文件 底部中间 添加分页显示
4. -L 30 -R 30 -T 20 -B 20   内容左边距 右边距 上边距 下边距

3. 乱码问题

未安装中文字体库

# 查看目前已安装的字体
fc-list

# 创建字体文件目录
mkdir /usr/share/fonts/zh_CN

# 下载所需字体msyh.ttf
# 把下载的字体文件移至目录下
mv msyh.ttf /usr/share/fonts/zh_CN

# 刷新字体缓存
fc-cache -fv
posted @ 2021-07-01 15:38  gz_xiaohai  阅读(91)  评论(4)    收藏  举报