この記事では、PythonでPDFファイルの読み込み、テキスト抽出、ページの結合・回転、暗号化といった基本的な操作を行うためのライブラリPyPDF2の最新の使い方について解説します。
注記:PyPDF2はバージョン3.0で大幅に更新されました。この記事では、古いPdfFileReader/PdfFileWriterではなく、現在の標準であるPdfReader/PdfWriterクラスを使用します。
1. 準備:PyPDF2のインストール
PyPDF2はサードパーティ製のライブラリなので、使用する前にインストールが必要です。
pip install PyPDF2
2. PDFからのテキスト抽出と復号
テキストを抽出する PdfReaderオブジェクトを使うことで、PDFファイルからページを取得し、テキストを抽出できます。ファイルはバイナリ読み込みモード('rb')で開きます。
import PyPDF2
# 'sample.pdf'という名前のPDFファイルがあると仮定
try:
with open('sample.pdf', 'rb') as pdf_file:
reader = PyPDF2.PdfReader(pdf_file)
print(f"ページ数: {len(reader.pages)}")
# 最初のページを取得
first_page = reader.pages[0]
# テキストを抽出
text = first_page.extract_text()
print("最初のページのテキスト:")
print(text)
except FileNotFoundError:
print("エラー: sample.pdfが見つかりません。")
暗号化されたPDFを復号する is_encrypted属性でファイルが暗号化されているかを確認し、decrypt()メソッドでパスワードを指定して復号できます。
# 'encrypted_sample.pdf'というパスワード付きPDFがあると仮定
# with open('encrypted_sample.pdf', 'rb') as pdf_file:
# reader = PyPDF2.PdfReader(pdf_file)
# if reader.is_encrypted:
# try:
# reader.decrypt('password123')
# page = reader.pages[0]
# print(page.extract_text())
# except Exception as e:
# print(f"復号に失敗しました: {e}")
3. PDFの作成とページ操作
PdfWriterオブジェクトを使うと、既存のPDFからページを操作して、新しいPDFファイルを作成できます。
ページをコピー(結合)する 複数のPDFファイルからページを抽出し、一つの新しいPDFにまとめることができます。
import PyPDF2
writer = PyPDF2.PdfWriter()
# 'doc1.pdf'と'doc2.pdf'があると仮定
pdf_files = ['doc1.pdf', 'doc2.pdf']
for filename in pdf_files:
with open(filename, 'rb') as f:
reader = PyPDF2.PdfReader(f)
for page in reader.pages:
writer.add_page(page)
# 結合した結果を新しいファイルに保存
with open('combined_docs.pdf', 'wb') as output_pdf:
writer.write(output_pdf)
print("PDFを結合しました。")
ページを回転・重ね合わせる rotate()メソッドでページを回転させたり、merge_page()で別のPDFページを重ね合わせ(ウォーターマークなど)たりすることも可能です。
# with open('original.pdf', 'rb') as f_orig, open('watermark.pdf', 'rb') as f_wm:
# reader = PyPDF2.PdfReader(f_orig)
# watermark_page = PyPDF2.PdfReader(f_wm).pages[0]
# writer = PyPDF2.PdfWriter()
#
# first_page = reader.pages[0]
# first_page.rotate(90) # 90度回転
# first_page.merge_page(watermark_page) # ウォーターマークを重ねる
# writer.add_page(first_page)
#
# # 2ページ目以降を追加
# for i in range(1, len(reader.pages)):
# writer.add_page(reader.pages[i])
#
# with open('modified_doc.pdf', 'wb') as output_pdf:
# writer.write(output_pdf)
4. PDFを暗号化する
PdfWriterオブジェクトのencrypt()メソッドを使えば、作成中のPDFにパスワードを設定できます。
import PyPDF2
# 'source.pdf'を暗号化して保存する
with open('source.pdf', 'rb') as pdf_file:
reader = PyPDF2.PdfReader(pdf_file)
writer = PyPDF2.PdfWriter()
for page in reader.pages:
writer.add_page(page)
# パスワード'supersecret'で暗号化
writer.encrypt('supersecret')
with open('encrypted_output.pdf', 'wb') as output_pdf:
writer.write(output_pdf)
print("PDFを暗号化しました。")
まとめ
PyPDF2は、PythonでPDFを操作するための多機能なライブラリです。PdfReaderで既存のPDFから情報を読み取り、PdfWriterでページの追加、回転、結合、暗号化といった変更を加えて新しいPDFファイルとして保存するのが基本的な使い方です。ファイルの開閉にはwith文を使用し、メソッドは最新のAPI(例: len(reader.pages), reader.pages[i], writer.add_page())を使うことが推奨されます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
