關於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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章