【PDFファイル操作の極意】PyPDF2を使ったテキスト抽出、暗号化、復号、テキスト追加の手法をマスターしよう!

※関数の書き方・実行結果に誤りがあるケースがあります。随時修正中です。また誤りに気づかれた方はこちらからご連絡頂きますとめちゃ嬉しいです。

目次

今回の講座の導入文

みんな、こんにちは!今日は「PyPDF2」っていうライブラリを使って、PDFファイルを操作する方法を学ぶで。PDFって、普段から見ること多いけど、いざ操作しようと思ったら意外に難しいやんか。でも、このPyPDF2を使えば簡単にできるんやで!

メリット

  • 簡単に使える:Pythonで少しコードを書くことで、PDFの読み込みやページの結合ができちゃうんや。
  • 便利やねん:例えば、複数のPDFを一つにまとめたい時や、特定のページだけを抜き出したい時に役立つで。

例え話

考えてみてな、PDFファイルが本やとするやんか。このPyPDF2は、その本の中からページを切り取ったり、別の本と合わせたりできるマジック道具みたいなもんや。ほんで、必要な情報だけをパッと取り出して、別の本に書き加えることもできる。これって、すっごい便利やろ?

さあ、これから一緒に楽しみながらPDFファイルの操作を学んでいこうな!

① PDFファイルの読み込みと情報取得

さて、最初にやることはPDFファイルを読み込んで、そこにどんな情報が入ってるかを取得することや。これができるようになったら、PDFの世界が広がるで!

PDFファイルの読み込み

まずは、PyPDF2を使ってPDFファイルを読み込む方法を見てみよう。ここでは、PDFファイルを開いて、ページ数やタイトルなどの基本情報を取得するんや。

import PyPDF2

# PDFファイルを開く
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)

    # PDFのページ数を取得
    num_pages = len(reader.pages)
    print(f'このPDFは {num_pages} ページあります。')

    # PDFのメタデータを取得
    metadata = reader.metadata
    print('PDFのメタデータ:')
    for key, value in metadata.items():
        print(f'{key}: {value}')

説明

  • open()関数を使ってPDFファイルをバイナリモードで開くんや。
  • PdfReaderを使って、そのファイルを読み込むで。
  • len(reader.pages)でページ数を取得できるし、reader.metadataでメタデータ(タイトルや作者など)を確認できる。

これで、PDFファイルから情報を取得する準備が整ったで!次は、実際にどのページを抽出するかを学んでいこう!

② ページの抽出と結合

次は、PDFのページを抽出して、別のPDFファイルに結合する方法を学んでいくで!これができれば、必要な情報だけを取り出して、オリジナルのPDFを作ることもできるんや。

ページの抽出

まずは、特定のページを抽出する方法を見てみよう。例えば、1ページ目と3ページ目を抜き出して新しいPDFを作るんや。

import PyPDF2

# 元のPDFファイルを開く
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)

    # 新しいPDFファイルを作成
    writer = PyPDF2.PdfWriter()

    # 抽出したいページを指定(0始まりやから注意やで)
    pages_to_extract = [0, 2]  # 1ページ目と3ページ目を抽出

    for page_num in pages_to_extract:
        writer.add_page(reader.pages[page_num])

    # 新しいPDFファイルを保存
    with open('extracted_pages.pdf', 'wb') as new_file:
        writer.write(new_file)

print('指定したページを抽出して、新しいPDFファイルを作成しました。')

説明

  • PdfWriterを使って、新しいPDFファイルを作成するんや。
  • add_page()メソッドで、抽出したいページを追加するで。
  • 最後に、write()メソッドで新しいPDFファイルとして保存するんや。

これで特定のページを抜き出して、新しいPDFを作成する方法がわかったな!次は、ページを結合する方法を見ていこう!

③ テキスト抽出の基本

次は、PDFファイルからテキストを抽出する方法を学んでいくで!PDFには文字が埋もれてることが多いから、上手に引き出す技術が必要やね。これができれば、PDFの中身を簡単に利用できるようになるんや。

テキストの抽出

まずは、PDFファイルからテキストを取り出す基本的な方法を見てみよう。これで、PDF内の文章をそのままコピーしたみたいに使えるようになるで。

import PyPDF2

# PDFファイルを開く
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)

    # 抽出したいページを指定
    page_number = 0  # 1ページ目を抽出する場合

    # 指定したページからテキストを抽出
    page = reader.pages[page_number]
    text = page.extract_text()

    print(f'抽出したテキスト(ページ {page_number + 1}):')
    print(text)

説明

  • extract_text()メソッドを使うことで、指定したページのテキストを取得できるんや。
  • そのテキストをprint()で表示すれば、PDFの中身を簡単に確認できるで。

