複数の画像を一つのPDFに変換する

はじめに

画像をためたフォルダの一覧を作る時に困ったことありませんか?今回は画像を1つのPDFファイルに纏める方法をご紹介します。

「img2pdf」のインストール

最初に「img2pdf」をインストールします。

pip install img2pdf

img2pdf
Convert images to PDF via direct JPEG inclusion.

コード

一つのフォルダの中にあるpng画像を抜き出して、PDFに変換します。

folder_path 作ったPDFの保存先
pngFolder png ファイルが保存されているディレクトリ
pdf FileName まとめたPDFファイルの名前

これらの変数を自分の環境に変えて使用してください。

import img2pdf
import os
from PIL import Image
import glob
import subprocess

# 保存先のフォルダパス
folder_path = "D:/python3_cap" 

# 画像フォルダ
png_Folder = "D:/captest/" # 画像フォルダ

#出力するPDFの名前
pdf_FileName = "まとめ.pdf"

#拡張子がPNGのものを対象
extension  = ".png" 

#関数
def find_png_files(folder_path):
    """
    フォルダ内のすべての.pngファイルを検索して、ソートされたリストを返します。

    Args:
        folder_path: 検索対象のフォルダのパス

    Returns:
        PNGファイルのパスを含むソートされたリスト
    """
    png_files = []
    for file_path in glob.glob(os.path.join(folder_path, "*" + extension)):
        if os.path.isfile(file_path):
            png_files.append(file_path)
    return sorted(png_files)


ret = find_png_files(folder_path)
print("リスト長 len = {}".format(len(ret)))

allpath = folder_path + "/" + pdf_FileName
print("作成開始 ファイル名 {}".format(allpath))

with open(allpath,"wb") as f:
        # 画像フォルダのファイルを取得し配列に追加、バイナリ形式でファイルに書き込む
        f.write(img2pdf.convert(ret))

print("作成終了")

subprocess.Popen("explorer",folder_path + "/", shell=True)

内容はコメントに書いてあるので、見てみてください。