この記事では、PythonのPyPDF2とpathlibライブラリを使い、特定のフォルダ内にあるすべてのPDFファイルをアルファベット順に一つのPDFファイルへと自動で結合する、実用的なスクリプトの作成方法を解説します。
1. 準備:PyPDF2のインストール
このスクリプトは、PDFを操作するPyPDF2と、ファイルパスを扱う標準ライブラリのpathlibを使用します。PyPDF2はサードパーティ製のため、事前にインストールが必要です。
pip install PyPDF2
2. プロジェクトの設計
スクリプトの処理フローは以下の通りです。
- スクリプトが実行されたフォルダ(カレントディレクトリ)から、
.pdfで終わるすべてのファイルを探し出す。 - 見つかったPDFファイルをアルファベット順に並び替える。
- 新しいPDFを作成するための
PdfWriterオブジェクトを準備する。 - 並び替えた順に各PDFファイルを開き、その中のページをすべて
PdfWriterオブジェクトに追加していく。 - 最後に、すべてのページが追加された
PdfWriterオブジェクトの内容を、一つの新しいPDFファイルとして保存する。
3. 完成したコード全体
上記の設計に基づいた完全なスクリプトを以下に示します。このコードをmerge_pdfs.pyなどの名前で保存し、結合したいPDFファイルと同じフォルダに置いて実行してください。
from pathlib import Path
import PyPDF2
# 1. カレントディレクトリからPDFファイルを探す
pdf_files = []
# Path('.').glob('*.pdf')で現在のフォルダのPDFをすべて取得
for file_path in sorted(Path('.').glob('*.pdf')):
pdf_files.append(file_path)
print(f"以下の{len(pdf_files)}個のPDFファイルを結合します:")
for file in pdf_files:
print(f" - {file.name}")
# 2. PDFライターを準備
pdf_writer = PyPDF2.PdfWriter()
# 3. 各PDFファイルを開き、ページを追加
for file_path in pdf_files:
try:
# with文でファイルを開く
with open(file_path, 'rb') as f:
pdf_reader = PyPDF2.PdfReader(f)
# reader.pagesで全ページをループ
for page in pdf_reader.pages:
pdf_writer.add_page(page)
except Exception as e:
print(f"エラー: {file_path}の処理中に問題が発生しました - {e}")
# 4. 結合したPDFをファイルに保存
try:
with open('merged_output.pdf', 'wb') as output_pdf:
pdf_writer.write(output_pdf)
print("\nすべてのPDFを'merged_output.pdf'に結合しました。")
except Exception as e:
print(f"\nエラー: ファイルの保存中に問題が発生しました - {e}")
4. 補足:特定のページのみを結合する場合
もし各PDFの最初のページを除外するなど、特定のページだけを結合したい場合は、ページを追加するループ部分を修正します。
例えば、各PDFの2ページ目以降のみを結合するには、for page in pdf_reader.pages:の部分を以下のように変更します。
# スライスを使って2ページ目以降(インデックス1から)を取得
for page in pdf_reader.pages[1:]:
pdf_writer.add_page(page)
まとめ
pathlibを使って効率的にファイルを検索し、PyPDF2の最新のAPI(PdfReader, PdfWriter, add_page)とwith文を組み合わせることで、フォルダ内の多数のPDFを安全かつ確実に結合する処理を自動化できます。このスクリプトは、レポートの各章を個別のPDFとして作成し、最後に一つにまとめるといった作業に役立ちます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
