【Python】PDFを作成できるxhtml2pdfのインストール

【Python】PDFを作成できるxhtml2pdfのインストール プログラミング

「PythonでPDFを作成・出力したい」
「綺麗なテンプレートを手間をかけずに作りたい」

このような場合には、xhtml2pdfがオススメです。
この記事では、xhtml2pdfについて解説しています。

本記事の内容

  • xhtml2pdfとは?
  • xhtml2pdfのシステム要件
  • xhtml2pdfのインストール
  • xhtml2pdfの動作確認

それでは、上記に沿って解説していきます。

xhtml2pdfとは?

xhtml2pdfは、HTMLをPDFへ変換できるPythonライブラリです。
Webスキルがあれば、ある程度のデザイン性を持ったPDFを作成できます。

私の知る帳票作成なんて、本当に苦行でした。
Crystal Reportsというツールでチマチマと微調整を繰り返していました。

それがHTMLとCSSだけで作成できるなんて、素晴らし過ぎます。
ましてや、それが無償で利用できますからね。

そうは言っても、ペーパーレスはかなり進んではきました。
しかし、PDFの需要自体はまだまだなくなることはないでしょう。

そのため、PythonでPDFを作成できることを知っておいて損はありません。
それも単純なWebスキルで事足りるとなれば。

以上、xhtml2pdfについて説明しました。
次は、xhtml2pdfのシステム要件を確認します。

xhtml2pdfのシステム要件

現時点(2022年3月)でのxhtml2pdfの最新バージョンは、0.2.6となります。
この最新バージョンは、2022年3月12日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。
(setup.pyに記載されている)

  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

ただし、次のようにもGitHubでは記載されています。

Only Python 3.7+ is tested and guaranteed to work.

利用する側としては、Python 3.7以降と捉えましょう。
Python公式開発サイクルを見ても、Python 3.7以降が適切です。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

まとめると、xhtml2pdfのシステム要件はPython 3.7以降だけに注意すればOK。

以上、xhtml2pdfのシステム要件を説明しました。
次は、xhtml2pdfをインストールします。

xhtml2pdfのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 60.9.3
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、xhtml2pdfのインストールです。
xhtml2pdfのインストールは、以下のコマンドとなります。

pip install xhtml2pdf

インストールには、少し時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package         Version
--------------- -------
arabic-reshaper 2.1.3
cssselect2      0.5.0
future          0.18.2
html5lib        1.1
lxml            4.8.0
Pillow          9.0.1
pip             22.0.4
PyPDF3          1.0.6
python-bidi     0.4.2
reportlab       3.6.8
setuptools      60.9.3
six             1.16.0
svglib          1.2.1
tinycss2        1.1.1
tqdm            4.63.0
webencodings    0.5.1
wheel           0.36.2
xhtml2pdf       0.2.6

xhtml2pdfには、依存するパッケージが多いということです。
既存環境へのインストール時には、少し注意が必要と言えます。

実際、GitHubの公式ページでもPythonの仮想環境の利用を推奨しています。
個人的にも、Python仮想環境の利用をオススメします。

Python仮想環境については、次の記事で説明しています。

以上、xhtml2pdfのインストールを説明しました。
次は、xhtml2pdfの動作確認を行います。

xhtml2pdfの動作確認

単純なhtmlタグをPDFに出力してみましょう。
今回は、Python API(モジュール)としての動作を検証します。

from xhtml2pdf import pisa

# htmlタグ
source_html = '<html><body><h1 style="color:#ff0000;">TEST</h1></body></html>'
# PDFファイル名
output_filename = "output.pdf"

if __name__ == "__main__":

    with open(output_filename, "w+b") as file:
        pisa_status = pisa.CreatePDF(src=source_html, dest=file)

上記コードを実行した結果、同じディレクトリ上にPDFが作成されます。

output.pdf

PDFは、htmlタグの内容通りを表わしています。
では、コードについて少しだけ説明しておきます。

CreatePDF関数は、srcとdestを指定すれば動きます。
他にも多くパラメータが、存在しています。

また、with文については次の記事で解説しています。

以上、xhtml2pdfの動作確認を説明しました。

追記 2022年3月19日
xhtml2pdfで作成したPDFでは、工夫しないと日本語が文字化けします。
文字化けを解消する方法は、次の記事でまとめています。

タイトルとURLをコピーしました