PythonでPDF情報を編集:PyPDF2で作成者・タイトルなどを取得・削除・変更


 


PDFファイルには、その内容だけでなく、メタデータと呼ばれる付加情報が含まれています。これには、ドキュメントの作成者タイトル作成日付キーワードなどが含まれ、ファイルの管理や検索において非常に重要です。しかし、これらの情報が誤っていたり、プライバシー上の理由から削除したい、あるいは自動で設定したいというケースも少なくありません。

Pythonの強力なライブラリ**PyPDF2を使えば、PDFのメタデータを簡単に取得**、削除、そして変更できます。この記事では、PyPDF2を用いたPDFメタデータ操作の基本的な手順を、短いサンプルコードとともに分かりやすく解説します。Pythonを使ってPDFドキュメントの管理を効率化したいと考えている方にとって、必見の内容です。


 

PDFのメタデータとは?なぜ操作する必要があるのか?

 

PDFのメタデータは、ドキュメントのプロパティとしてファイル自体に埋め込まれている情報です。これには以下のようなものが含まれます。

  • Title (タイトル): ドキュメントの表題

  • Author (作成者): ドキュメントを作成した人物

  • Subject (件名): ドキュメントの簡単な説明

  • Keywords (キーワード): ドキュメントの内容を表すキーワード(検索エンジンなどで利用されることも)

  • Creator (作成アプリケーション): ドキュメントを作成したソフトウェア(例: Microsoft Word, Adobe InDesign)

  • Producer (PDF変換アプリケーション): PDFに変換したソフトウェア(例: Acrobat Distiller, Ghoastscript)

  • CreationDate (作成日時): ドキュメントが作成された日時

  • ModDate (更新日時): ドキュメントが最後に変更された日時

 

なぜメタデータを操作する必要があるのか?

 

  • 情報の正確性: 誤った作成者名やタイトルを修正する。

  • プライバシー保護: 個人情報や機密情報を含むメタデータを削除する。

  • SEO対策: PDFがWeb上で公開される場合、キーワードを設定して検索エンジンからの視認性を高める。

  • ドキュメント管理: 統一されたルールでメタデータを設定し、ドキュメントの分類や検索を容易にする。

  • 自動化: 大量のPDFファイルのメタデータを一括で更新する。


 

PyPDF2とは?

 

PyPDF2は、PythonでPDFファイルを操作するための包括的なライブラリです。PDFの結合、分割、ページの抽出、透かしの追加、そして今回解説するメタデータ(ドキュメント情報)の取得・変更など、多岐にわたる機能を提供します。

 

インストール方法

 

使用する前に、pipコマンドでインストールが必要です。

Bash
 
pip install PyPDF2

 

PDFのメタデータを取得する

 

PDFファイルの既存のメタデータを読み取るには、PdfReaderオブジェクトを使用します。メタデータは辞書形式で取得できます。

 

基本的な取得の手順

 

  1. PdfReaderでPDFを読み込む: メタデータを取得したいPDFファイルを開きます。

  2. metadataプロパティにアクセスする: PdfReaderオブジェクトのmetadataプロパティがメタデータ情報を含んでいます。

Python
 
from PyPDF2 import PdfReader, PdfWriter
import os

# --- テスト用のPDFファイルを仮作成 (メタデータを含む) ---
original_pdf_file = "document_with_meta.pdf"

# テスト用に簡単なPDFを準備し、メタデータを設定
if not os.path.exists(original_pdf_file):
    temp_writer = PdfWriter()
    temp_writer.add_blank_page(500, 700)
    
    # メタデータを設定
    temp_writer.add_metadata({
        "/Title": "サンプルドキュメント",
        "/Author": "テスト太郎",
        "/Subject": "PyPDF2メタデータ操作",
        "/Keywords": "Python, PDF, メタデータ"
    })
    
    with open(original_pdf_file, "wb") as f:
        temp_writer.write(f)
    print(f"テスト用に '{original_pdf_file}' をメタデータ付きで作成しました。\n")
# ----------------------------------------------------


try:
    # PDFを読み込む
    reader = PdfReader(original_pdf_file)

    # メタデータを取得
    metadata = reader.metadata

    print("--- 取得したメタデータ ---")
    if metadata:
        print(f"タイトル: {metadata.title}")
        print(f"作成者: {metadata.author}")
        print(f"件名: {metadata.subject}")
        print(f"キーワード: {metadata.keywords}")
        print(f"作成アプリケーション: {metadata.creator}")
        print(f"PDF生成アプリケーション: {metadata.producer}")
        print(f"作成日時: {metadata.creation_date}")
        print(f"更新日時: {metadata.modification_date}")
    else:
        print("メタデータが見つかりません。")

except FileNotFoundError:
    print(f"エラー: '{original_pdf_file}' が見つかりません。")
except Exception as e:
    print(f"処理中にエラーが発生しました: {e}")

