【Python】PDFを分割・結合できるpypdfのインストール

【Python】PDFの分割・結合ならpypdfをインストールするべし プログラミング

「PythonではPDF関連のライブラリが多すぎる・・・」
「PythonでPDFの分割・結合がしたい」

このような場合には、pypdfがオススメです。
この記事では、PDFの分割・結合が可能なpypdfについて解説しています。

本記事の内容

  • pypdfとは?
  • pypdfのシステム要件
  • pypdfのインストール
  • pypdfの動作確認

それでは、上記に沿って解説していきます。

pypdfとは?

pypdfとは、pure PythonなPythonのPDF用ライブラリです。
pypdfの機能としては、以下があります。

  • 分割
  • 結合
  • 切り取り
  • 変換
  • カスタムデータ・表示オプション・パスワード設定
  • テキスト・メタデータ抽出

これ一つでPDFに関連する処理は、大体はできそうですね。

pypdf自体は、v1.0が2006年1月18日にリリースされています。
しかし、一旦開発は2010年にストップします。

そして、2022年12月24日に再び動き出します。
PyPDF2と合流したようです。

PyPDF2の公式ページで次のように記載されています。

したがって、PyPDF2を使っている人はpypdfに切り替えた方が良いでしょうね。
PyPDF2は、開発が停止していますので。

以上、pypdfについて説明しました。
次は、pypdfのシステム要件を説明します。

pypdfのシステム要件

現時点(2023年8月9日)でのpypdfの最新バージョンは、3.15.0となります。
更新は頻度が高く実施されています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
pure Pythonである以上、当然ですね。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10
  • Python 3.11
  • Python 3.12

そうは言っても、利用する側としてはPython公式開発サイクルに従いましょう。

バージョンリリース日サポート期限
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年10月24日2027年10月

Python公式開発サイクルによると、Python 3.8以降が対象となります。
よって、ここではPython 3.8以降を推奨しておきます。

以上、pypdfのシステム要件を説明しました。
次は、pypdfをインストールします。

pypdfのインストール

検証は、次のバージョンのPythonで行います。

> python -V
Python 3.11.4

まずは、現状のインストール済みパッケージを確認しておきます。
その前に、pipとsetuptoolsの更新を実施しておきましょう。

python -m pip install --upgrade pip setuptools

インストール済みパッケージを確認した結果は、以下。

> pip list
Package    Version
---------- -------
pip        23.2.1
setuptools 68.0.0
wheel      0.38.4

では、pypdfのインストールです。
pypdfのインストールは、以下のコマンドとなります。
(※PDFの暗号化・復号化機能も含む)

pip install pypdf[crypto]

pypdfのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。

> pip list                 
Package      Version
------------ -------
cffi         1.15.1
cryptography 41.0.3
pip          23.2.1
pycparser    2.21
pypdf        3.15.0
setuptools   68.0.0
wheel        0.38.4

「crypto」を含めると、暗号化関連のライブラリが追加されます。
それでも、pypdfの依存関係は多くはありませんね。

以上、pypdfのインストールを説明しました。
次は、pypdfの動作確認を説明します。

pypdfの動作確認

pypdfの動作確認を行います。
今回は、以下の処理を確認します。

  • PDFの結合
  • PDFの読み取り
  • PDFの分割
  • PDFの暗号化

それぞれの処理を以下で説明します。

PDFの結合

まず、PDFファイルを二つ用意します。

file1.pdf

file2.pdf

これらを結合して、merged.pdfを作成することにします。
そのためのコードは、以下。

from pypdf import PdfReader, PdfWriter

reader1 = PdfReader("file1.pdf")
reader2 = PdfReader("file2.pdf")

writer = PdfWriter()

for page in reader1.pages:
    writer.add_page(page)
for page in reader2.pages:
    writer.add_page(page)
with open("merged.pdf", "wb") as output_file:
    writer.write(output_file)

上記コードを実行すると、merged.pdfが作成されます。

merged.pdf

合計が、2ページになっているのが確認できます。

PDFの読み取り

さきほどのmerged.pdfを読み取りましょう。

from pypdf import PdfReader

reader = PdfReader("merged.pdf")

for page_num in range(len(reader.pages)):
    page = reader.pages[page_num]
    text = page.extract_text()
    print(f"Page {page_num + 1}:")
    print(text)
    print("-" * 50)

上記を実行した結果、コンソールに以下が表示されます。

Page 1:
これはfile1
です。
--------------------------------------------------
Page 2:
これはfile2
です。
--------------------------------------------------

merged.pdfの内容をすべて読み取れています。

PDFの分割

merged.pdfを分割します。
各ページを順番に読み取り、それぞれのページを個別のPDFファイルとして保存します。

from pypdf import PdfReader, PdfWriter

reader = PdfReader("merged.pdf")

for page_num in range(len(reader.pages)):
    writer = PdfWriter()
    page = reader.pages[page_num]
    writer.add_page(page)

    output_filename = f"page_{page_num + 1}.pdf"
    with open(output_filename, "wb") as output_file:
        writer.write(output_file)

    print(f"Page {page_num + 1} saved as {output_filename}")

上記を実行した結果、コンソールに以下が表示されます。

Page 1 saved as page_1.pdf
Page 2 saved as page_2.pdf

そして、2つのPDFが同フォルダ内に作成されていることを確認できます。
内容は、file1.pdfとfile2.pdfと同じです。

PDFの暗号化

merged.pdfを暗号化します。
パスワードを設定するということです。

from pypdf import PdfReader, PdfWriter

reader = PdfReader("merged.pdf")
writer = PdfWriter()

for page in reader.pages:
    writer.add_page(page)

writer.encrypt("password")

with open("encrypted.pdf", "wb") as output_file:
    writer.write(output_file)

上記を実行すると、encrypted.pdfが作成されます。
このPDFファイルを開こうとすると、パスワードを聞かれます。

今回設定したパスワードは「password」です。
適切なパスワードを入力すると、暗号化が解除されます。

以上、pypdfの動作確認を説明しました。

タイトルとURLをコピーしました