keep-loving-pythonのブログ

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

解決策。エラー:ImportError: cannot import name 'PdfFileMerger' from 'pypdf'

解決策。エラー:ImportError: cannot import name 'PdfFileMerger' from 'pypdf'

エラー内容

ImportError: cannot import name 'PdfFileMerger' from 'pypdf' (C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pypdf\__init__.py)

エラー詳細

C:\_JITAKU_DE_GYOMU\_python_by_chatgpt>python python_shioriY.py
Traceback (most recent call last):
  File "python_shioriY.py", line 2, in <module>
    from pypdf import PdfFileMerger, PdfFileReader, PdfFileWriter
ImportError: cannot import name 'PdfFileMerger' from 'pypdf' (C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pypdf\__init__.py)

環境

windows10
python3.7.2

対象ソース

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)

解説策

PdfFileMerger ⇒ PdfMerger に変更 PdfFileReader PdfFileWriter も同様に。

他にもエラーでますが、一旦、この記事は閉じます。

関連記事

keep-loving-python.hatenablog.com