PyPDF
概念
pypdf は主に PDF の読み取り、結合、暗号化などに使います。文字内容を直接変更することはできません。高度な編集が必要な場合は、reportlab で新しい PDF を生成するか、PyMuPDF(fitz)のような商用ライブラリを検討します。
文字抽出が文字化けする場合、フォント埋め込みの問題、または PDF が特殊なエンコードを使っている可能性があります。
page.extract_text(extraction_mode="layout")を試すか、OCR ツール(例:pytesseract+pdf2image)を使います。
インストール
bash
pip install pypdfPDF ファイル情報を読み取る
python
from pypdf import PdfReader
# PDF ファイルを開く
pdf = PdfReader("example.pdf")
# ページ数を取得
print(f"総ページ数: {len(pdf.pages)}")
# 文書情報を取得(作者、タイトルなど)
meta = pdf.metadata
print("タイトル:", meta.title)
print("作者:", meta.author)テキスト内容を抽出する
python
from pypdf import PdfReader
pdf = PdfReader("example.pdf")
text = ""
for page in pdf.pages:
text += page.extract_text() + "\n"
print(text)複数の PDF を結合する
python
from pypdf import PdfWriter, PdfReader
writer = PdfWriter()
# 複数の PDF を追加
for filename in ["file1.pdf", "file2.pdf", "file3.pdf"]:
reader = PdfReader(filename)
for page in reader.pages:
writer.add_page(page)
# 結合後の PDF を保存
with open("merged.pdf", "wb") as output_file:
writer.write(output_file)PDF を分割する
python
from pypdf import PdfReader
# 各ページを単独ファイルとして保存
reader = PdfReader("document.pdf")
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as f:
writer.write(f)ページを回転する
python
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
for page in reader.pages:
page.rotate(90) # 時計回りに 90 度回転
writer.add_page(page)
with open("rotated.pdf", "wb") as f:
writer.write(f)