パープルハット

※当サイトではGoogleアドセンス広告を利用しています

pypdfの使い方



pypdfとは?

  • Pythonを使ったPDFファイル編集用のパッケージです。
  • 使い方を解説しているサイトが少なかったのでまとめてみました。
  • 参考サイト(公式ドキュメント):Welcome to pypdf — pypdf 4.2.0 documentation


インストール

  • 普段はanacondaの環境を使っているので、condaを使いたかったのですが、できなかったのでpipコマンドでインストール
pip install pypdf



読み取りの基本機能

インポート

  • 読み取りは主にPdfReaderクラスで実現します。
from pypdf import PdfReader

ファイルの読み取り

reader = PdfReader("sample.pdf")



指定したページの取得

  • 読み取ったPDFファイルは、リストpagesで管理されるので、番号指定でページごとに処理ができる。
  • リストなので1ページ目が、0になる点に注意
# 6ページ目を取り出す
p5 = reader.pages[5] 



ページ数の取得

  • 普通のリストと同じように、len()関数で取得可能。
n = len(reader.pages)



テキストの抽出

  • 指定したページpがあるとき、p.extract_text()をすることで、そのページのテキストを取り出せる。
  • ブラウザでPDFの文章をコピーしたときと同様に、改行が入ってしまう点に注意。
text = p5.extract_text()
print(text)





書き取りに必要な機能

インポート

  • 読み取りは主にPdfWriterクラスで実現します。
from pypdf import PdfWriter



変数の宣言

writer = PdfWriter()



readerからページの追加

  • add_page関数でnページ目を追加できます。
# 先頭ページを追加
writer.add_page(reader.pages[0])



出力

  • write_stream関数で保存できます。
with open('output.pdf', mode='wb') as fp:
    writer.write_stream(fp)





サンプルコード

1ページごとに分けて保存

  • for文でpagesを分割しながら保存することで実現できます。
from pypdf import PdfReader, PdfWriter

# 分割したいファイル
reader = PdfReader("sample.pdf")

for i, p in enumerate(reader.pages):

    # iページ目のデータ
    writer = PdfWriter()
    writer.add_page(reader.pages[i])

    # 保存する
    with open(f'output_{i}.pdf', mode='wb') as fp:
        writer.write_stream(fp)