LoginSignup
26
27

More than 3 years have passed since last update.

【Python】WebページやHTMLをPDF出力する

Last updated at Posted at 2019-10-10

大量のPDFをプログラムでバッチ出力したい。
けど、帳票ツールを買うお金はない…。

そうだ、HTMLをPythonスクリプトで組んでPDF変換しよう!
ということでやり方を調べたメモ。

wkhtmltopdfのインストール

まずは、wkhtmltopdfというツールをインストールします。

ダウンロードページ

image.png

インストールしたら インストールフォルダ\wkhtmltopdf\bin にパスを通すと、コマンドラインでWebページをPDF化することができます。

>wkhtmltopdf https://www.google.com/ google.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done

pdfkitを使ってPythonで出力する

pdfkitというPythonライブラリを使います。
これは内部でwkhtmltopdfを使用しています。

pip install pdfkit
import pdfkit

# 指定できる出力オプション https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
options = {
    'page-size': 'A4',
    'margin-top': '0.1in',
    'margin-right': '0.1in',
    'margin-bottom': '0.1in',
    'margin-left': '0.1in',
    'encoding': "UTF-8",
    'no-outline': None,
    'disable-smart-shrinking': '',
}

# WebページをPDF出力
pdfkit.from_url('https://google.com', 'google.pdf', options=options)

"""
パスを通さなかった場合はプログラム内でパスを設定する必要がある。
config_path = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'
config = pdfkit.configuration(wkhtmltopdf=config_path)
pdfkit.from_url('https://google.com', 'google.pdf', options=options, configuration=config)
"""

# HTML/CSSファイルをPDF出力
pdfkit.from_file('index.html', 'index.pdf', css='style.css', options=options)

# テキストをPDF出力
pdfkit.from_string('<html><body><h1>It works!</h1></body></html>', 'apache.pdf', options=options)
26
27
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
26
27