HTMLファイルをPythonでPDF、イメージ出力
ソフトウェア、パッケージのインストール
wkhtmltopdf ... https://wkhtmltopdf.org/
wkhtmltopdf ... https://github.com/qoda/python-wkhtmltopdf
pdfkit ... https://github.com/JazzCore/python-pdfkit
imgkit ... https://github.com/jarrekk/imgkit
Dockerイメージ作成
-
wkhtmltopdf
pdfkit
imgkit
はpip install xxx
しバージョン指定してrequirement.txt
に追加 -
apt-get install -y wkhtmltopdf
wkhtmltopdfをインストール - そのままだとPDF、イメージ出力で日本語が表記されないため
IPAexfont
をダウンロードし/usr/share/fonts
に追加
FROM python:3.7.4
WORKDIR /app
ADD . /app
RUN apt-get update && apt-get install -y wkhtmltopdf && apt-get clean;
RUN wget https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip \
&& unzip IPAexfont00401.zip \
&& mv IPAexfont00401 /usr/share/fonts \
&& fc-cache -f
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ENV TZ Asia/Tokyo
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV PYTHONPATH $PYTHONPATH:/app
ENV PORT 8080
EXPOSE 8080
Dockerビルド、実行
$ docker build -t pg-news .
$ docker run --name pg-news -p 8080:8080 -v ~/Sites/pg-news/:/app -it --rm pg-news bash
イメージ出力
imgkit.from_url
を使うことでWEBサイトをイメージ出力できる
import imgkit
def main():
imgkit.from_url('https://qiita.com/about', 'sample_imgkit.jpg')
if __name__ == "__main__":
main()
root@e5f35d156c6a:/app# python sample_imgkit.py
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Loading page (1/2)
Rendering (2/2)
Done
PDF出力
pdfkit.from_url
を使うことでWEBサイトをPDF出力できる
import pdfkit
def main():
pdfkit.from_url('https://qiita.com/about', 'sample_pdf.pdf')
if __name__ == "__main__":
main()
root@e134508e2c16:/app# python sample_pdfkit.py
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Loading page (1/2)
Printing pages (2/2)
Done
sample_pdf.pdf
がPDF出力される
備考
内部のHTMLを指定することもできる
HTMLをイメージ化してTwitterアップなどいろんな使い道が出来そう
簡単にHTMLをイメージ、PDF出力することが出来ました
いいね!と思ったら LGTM お願いします
【PR】週末ハッカソンというイベントやってます! → https://weekend-hackathon.toyscreation.jp/about/