この方法を使えば、PDFの中にある情報をサクッと取り出せるようになるから、レポート作成やデータ分析に役立つで!さあ、次はPDFの暗号化や復号について学んでいこう!

④ PDFの暗号化と復号

さて、次はPDFファイルを暗号化したり復号したりする方法を学んでいくで!大事な情報が入ったPDFは、誰でも見れるようにしたくない時があるやろ。そんな時にこの技術が役立つんや。

PDFの暗号化

まずは、PDFファイルを暗号化する方法を見てみよう。これでパスワードを設定して、許可された人しか中身を見れないようにできるで。

import PyPDF2

# 元のPDFファイルを開く
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)

    # 新しいPDFファイルを作成
    writer = PyPDF2.PdfWriter()

    # 全ページを新しいPDFに追加
    for page in reader.pages:
        writer.add_page(page)

    # PDFを暗号化する
    password = 'mypassword'  # ここに設定したいパスワードを入れてな
    writer.encrypt(password)

    # 新しいPDFファイルを保存
    with open('encrypted_sample.pdf', 'wb') as new_file:
        writer.write(new_file)

print('PDFファイルを暗号化しました。')

説明

  • encrypt()メソッドを使って、設定したパスワードでPDFを暗号化するんや。
  • これで、パスワードを知らない人はそのPDFを開けなくなるで。

PDFの復号

次は、暗号化されたPDFを復号する方法を見てみよう。パスワードを入力することで、中身を取り出せるようにするんや。

import PyPDF2

# 暗号化されたPDFファイルを開く
with open('encrypted_sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)

    # パスワードを入力して復号
    password = 'mypassword'  # 暗号化時と同じパスワードを入れてな
    reader.decrypt(password)

    # テキストを抽出して表示
    page = reader.pages[0]
    text = page.extract_text()

    print('復号したテキスト(ページ 1):')
    print(text)

説明

  • decrypt()メソッドを使って、設定したパスワードを使って復号するんや。
  • 復号が成功したら、通常通りテキストを抽出したりできるで。

これでPDFの暗号化と復号の基本がわかったな!次は、PDFへのテキスト追加について学んでいこう!

⑤ PDFへのテキスト追加

最後は、PDFファイルにテキストを追加する方法を学んでいくで!これを使えば、既存のPDFに注釈を入れたり、情報を追記したりできるから、作業が楽になるんや。

PDFへのテキスト追加

まずは、PDFファイルに新しいテキストを追加する方法を見てみよう。ここでは、既存のPDFに「これは追加されたテキストです」というメッセージを入れてみるで。

import PyPDF2
from PyPDF2 import PdfWriter, PdfReader
from PyPDF2.generic import NameObject, TextStringObject, DictionaryObject

# 元のPDFファイルを開く
with open('sample.pdf', 'rb') as file:
    reader = PdfReader(file)

    # 新しいPDFファイルを作成
    writer = PdfWriter()

    # 各ページを新しいPDFに追加
    for page in reader.pages:
        writer.add_page(page)

    # テキストを追加するための設定
    page = writer.pages[0]  # 1ページ目に追加する場合
    text_to_add = "これは追加されたテキストです"

    # テキスト追加のためのオブジェクトを作成
    text_object = DictionaryObject()
    text_object.update({
        NameObject('/Type'): NameObject('/Annot'),
        NameObject('/Subtype'): NameObject('/FreeText'),
        NameObject('/Contents'): TextStringObject(text_to_add),
        NameObject('/Rect'): [100, 500, 300, 550],  # テキストを表示する位置
        NameObject('/C'): [1, 0, 0],  # テキストの色(赤)
        NameObject('/F'): 4  # テキストのスタイル設定
    })

    # テキストをページに追加
    page[NameObject('/Annots')] = page.get('/Annots', []) + [text_object]

    # 新しいPDFファイルを保存
    with open('added_text_sample.pdf', 'wb') as new_file:
        writer.write(new_file)

print('PDFファイルにテキストを追加しました。')

説明

  • DictionaryObjectを使って、追加するテキストの設定を作成するんや。
  • Rectを指定することで、テキストを表示する位置を決めることができるで。
  • 最後に、Annotsにテキストオブジェクトを加えて、ページにテキストを追加するんや。

これで、PDFにテキストを追加する方法がわかったな!これを使って、PDFに必要な情報をどんどん加えていこう!これでPyPDF2の基本的な使い方は完了やで。色んなPDF操作を楽しんでな!

【PDFファイル操作の極意】PyPDF2を使ったテキスト抽出、暗号化、復号、テキスト追加の手法をマスターしよう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次