keep-loving-pythonのブログ

Pythonを愛し続けたいです(Pythonが流行っている限りですが。。。)

ChatGPT(3.5)が「PyPDF2」を使ったコードを作る(薦める)かもしれないが、「pypdf」を使おう!

ChatGPTによるコードの例

素晴らしい!の一言。ChatGPT3.5。
尚、
しおりのページの扱いがおかしかったので、一回、修正してもらった。
ただし、pypdfXのバージョン問題あり(後述)。

from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter
import os

# 3つのPDFファイルをリストで指定
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]

# マージしたPDFファイルの出力先ファイル名
output_pdf = "merged_file.pdf"

# PdfFileMergerオブジェクトを作成
merger = PdfFileMerger()

# それぞれのPDFファイルを結合
for pdf_file in pdf_files:
    merger.append(pdf_file)

# マージしたPDFファイルを保存
merger.write(output_pdf)
merger.close()

# 作成したPDFファイルにしおりを追加
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader(output_pdf)

# ページ数の累積値を取得
cumulative_page_count = 0
for pdf_file in pdf_files:
    pdf = PdfFileReader(pdf_file)
    pdf_title = os.path.splitext(os.path.basename(pdf_file))[0]
    pdf_writer.addBookmark(pdf_title, cumulative_page_count)
    cumulative_page_count += pdf.getNumPages()

# しおりを追加したPDFファイルを保存
with open(output_pdf, "wb") as f:
    pdf_writer.write(f)

環境

windows10
Python 3.7.2

「pypdf」と、「PyPDF2」の関係

以下の記事を参照して下さい。
元々、pypdf で、 PyPDF2というのが出来て(それ自体は活動が終わって?)、
またpypdfに戻った。
よって、pypdfを使うのが適当。

qiita.com

上のコードの問題

ChatGPTの弱点(欠点)だと思うが、
(もの凄い)古いバージョンのメソッドが混ざる(というか、すべて古いバージョンのメソッド。) 解決方法は、以下、参照。

pypdf.readthedocs.io