概要
このブログでは、Pythonを使用して複数のPDFファイルを一つのファイルに結合する方法を詳細に説明します。フォルダ内の全PDFファイルを選択し、一つのファイルにまとめることができるため、業務の効率化に大いに役立ちます。
使用例
- 会議資料や報告書など、複数のPDFを一つにまとめて提出する場合
- スキャンした書類のファイルが多数存在する場合に、一つのファイルにまとめてアーカイブする
必要なPythonライブラリとインストール方法
このスクリプトで使用する主要なライブラリは PyPDF2
です。このライブラリをインストールするには、以下のコマンドを実行してください。
pip install pypdf2
使用手順
- 上記のコマンドを使用して
PyPDF2
ライブラリをインストールします。 - 以下のプログラムをコピーして、任意の名前で
.py
拡張子のPythonファイルを作成します。 - Pythonスクリプトを実行すると、ファイルダイアログが表示され、結合したいPDFが含まれるフォルダと、保存先のファイル名を指定します。
注意点
- このスクリプトは、指定されたフォルダ内の全てのPDFファイルを結合します。非PDFファイルが含まれている場合は無視されます。
- 出力ファイル名には自動的に
.pdf
拡張子が追加されますが、ファイル保存ダイアログで明示的に拡張子を指定することを推奨します。
プログラム
下記のコードをメモ帳などに丸々コピーしてPythonファイル(〇〇.py)にしてください。
import os
from PyPDF2 import PdfReader, PdfWriter
from tkinter import filedialog, Tk
def merge_pdfs(folder_path, output_path):
pdf_writer = PdfWriter()
current_page = 0 # 現在のページ数を追跡
files = [f for f in sorted(os.listdir(folder_path)) if f.endswith('.pdf')]
for filename in files:
file_path = os.path.join(folder_path, filename)
pdf_reader = PdfReader(file_path)
pdf_writer.add_outline_item(title=filename[:-4], page_number=current_page)
for page in pdf_reader.pages:
pdf_writer.add_page(page)
current_page += 1
with open(output_path, 'wb') as out:
pdf_writer.write(out)
def main():
root = Tk()
root.withdraw()
folder_selected = filedialog.askdirectory(title="結合するPDFがあるフォルダを選択してください")
if not folder_selected:
return
file_path = filedialog.asksaveasfilename(title="保存先のPDFファイル名を選択してください",
filetypes=[("PDF files", "*.pdf")],
defaultextension=".pdf")
if not file_path:
return
if not file_path.lower().endswith('.pdf'):
file_path += '.pdf'
merge_pdfs(folder_selected, file_path)
print("PDFの結合が完了しました。")
if __name__ == "__main__":
main()
あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。
まとめ
この方法を使えば、複数のPDFファイルを効率的に一つのファイルに結合することができます。ファイルの整理や文書の管理において、大変役立つツールとなるでしょう。また、GUIを通じてファイルを選択できるため、プログラミングが初めての方でも簡単に利用開始できます。