実現したいこと
複数のPDFファイルを結合したいのですが、弊社はJustPDF4しか使えず。
いろいろ試した結果、Pythonにたどりつきました。
https://qiita.com/NY0R0N/items/727b1ea4eddeb07c5b80
発生している問題・分からないこと
ExcelVBAしか経験がなく、なんのエラーなのか、どうすれば良いのかわかりません。
エラーメッセージ
error
1C:\Users\***\Desktop\test>python mergedPDF2.py 2Traceback (most recent call last): 3 File "C:\Users\***\Desktop\test\mergedPDF2.py", line 6, in <module> 4 merger = PyPDF2.PdfFileMerger() 5 File "C:\Users\***\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyPDF2\_merger.py", line 817, in __init__ 6 deprecation_with_replacement("PdfFileMerger", "PdfMerger", "3.0.0") 7 File "C:\Users\***\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyPDF2\_utils.py", line 369, in deprecation_with_replacement 8 deprecation(DEPR_MSG_HAPPENED.format(old_name, removed_in, new_name)) 9 File "C:\Users\***\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyPDF2\_utils.py", line 351, in deprecation 10 raise DeprecationError(msg) 11PyPDF2.errors.DeprecationError: PdfFileMerger is deprecated and was removed in PyPDF2 3.0.0. Use PdfMerger instead.
該当のソースコード
import sys sys.path.append("C:/Users/***/AppData/Local/Microsoft/WindowsApps/python3.10/site-packages") import PyPDF2 merger = PyPDF2.PdfFileMerger() merger.append('2024年8月分.pdf') merger.append('2024年9月分.pdf') merger.write('merged.pdf') merger.close() print("done")
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ググると、DeprecationWarningについては沢山出てきますが、DeprecationErrorとは違うよね?とハテナがいっぱいです。
元のコード
sys.path.append("/usr/local/lib/python3.9/site-packages")
を
sys.path.append("C:/Users/***/AppData/Local/Microsoft/WindowsApps/python3.10/site-packages")
に変更しています。
sys.path.append("C:/Users/***/AppData/Local/Microsoft/WindowsApps/python3.10")
でも同様のエラーでした。
補足
特になし
> PdfFileMerger is deprecated and was removed in PyPDF2 3.0.0.
と書いてあるのを読んでいますか?
JustPDF2しか手元にありませんが、印刷時に既存のpdfファイルを指定すると
「既存のファイルと連結する」という選択肢が出ます。
少数であれば手動でも良いのでは?
(大量のファイルを対象にしたいのでプログラムで流したいという要件があれば、
その旨質問文に追記してください。)
ありがとうございます。DeepLで翻訳してみました。
PdfFileMergerは非推奨で、PyPDF2 3.0.0で削除されました。代わりにPdfMergerを使用してください。
と出てきたので、
merger = PyPDF2.PdfMerger()
に変更して実行してみた結果、doneの表示は出ました。
が、結合されたファイルは出来上がってこないのですが、なにがダメなんでしょうか。。。
ありがとうございます。
>少数であれば手動でも良いのでは?
一連の流れとしては、
1.Outlookで受信したメールに添付されているファイルを所定のフォルダに保存
2.保存されたPDFファイルのみを結合
3.担当者へお知らせ
という感じです。結合するファイルは2~15ファイルくらいで変動するそうです。
1と3はExcelVBAで実現できているのですが、2で躓きました。
添付されたPDFのファイル数やファイル名等はVBAで取得、セルに書き出してますので、
ループでpythonを呼び出して実行するつもりです。
ちなみに、ご依頼主曰く2が一番実現させたいとのことです。
手元の環境は Python 3.12.3/PyPDF2 3.0.1 ですが、merged.pdf が作成されます。内容も問題ありません。

回答2件
あなたの回答
tips
プレビュー