关于python docker镜像环境下无法apt安装wkhtml2pdf的解决方案

关于python docker镜像环境下无法apt安装wkhtml2pdf的解决方案

事情经过:

由于需求需要生成pdf文件,第一种方案是使用reportlab,使用后发现pdf文件内容需要逐行进行内容绘制,最大的问题是表格内容高度和宽度无法进行自适应,导致表格内容溢出,影响阅读体验,故最终选择pdfkit即依赖wkhtml2pdf将html文件生成pdf文件.

1.下载wkhtml2pdf二进制压缩文件

下载地址:https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

2.解压并导出环境变量

以下命令是以Dockerfile内的命令为基础,其它脚本可以做出修改适应

FROM python:3.6
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY . /app
RUN tar vxf /app/static/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && cp /app/wkhtmltox/bin/wk* /usr/local/bin/

3.docker镜像普遍不支持中文之类的显示或生成,故生成的PDF文件有中文的时候还需要进行字体迁移支持

  • 对于带桌面的OS,wkhtml2pdf会以当前OS的默认字体进行输出,对于无桌面环境,查了资料wkhtml2pdf对于中文的支持貌似只支持宋体,有条件的可以进行测试下

  • 下载宋体,可以在Windows系统中直接copy字体文件或者从网络上下载宋体文件,然后生成字体缓存

    FROM python:3.6
    ENV PYTHONUNBUFFERED 1
    WORKDIR /app
    COPY . /app
    RUN cp /app/static/宋体.ttc /usr/share/fonts/truetype/dejavu && fc-cache -fv
    

4.此时wkhtml2pdf使用环境已经就绪,可以进行html转换成pdf了

import pdfkit
pdfkit.from_file('test.html', 'test.pdf')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章