pythonでPDFをjpgやpng画像に変換する方法
pdf2imageというモジュールを使う。
Popplerという外部ツールも必要。
Popplerは、PDFの閲覧用のマルチプラットフォームのライブラリ。
エラー表示
Unable to get page count. Is poppler installed and in PATH?
(ページ数を取得できません。popplerはインストールされていますか?PATHにありますか?)
pdfinfo.exeのあるフォルダにパスを通す必要がある。
poppler-windowsのダウンロード
https://github.com/oschwartz10612/poppler-windows/releases/
「poppler-22.01.0」フォルダを下記ディレクトリに移動させる
C:\Program Files (x86)
PATHを通す。
システム環境変数の編集を開く。
環境変数をクリック
システム環境変数のPathを選んで編集
「新規」を押して、先程移動したpopplerフォルダの中のbinフォルダまでのパスを追加する。
C:\Program Files (x86)\poppler-22.01.0\Library\bin
popplerの動作確認方法
コマンドプロンプトを開いて、pdfinfo -listencを実行する。
実行結果
>pdfinfo -listenc
Available encodings are:
.
..
ASCII7
Big5
Big5ascii
EUC-CN
EUC-JP
GBK
ISO-2022-CN
ISO-2022-JP
ISO-2022-KR
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
KOI8-R
Latin1
Latin2
Shift-JIS
Symbol
TIS-620
UTF-16
UTF-8
Windows-1255
ZapfDingbats
以下を実行。pdf2imageはpipでインストールしておく。
from pdf2image import convert_from_path
images = convert_from_path('test.pdf')
images[0].save('out.png')
test.pdfと同じフォルダ内にout.pngファイルを出力することができた。
試しにout.png⇒out.jpgに変更して実行してみたら、jpgファイルが出力できた。
しかしこれだと解像度が低い。
convert_from_path()の第二引数に解像度を指定できる。
images = convert_from_path('test.pdf',350)
これで高解像度で画像化できた。
複数枚のPDFをすべてjpgやpng画像に変換する方法
配列imagesの長さをlen()で取得してforで回す。
.save()でimgフォルダにjpg画像として保存する。
from pdf2image import convert_from_path
images = convert_from_path('test.pdf')
for i in range(len(images)):
images[i].save('img/img'+str(i)+'.jpg', 'JPEG')
参考サイト
PythonでPDFを画像に変換する(Windows10)
Winodws10にPDFツールのPopplerをインストールする方法と、pdf2imageをインストールする方法を解説します。PDFのページを画像に変換するサンプルコード付きです。
コメント