PDFファイルを結合する 質問する

PDFファイルを結合する 質問する

Python を使用して、別々の PDF ファイルを結合することは可能ですか?

そうであると仮定すると、これをもう少し拡張する必要があります。ディレクトリ内のフォルダーをループして、この手順を繰り返すことを望んでいます。

運が悪いかもしれませんが、各 PDF に含まれるページを除外することは可能ですか (レポート生成では常に余分な空白ページが作成されます)。

ベストアンサー1

使用できますpypdfsPdfMergerクラス。

ファイルの連結

簡単に連結するファイルを使用してappend方法。

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のキーワード引数を使用して、フォームにタプルを渡します(通常の関数と同様)。appendmerge(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 catpypdf 開発者によって提供されるコマンド。コードを記述する必要がなくなる可能性があります。

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_pdfinsertPDF

おすすめ記事