python PDFファイルの結合

pythonでPDFファイルを結合するプログラムです。 

使用ソフトはVScode。
PDF編集ライブラリの " pypdf " をインストールしておきます。
下記のコードでインストールできます。
        pip install pypdf


以下、コードです。

#PDF結合
iimport glob
import os
import sys
from datetime import datetime
from pypdf import PdfWriter
import re

def natural_sort_key(s):
    """文字列を自然順ソートできるキーを生成"""
    return[int(text) if text.isdigit() else text.lower()
        for text in re.split(r'(\d+)',s)]

def get_base_dir():
    """実行ファイルの基準ディレクトリを取得"""
    if getattr(sys,'frozen',False):
        return os.path.dirname(sys.executable)
    else:
        return os.path.dirname(os.path.abspath(__file__))
   
#基準ディレクトリを取得
base_dir=get_base_dir()
input_dir=os.path.join(base_dir,)
output_dir=os.path.join(base_dir,)

#現在の日時を取得してタイムスタンプを作成
timestamp=datetime.now().strftime("%Y%m%d_%H%M%S")
output_file_name=f"merged_{timestamp}.pdf"

"PDFファイルを取得(自然順ソートを適用)"
pdf_files=sorted(glob.glob(os.path.join(input_dir,"*.pdf")),key=natural_sort_key)

#PDFの場合
merger=PdfWriter()

try:
    if not pdf_files:
        print(f"指定されたディレクトリにPDFファイルがありません:{input_dir}")
    else:
        for pdf in pdf_files:
            merger.append(pdf)

    os.makedirs(output_dir,exist_ok=True)
    output_path=os.path.join(output_dir,output_file_name)
    merger.write(output_path)
    print(f"PDFの結合が完了しました:{output_path}")

except Exception as e:
    print(f"エラーが発生しました:{e}")

finally:
    merger.close()

◆使用法用
pythonプログラムを保存したフォルダーに結合したい複数のPDFファイルを保存してから実行するだけです。
結合はファイル名順にファイルが結合されるため、ファイル名を1からの数字順にしておくと順番通りに結合できます。









コメント