pypdfとは?
- Pythonを使ったPDFファイル編集用のパッケージです。
- 使い方を解説しているサイトが少なかったのでまとめてみました。
- 参考サイト(公式ドキュメント):Welcome to pypdf — pypdf 4.2.0 documentation
インストール
- 普段はanacondaの環境を使っているので、condaを使いたかったのですが、できなかったのでpipコマンドでインストール
pip install pypdf
読み取りの基本機能
インポート
- 読み取りは主にPdfReaderクラスで実現します。
from pypdf import PdfReader
ファイルの読み取り
- PdfReader(ファイル名)で指定したファイルを読み取れます。
- 以下の例では、デジタル庁の「デジタル社会の実現に向けた重点計画」のPDFファイルを使っています⇒デジタル社会の実現に向けた重点計画|デジタル庁の「本文(1,189KB)」です。
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)