# 出力例:
# テスト用に 'document_with_meta.pdf' をメタデータ付きで作成しました。
# --- 取得したメタデータ ---
# タイトル: サンプルドキュメント
# 作成者: テスト太郎
# 件名: PyPDF2メタデータ操作
# キーワード: Python, PDF, メタデータ
# 作成アプリケーション: PyPDF2
# PDF生成アプリケーション: PyPDF2
# 作成日時: 20250807153600+09'00'
# 更新日時: 20250807153600+09'00'
  • reader.metadataは、メタデータオブジェクトを返します。各メタデータ項目は、metadata.titleのように属性としてアクセスできます。


 

PDFのメタデータを変更・削除する

 

PDFのメタデータを変更したり削除したりするには、新しいPdfWriterオブジェクトを作成し、そこに新しいメタデータを設定します。既存のメタデータを一部変更したり、特定の項目を削除したりすることも可能です。

 

基本的な変更・削除の手順

 

  1. PdfReaderで元のPDFを読み込む: 変更したいPDFファイルを開きます。

  2. PdfWriterオブジェクトを作成する: 新しいPDFを作成するためのオブジェクトです。

  3. 元のPDFの全てのページを新しいWriterにコピーする: これにより、既存のコンテンツは維持されます。

  4. add_metadata()メソッドで新しいメタデータを設定する: ここで変更したい情報を指定します。Noneを設定するとその項目を削除できます。

  5. 新しいPDFファイルとして保存する: メタデータが更新されたPDFファイルを書き出します。

Python
 
from PyPDF2 import PdfReader, PdfWriter
import os

original_pdf_file = "document_with_meta.pdf" # 上記で作成したファイルを使用
modified_pdf_file = "document_modified_meta.pdf"

try:
    # 1. 元のPDFを読み込む
    reader = PdfReader(original_pdf_file)
    
    # 2. 新しいPdfWriterオブジェクトを作成
    writer = PdfWriter()

    # 3. 元のPDFの全てのページを新しいWriterにコピー
    for page in reader.pages:
        writer.add_page(page)

    # 4. メタデータを変更・削除する
    # 変更: タイトルと作成者を変更
    # 削除: キーワードをNoneに設定(または含めない)
    writer.add_metadata({
        "/Title": "更新されたドキュメントタイトル",
        "/Author": "新しい作成者名",
        "/Subject": "変更後の件名",
        "/Keywords": None, # キーワードを削除したい場合
        # "/CustomField": "新しいカスタム値" # 新しいメタデータ項目を追加することも可能
    })

    # 5. メタデータが更新されたPDFとして保存
    with open(modified_pdf_file, "wb") as f:
        writer.write(f)

    print(f"'{original_pdf_file}' のメタデータを変更し、'{modified_pdf_file}' として保存しました。")
    
    # 変更後のメタデータを再度確認
    reader_modified = PdfReader(modified_pdf_file)
    metadata_modified = reader_modified.metadata
    print("\n--- 変更後のメタデータ ---")
    if metadata_modified:
        print(f"タイトル: {metadata_modified.title}")
        print(f"作成者: {metadata_modified.author}")
        print(f"件名: {metadata_modified.subject}")
        print(f"キーワード: {metadata_modified.keywords}") # Noneの場合、表示されないかNoneと表示される
    else:
        print("メタデータが見つかりません。")


except FileNotFoundError:
    print(f"エラー: '{original_pdf_file}' が見つかりません。")
except Exception as e:
    print(f"処理中にエラーが発生しました: {e}")

# 出力例:
# 'document_with_meta.pdf' のメタデータを変更し、'document_modified_meta.pdf' として保存しました。
# --- 変更後のメタデータ ---
# タイトル: 更新されたドキュメントタイトル
# 作成者: 新しい作成者名
# 件名: 変更後の件名
# キーワード: None
  • add_metadata()メソッドは、既存のメタデータを上書きします。指定しない項目は元のPDFから引き継がれます。

  • 特定のメタデータ項目を削除したい場合は、そのキーにNoneを設定します。


 

まとめと活用例

 

PyPDF2ライブラリを使用することで、PythonプログラムからPDFファイルのメタデータを簡単に取得、変更、削除することができます。

  • 一括メタデータ更新: 大量のPDFファイルの作成者名やキーワードを、プログラムで一括して修正する。

  • 機密情報のクリーンアップ: PDFを公開する前に、内部的な情報や個人情報を含むメタデータを自動的に削除する。

  • ドキュメントの標準化: 会社全体でPDFのタイトルや件名の命名規則を統一するために、プログラムで自動適用する。

  • 検索性向上: PDFコンテンツ管理システムにおいて、自動でキーワードを設定し、検索性を高める。

PyPDF2は、PDFの管理と自動化を強力にサポートするツールです。これらの機能を通じて、PDFドキュメントの効率的な運用とセキュリティの向上を実現できるでしょう。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座