【Python】写真(画像)をPDF化するimg2pdfのインストール

【Python】写真(画像)をPDF化するimg2pdfのインストール プログラミング

「写真(画像)をPDFに変換したい」
「Pythonで大量の画像でPDFを自動的に作成したい」
「ImageMagick以外の選択肢を探している」

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

本記事の内容

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

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

img2pdfとは?

img2pdfは、画像をPDFに変換するPythonライブラリのことです。
img2pdfの特徴は、以下。

  • ロスレス
  • 小さい
  • 高速

つまり、画像の質を落とさずに容量的にも小さいまま変換が可能ということです。
さらに、処理速度は高速と言われています。

「ImageMagickよりもimg2pdfは素晴らしい」
実際、公式では次のようなニュアンスでimg2pdfを説明しています。

そうは言っても、ImageMagickは昔から活躍してきました。
個人的にも、かなりお世話になりました。

しかし、それだけ歴史があるということは、しがらみが多いはずです。
それは、コードにも言えるし、運営(組織)にも言えるでしょう。

新しい技術やロジックで作る方が、いいモノはできると思います。
しばらみがない分だけ、自由にその辺はできるでしょうね。

利用者としては、そこはシビアに新しい技術の恩恵を受けましょう。

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

img2pdfのシステム要件

現時点(2021年11月)でのimg2pdfの最新バージョンは、0.4.3となります。
この最新バージョンは、2021年10月24日にリリースされています。

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

  • Windows
  • macOS
  • Linux

また、サポート対象となるPythonのバージョンはPython 3.5のみとなります。

一瞬、自分の目を疑いました。
でも、実際setup.pyには次のように記載されています。

これは、単純にsetup.pyの更新漏れでしょう。
それか、テストはPython 3.5のみだからということかもしれません。

いずれにせよ、Python 3.5以降なら問題ないとは思います。
問題があるのは、それ以前のPython 3系という認識です。

実際、問題があったら開発者が対応をしているはずでしょう。
一般的には、次のPython公式開発サイクルにあるバージョンが利用されています。
そのため、以下のPythonバージョンで問題があれば、開発者にトラブル報告なりがあるはずです。

バージョンリリース日サポート期限
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月

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

img2pdfのインストール

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

> python -V 
Python 3.9.8

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

> pip list 
Package    Version 
---------- ------- 
pip        21.3.1 
setuptools 58.5.3 
wheel      0.36.2

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

python -m pip install --upgrade pip setuptools

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

pip install img2pdf

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

> pip list 
Package    Version 
---------- ----------- 
img2pdf    0.4.3 
lxml       4.6.4 
pikepdf    4.0.1.post1 
Pillow     8.4.0 
pip        21.3.1 
setuptools 58.5.3 
wheel      0.36.2

画像やPDFを扱うパッケージが、インストールされています。
それらに依存して、img2pdfが開発されているということです。

以上、img2pdfのインストールを説明しました。
最後に、img2pdfの動作確認を行います。

img2pdfの動作確認

img2pdfには、2つの使い方があります。

  • コマンドラインツール
  • Python API

それぞれの使い方を説明します。
その前に、画像を用意しましょう。

今回は、次の二つの画像を用意しました。
今回用意したのは、jpgですがpngでも問題ありません。

1.jpg

2.jpg

コマンドラインツール

まずは、1枚の画像をPDFにします。

img2pdf 1.jpg -o 1.pdf

上記を実行すると、1.pdfが作成されます。
この1.pdfをChromeで確認したのが、以下の表示となります。

では、画像を二つを1つのPDFに変換してみます。

img2pdf 1.jpg 2.jpg -o all.pdf

all.pdfをChromeで確認したのが、以下。

2ページからなるPDFが、作成されています。

なお、ヘルプは次のコマンドで確認できます。
かなり詳しく記載されています。

 img2pdf --help

Python API

同じようにPython APIでも作成していきます。
まずは、1枚の画像をPDFに変換します。

import img2pdf 

# 1つの画像をPDFに変換する 
with open("1.pdf", "wb") as f: 
    f.write(img2pdf.convert('1.jpg'))

次は、2枚の画像を1つのPDFに集約します。

import img2pdf 

# 2つの画像をPDFに変換する 
img_list = ["1.jpg", "2.jpg"] 
with open("all.pdf", "wb") as f: 
    f.write(img2pdf.convert(img_list))

それぞれ、結果はコマンドラインツールで作成した場合と同じです。

まとめ

コマンドラインツールであれば、他にもツールが存在しています。
ImageMagickのconvertコマンドも同じことができます。

その意味では、img2pdfにはそれほど新鮮味は感じません。
しかし、ImageMagickよりも断然高速に処理が可能のようです。

それに、img2pdfはpipで簡単にインストールできます。
よって、コマンドラインツールとして見ても、img2pdfは導入の価値ありと言えます。

さらに、img2pdfはPython APIとしても利用できます。
Python APIとして使えるなら、複雑なシェルスクリプトを書く必要もありません。

コードからexe・コマンドを強引に呼び出す必要もなくなります。
こういうのは、エラー処理が面倒なんですよね。

つまり、img2pdfはインストールして決して損はないということです。

以上、img2pdfの動作確認の説明でした。

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