【5分でわかる】PythonでウェブページやHTMLをPDFに変換し保存

 

【悩み】
・Pythonでウェブページ(HTML)をPDFファイルに変換し保存できる?
・グラフや日本語が掲載されたウェブページもPDFに出力したい。
・pdfkitとは?wkhtmltopdfとは?この2つは何が違うの?



こういった「悩み」に答えます。
 

【本記事の内容】
① Pythonのライブラリ「pdfkit」とは
➁ pdfkitでHTMLをPDFに変換する手順
➂ pdfkitを使いHTMLをPDFに変換する際の注意点



本記事を実践することで、「指定したウェブページをPDFに変換しパソコン内に保存する」プログラムを作れました(下の動画参照)。
 



記事の前半では「どのPythonライブラリを使えばいいのか?」や「pdfkitライブラリとは何か?」を解説します。

記事の後半では「HTMLで作成されたウェブページをPythonでPDFに変換する方法」を紹介します。
  

この記事を読み終えることで、「大量のWebページを一気にPDFに出力」できる状態になります。

 

Pythonのライブラリ「pdfkit」とは


「Pythonのライブラリ pdfkit とは?」に関してご紹介します。
 

★ご紹介事項★
① pdfkitとは:Pythonでwkhtmltopdfを使うためのライブラリ
➁ wkhtmltopdfとは:HTMLをPDFに変換できるソフトウェア
➂ 動作環境



以降で、上記の各項目に関してご説明します。
 

pdfkitとは:Pythonでwkhtmltopdfを使うためのライブラリ

Pythonで「HTMLをPDFに変化」したい場合、「pdfkit」というライブラリを使います。
 

【pdfkitとは】
・機能:指定したWebページをPDFとして保存できるPythonのライブラリ
・処理:wkhtmltopdfというソフトを内部で使ってPDF変換する(下図参照)
・ライセンス:MITのため無料で利用可能
・公式サイト:pdfkit(PyPI)
・ソースコード:GitHubで公開されている

 



上図のように、pdfkitは「wkhtmltopdf」というソフトウェアを内部で使ってHTMLをPDFファイルに変換します。

そのため、pdfkitを使うためには「wkhtmltopdf」というソフトウェアのインストールが必要です。
 

wkhtmltopdfとは:HTMLをPDFに変換できるソフトウェア

先ほどお伝えした通り、pdfkitの内部で「wkhtmltopdf」というソフトウェアが使われます。
 

【wkhtmltopdfとは】
・機能:HTMLをPDFに変換できるソフトウェア
・処理:GUIおよびCUI(コマンド)で利用可能
・ライセンス:LGPL-3.0 licenseであるため商用で使うときは注意
・公式サイト:wkhtmltopdf
・ソースコード:GitHubで公開されている



Pythonを使わずに「HTMLをPDFに変換したい」場合、wkhtmltopdfの利用を検討してください。
 

動作環境

pdfkitとwkhtmltopdfの動作環境は、以下となります。
 

【動作環境】
・pdfkit
 Pythonおよびwkhtmltopdfが動く環境であれば動作可能
・wkhtmltopdf
 windowsやMacOSなど様々な環境で動作可能
 >> サポート環境一覧



以降では、Windows環境でPythonのpdfkitライブラリを使って、HTMLで作成されたウェブページをPDFファイルに変換する手順をご紹介します。

 

pdfkitでHTMLをPDFに変換する手順


「pdfkitでHTMLをPDFに変換する手順」に関してご紹介します。
 

★ご紹介事項★
① wkhtmltopdfのインストール
➁ Pythonのインストール
➂ pdfkitのインストール
④ Web公開されたHTMLをPDFとして保存するコードの作成と実行



以降で、上記の各項目に関してご説明します。
 

wkhtmltopdfのインストール

まずは、wkhtmltopdfをインストールします。
 

wkhtmltopdfのインストーラーをダウンロードすることで、簡単にインストールできます。



wkhtmltopdfのインストーラーをダウンロードするために、ウェブブラウザで以下のURLにアクセスしてください。

>> wkhtmltopdfのインストーラーをダウンロードできるページ(公式サイト)


アクセス後、「Windowsのインストーラー」(下図の赤枠)をクリックします。
 



その後、ダウンロードしたwkhtmltopdfのインストーラーをクリックしてください。
 



クリック後、wkhtmltopdfのライセンス規約が表示されます。表示後、「I Agree」(下図の赤枠)をクリックしましょう。
 



クリック後、wkhtmltopdfのセットアップ画面が表示されます。インストール先に問題がない場合、「Install」(下図の赤枠)をクリックしてください。

Destination Folderに記載したPATHは、Pythonプログラム作成時に必要になるので、手元にメモしておいてください。
 



クリック後、wkhtmltopdfのセットアップが実施されます。正常にセットアップが終了した場合、下図の画面が表示されます。
 



以上で、wkhtmltopdfのインストールができました。
 

Pythonのインストール

続いて、PythonをWindowsにインストールしましょう。
 

簡単なマウス操作でPythonをwindowsにインストールできます。



以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。

>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】

>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】

>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照

>> 【環境構築】インストーラーでMacOSにPythonをインストール
 

pdfkitのインストール

次に、Pythonでwkhtmltopdfを操作できるライブラリ「pdfkit」をインストールします。
 

コマンドライン経由でインストールできます。



pdfkitライブラリをインストールするために、コマンドプロンプトを起動し、以下のコマンドを実行しましょう。
 

>pip install pdfkit
Collecting pdfkit
  Downloading pdfkit-1.0.0-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-1.0.0

