とっちゃん@nyanco! です。
今回はWindowsの指定したディレクトリ内にあるPDFファイルの任意の1ページをJPGデータに一括変換するPythonコードの共有です。
抽出するページは任意に変更できますにゃ~!
コードの動作環境
- OS:Windows10 ※macOSでは未確認
- Pythonバージョン:3.11.2
- 必要ライブラリ:os fitz
コード作成のきっかけ
とある業務で、複数のPDFの1ページ目を抜きだして画像ファイルにする必要に迫られたのがきっかけです。
対象となるPDFファイルの数は手動でもやろうと思えばできるレベルだったのですが、これはpythonが得意そうな作業かなと思いChatGPTにサクッと作成してもらいました。
幾度かのやり取りでほんとにサクッとできましたにゃ〜
フォルダ内のPDFの1ページ目をJPGに一括変換するコード
早速ですがコードはこちら!
import fitz # PyMuPDFライブラリをインポート
import os
# フォルダのパスを指定
import fitz
import os
# フォルダのパスを指定
folder_path = 'ファイルパス' # 例:'C:/Users/【ユーザー名】/Desktop/input'
# フォルダ内のPDFファイルを処理
for filename in os.listdir(folder_path):
if filename.endswith('.pdf'):
pdf_file_path = os.path.join(folder_path, filename)
# PDFファイルを開いて、指定したページをJPGに書き出す
pdf_document = fitz.open(pdf_file_path)
target_page = 0 # ページを指定(ページ番号は[0]からなので[0]が[1]ページ、[1]が[2]ページとなります)
if target_page > pdf_document.page_count - 1:
target_page = pdf_document.page_count - 1 # 無効なページ番号を防ぐ
page = pdf_document.load_page(target_page)
image = page.get_pixmap()
# 出力ファイル名を一意に生成
file_name, file_ext = os.path.splitext(filename)
output_image_path = os.path.join(folder_path, f'{file_name}_page{target_page + 1}.jpg') # ページ番号は[0]から始まるため+1する
# JPGファイルとして保存
image.save(output_image_path, 'jpeg')
# PDFドキュメントを閉じる
pdf_document.close()
print(f'{pdf_file_path} の{target_page + 1}ページ目を {output_image_path} に書き出しました')
コードはChatGPTで作成したものを少しカスタマイズしています。
9行目のfolder_pathの”ファイルパス”に、対象のPDFがあるファイルパスをコピーペーストして使ってください。
サブフォルダ(フォルダ内のフォルダ)のPDFは処理対象外となります。
また、画像として抽出したいページを変更したい場合は18行目のtarget_pageの数値を変更することでカスタマイズできます。
一点注意なのは、プログラムは [0] から数えるという特性から実際のページ数から-1した数値で指定する必要がある点です。
デフォルトは 0 なので 1ページ目が抽出されるということですにゃ~
10ページ目を抽出したい場合は 9 を指定する感じですにゃ~
▼サクッとすぐに使えるように下記より.pyファイルのダウンロードも可能です(zip圧縮しています)。
→フォルダ内のPDFの1ページ目をJPGに一括変換するPythonコードをダウンロード
おわりに
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント