「写真(画像)を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.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年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の動作確認の説明でした。