Python を使用して、別々の PDF ファイルを結合することは可能ですか?
そうであると仮定すると、これをもう少し拡張する必要があります。ディレクトリ内のフォルダーをループして、この手順を繰り返すことを望んでいます。
運が悪いかもしれませんが、各 PDF に含まれるページを除外することは可能ですか (レポート生成では常に余分な空白ページが作成されます)。
ベストアンサー1
ファイルの連結
from pypdf import PdfMerger
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']
merger = PdfMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("result.pdf")
merger.close()
必要に応じて、ファイル パスの代わりにファイル ハンドルを渡すこともできます。
ファイルの結合
より細かいマージ制御が必要な場合は、merge
のメソッドを使用するとPdfMerger
、出力ファイル内の挿入ポイントを指定できるため、ファイル内の任意の場所にページを挿入できます。 メソッドは、挿入ポイントがファイルの末尾であるappend
と考えることができます。merge
例えば
merger.merge(2, pdf)
ここでは、PDF 全体を出力に挿入しますが、ページ 2 に挿入します。
ページ範囲
特定のファイルからどのページが追加されるかを制御したい場合は、およびpages
のキーワード引数を使用して、フォームにタプルを渡します(通常の関数と同様)。append
merge
(start, stop[, step])
range
例えば
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
無効な範囲を指定すると、 が返されますIndexError
。
注意:また、ファイルが開いたままにならないようにするには、PdfMerger
マージされたファイルが書き込まれたときに s の close メソッドを呼び出す必要があります。これにより、すべてのファイル (入力と出力) が適切なタイミングで閉じられるようになります。PdfMerger
コンテキスト マネージャーとして実装されていないのは残念ですが、キーワードを使用してwith
明示的な close 呼び出しを回避し、簡単な例外安全性を実現できます。
また、以下もご覧ください。pdfly cat
pypdf 開発者によって提供されるコマンド。コードを記述する必要がなくなる可能性があります。
pypdfのドキュメントには含まれるものマージを示すサンプルコード。
ピムPDF
もう一つの一見の価値がある図書館はピムPDFマージも同様に簡単です。
コマンドラインから:
python -m fitz join -o result.pdf file1.pdf file2.pdf file3.pdf
そしてコードから
import fitz
result = fitz.open()
for pdf in ['file1.pdf', 'file2.pdf', 'file3.pdf']:
with fitz.open(pdf) as mfile:
result.insert_pdf(mfile)
result.save("result.pdf")
豊富なオプション、プロジェクトの詳細ウィキ。
注: PyMuPDFの古いバージョンでinsert_pdf
はinsertPDF