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

浙公网安备 33010602011771号