[notice] A new release of pip available: 22.1.2 -> 22.2.2
[notice] To update, run: C:\Users\user\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip

>



コマンド実行後、「Successfully installed pdfkit-1.0.0」が表示された場合、「正常にインストールできた」と判断できます。
 

Web公開されたHTMLをPDFとして保存するコードの作成と実行

それでは、pdfkitライブラリを用いたPythonプログラムを作成しましょう。
 

6行で「HTMLをPDFに変換する」Pythonプログラムを作成できます。



pdfkitライブラリを使った「HTMLをPDFに変換する」Pythonプログラムは、以下となります。

# ライブラリをインポート
import pdfkit

# メモしたDestination Folderを設定
wkhtmltopdf_path = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe' 

# PDF化したいWebページのURL
target_url = 'http://kakedashi-xx.com' 

# 生成されるPDFの名前
pdf_path = 'test.pdf' 

# HTMLで公開されたWebページをPDFに変換しファイル保存
config = pdfkit.configuration(wkhtmltopdf = wkhtmltopdf_path)
pdfkit.from_url(target_url,pdf_path,configuration =config)



上記プログラムを「convert-html-to-pdf.py」というファイル名で保存しましょう。
 

・configuration関数の使い方
 機能:pdfkitの設定をする
 引数:wkhtmltopdf関係の設定を指定
 リファレンス:configurationのリファレンス(公式サイト)
・from_url関数の使い方
 機能:HTMLをPDF変換する
 第一引数:PDFに変換したいウェブページのURL
 第二引数:変換後のファイル名
 第三引数:オプションの指定
 リファレンス:from_urlのリファレンス(公式サイト)



作成した「HTMLをPDFに変換するPythonプログラム」を実行するために、以下のコマンドを実行してください。

C:\Users\user>python convert-html-to-pdf.py



コマンド実行後、「test.pdf」が作成された場合、「HTMLをPDFに変換するPythonプログラムを正常に実行できた」と判断できます。
 

ちなみに、コマンド実行後、下の動画のように、PDFが作成されます。
 

 



以上が、「Web公開されたHTMLをPDFとして保存するコードの作成と実行」となります。
 

上記の流れで、Pythonを使って、ウェブ上に公開されたHTMLをPDFに変換し、手元のパソコンに保存できました。


 

pdfkitを使いHTMLをPDFに変換する際の注意点


「pdfkitを使いHTMLをPDFに変換する際の注意点」に関してご紹介します。
 

★注意事項★
① ロード時間が遅いウェブページ
➁ グラフが掲載されたウェブページ



以降で、上記の各項目に関してご説明します。
 

ロード時間が遅いウェブページ

pdfkitライブラリを使って、ロード時間が遅いウェブページ(例えば、javascriptを使っているページ)をPDF変換する場合、正常にPDF変換されないことがあります。

その際は、以下の対策の実施で、正常にPDF変換されることがあります。
 

【対策】
・オプションとして「javascript-delay」を指定
・コード例
 config = pdfkit.configuration(wkhtmltopdf = “wkhtmltopdfのPATH”)
 options = { ‘javascript-delay’: ‘10000’ # アクセス後10秒待つ}
 pdfkit.from_url(URL,PDF名,configuration =config, options=options)
指定できるオプション一覧(公式サイト)


 

グラフが掲載されたウェブページ

pdfkitを使って、グラフが掲載されたウェブページをPDF変換する場合、出力されたPDFには、グラフが記載されないことが多いです。

例えば、以下のウェブページに掲載されたグラフを出力することができませんでした。

>> 【図解】WordPressでグラフを作成する手順【Visualizerの利用】

 

グラフがPDFに出力できていない例



筆者が調べた範囲では、「pdfkitまたはwkhtmltopdfではグラフをPDFに出力できない」と考えています。

ウェブページに掲載されたグラフをパソコン上に残したい場合、以下の方法を検討してみてください。
 

対策:スクリーンショット機能を有するライブラリを使う。
ライブラリの例:PythonのPyAutoGUIライブラリを使う



PyAutoGUIライブラリとは何か?を知りたい方には、以下の記事がオススメです。

>> 【要点】PyAutoGUIとは?初心者向けに特徴から使い方までを図解


 

上記の注意点を踏まえた上で、適切にpdfkitを使い、HTMLをPDFに変換してみてください。



今回紹介したPythonのライブラリである「pdfkit」を使うことで、「決められたウェブページやHTMLをPDF化作業」を時短化できます。

本ブログでは、Pythonを使った様々な作業時短化をご紹介しています。

>> 作業の時短化に使えるPythonプログラミングの事例集(本ブログ)


 

【まとめ】PythonでウェブページやHTMLをPDFに変換し保存


いかがでしたでしょうか?

上記で紹介した「Pythonのpdfkitライブラリ」を使うことで、「HTMLで作成されたウェブページをPDFに変換した上でパソコンに保存」できます。

最後にもう一度内容を確認しましょう。
 

【まとめ】
・Pythonでウェブに公開されたHTMLをPDFに変換したい場合、pdfkitを使う
・pdfkitは無料で使うことができ、6行のコードでHTMLをPDF変換できる
・グラフが掲載されたウェブページをPDF化したい場合には不適切



本ブログでは、Pythonを使った様々な作業時短化をご紹介しています。様々な作業を時短化し仕事をラクにしたい方にとって、役に立つ情報を本ブログでは発信しています。

>> 作業の時短化に使えるPythonプログラミングの事例集(本ブログ)


 

コメント