Pythonを使用してPDFを一連の画像に変換する
-
22-07-2019 - |
質問
Pythonを使用して、複数ページのPDFを一連のJPEGに変換しようとしています。利用可能なツールでPDFを個々のページに簡単に分割できますが、PDFを画像に変換できるものは見つかりませんでした。
PILはPDFを読み取れないため、機能しません。私が見つけた2つのオプションは、シェルでGhostScriptまたはImageMagickを使用することです。このプログラムはクロスプラットフォームである必要があるため、これは私にとって実行可能なオプションではありません。これらのプログラムのいずれかが、インストールおよび使用されるマシンで使用可能かどうかはわかりません。
これを実行できるPythonライブラリはありますか?
解決
他のヒント
Python ghostscriptモジュール(「$ pip install ghostscript」によってインストールされます)を使用して、私にとってうまくいったことは次のとおりです。
import ghostscript
def pdf2jpeg(pdf_input_path, jpeg_output_path):
args = ["pdf2jpeg", # actual value doesn't matter
"-dNOPAUSE",
"-sDEVICE=jpeg",
"-r144",
"-sOutputFile=" + jpeg_output_path,
pdf_input_path]
ghostscript.Ghostscript(*args)
Ghostscript 9.18もコンピューターにインストールしましたが、そうでなければおそらく機能しなかったでしょう。
Ghostscript依存関係は避けられません。 Imagemagickでさえ、PDF読み取り機能についてGhostscriptに依存しています。この理由は、PDF形式の複雑さです。PDFにはビットマップ情報が含まれているだけでなく、ほとんどがベクトル形状、透明度などです。 さらに、どのオブジェクトがどのページに表示されるかを把握するのは非常に複雑です。
したがって、PDFページの正しいレンダリングは、純粋なPythonライブラリの範囲外であることは明らかです。
良いニュースは、Ghostscriptが多くのウィンドウとLinuxシステムにプリインストールされていることです。これらはすべてのPDFプリンター(Adobe Acrobatを除く)にも必要なためです。
Linuxを使用している場合、一部のバージョンには「pdftopbm」と呼ばれるコマンドラインユーティリティが付属しています。 netpbm
をご覧ください。