【悩み】
・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の利用】
筆者が調べた範囲では、「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プログラミングの事例集(本ブログ)
コメント