連番のwebp画像を番号順に、PDF形式の単一のファイルに変換するPythonスクリプトです。
訳あって必要に駆られGeminiに協力してもらいながら作成しました。
前提条件
- 画像はひとつのフォルダ直下にあり、
- ユーザーはPythonにそのフォルダの絶対パスを引数で与える。
- PDFファイルの名前は画像の入ったフォルダ名を用いる。
完成したコードと使い方
コード
import osfrom PIL import Imageimport img2pdfimport sysdef create_pdf_from_images(folder_path): folder_name=os.path.basename(os.path.dirname(folder_path)) pdf_file_name =folder_name + ".pdf" image_extension = ".webp" # Get a list of PNG files in the specified folder image_files = [j for j in os.listdir(folder_path) if j.endswith(image_extension)] # Convert the images to PDF with open(pdf_file_name, "wb") as f: f.write(img2pdf.convert([Image.open(os.path.join(folder_path, j)).filename for j in image_files])) print(f"PDF file '{pdf_file_name}' created successfully!")if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: python script_name.py <folder_path>") sys.exit(1) folder_path = sys.argv[1]+"/"#windowsのドラッグアンドドロップだと末尾のスラッシュがないので付ける create_pdf_from_images(folder_path)
使い方
こんな感じにファイルを用意して、
python test.py C:\Users\loveanime\Desktop\test
とか入力すると、test.pd
f というファイルが生成されます。
ちなみに本来与えるべきパスはC:\Users\loveanime\Desktop\test
\ ですが、WindowsのフォルダをPowerShellなどにドラッグアンドドロップすると末尾に\ はついていないので、ドラッグアンドドロップ前提にスクリプト側で付け足してます。