LoginSignup
21
25

More than 3 years have passed since last update.

HTMLファイルをpythonでPDF、イメージ出力

Posted at

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イメージ作成

  1. wkhtmltopdf pdfkit imgkitpip install xxx しバージョン指定して requirement.txt に追加
  2. apt-get install -y wkhtmltopdf wkhtmltopdfをインストール
  3. そのままだと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

実行結果
sample_imgkit.jpg

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 お願いします :clap::clap::clap:

【PR】週末ハッカソンというイベントやってます! → https://weekend-hackathon.toyscreation.jp/about/

21
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
25