LoginSignup
0
0

【メモ】PythonでPDF結合_PyPDF2 v3.0.0以上の場合

Posted at

概要

PDF結合しようとしてPythonでさくっとスクリプト書こうとした。
Pythonならすぐ出るだろうとChatGPTに書かせてみたら地味につまづいてしまったのでメモ。

環境

Windows 11
Python 3.11.5
PyPDF2 3.0.1
VSCode 1.68.0

やりたかった処理

指定したフォルダ(folder_path)の中にあるPDFファイルをすべて結合。
出力先PDF(output_pdf)はカレントディレクトリに作成される。

詰まったところ

PdfFileMergerクラスが間違ってるって言われる。

対策

PdfFile◯◯◯クラスはPdf◯◯◯というクラスに置き換える。
【Python】PDFをいじる によれば、PyPDF2ライブラリはVer3.0.0から仕様が変わったようだ。
PyPDF2の公式Documentでもそうなっていて、PdfFile◯◯◯クラスを呼ぶと「Pdf◯◯◯の間違いだろ?」というエラーメッセージを出すようになってる。
The PdfMerger Class — PyPDF2 documentation

ソースコード

# 標準だとUTF-8指定で書けって言われたけど面倒なのでShift-JIS指定した
# -*- coding: Shift-jis -*-

import os
from PyPDF2 import PdfMerger

# 結合するPDFファイルが格納されているフォルダを指定
# '/path/to/your/folder'にフォルダパスを指定する。
folder_path = '/path/to/your/folder'

# 結合後のPDFファイル名を指定
output_pdf = 'combined.pdf'

# PdfMergerオブジェクトを作成
pdf_merger = PdfMerger()

# フォルダ内のPDFファイルを取得
pdf_files = [f for f in os.listdir(folder_path) if f.endswith('.pdf')]

# ファイルが見つからない場合、エラーメッセージを表示
if not pdf_files:
    print("フォルダ内にPDFファイルが見つかりませんでした。")
else:
    # PDFファイルを順番に結合
    for pdf_file in pdf_files:
        pdf_path = os.path.join(folder_path, pdf_file)
        pdf_merger.append(pdf_path)

    # 結合したPDFファイルを保存
    with open(output_pdf, 'wb') as output:
        pdf_merger.write(output)

    pdf_merger.close()

    print(f"{len(pdf_files)} 個のPDFファイルを {output_pdf} に結合しました。")

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0