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 @   gz_xiaohai  阅读(79)  评论(4编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示