[Python3][PDF][PyPDF2]PythonでPDFを任意のページに分割する方法

an amazon s kindle electronic reading device beside a cup of coffee python
Photo by İrem Karakaş on Pexels.com

PyPDF2のインストール

PyPDF2を用いる。https://pypi.org/project/PyPDF2/

インストールはいつもの

pip install PyPDF2

で。Documentationはこちら。

Welcome to PyPDF2 — PyPDF2 documentation

簡単な使い方

まずは使い方から。これはPDFからテキストを抽出している。

from PyPDF2 import PdfReader

reader = PdfReader("example.pdf")
num_of_pages = len(reader.pages)
page = reader.pages[0]
text = page.extact_text()

任意のページで分割

import PyPDF2

f = "example.pdf" #分割するpdfファイル
page_step = 4 #何ページごとに分割するか

#ページ数の把握
reader = PdfReader("example.pdf")
num_of_pages = len(reader.pages)

for page in range(0, num_of_pages, pate_step):
    merger = PyPDF2.PdfFileMerger()
    start = page
    end = start + page_step
    merger.append(f, pages = (start, end))
    file_name = str(start) + ".pdf"
    merger.write(file_name)
    merger.close

この方法で分割を行うと、ファイル名が\(0, 4, 8, \cdots\)などになってしまう。望ましいのは、予めリストを用意しておいて、そのリストから順にファイル名を付与していくことだろう。

#csvファイルからIDのリストを読み込みん
d = pd.read_csv("list_file.csv")["ID"]

for page in range(0, num_of_pages, pate_step):
    merger = PyPDF2.PdfFileMerger()
    start = page
    end = start + page_step
    i = start//page_step
    merger.append(f, pages = (start, end))
    file_name = str(d[i]) + ".pdf"
    merger.write(file_name)
    merger.close

書き出し先を変更したいとき

for page in range(0, num_of_pages, pate_step):
    merger = PyPDF2.PdfFileMerger()
    start = page
    end = start + page_step
    i = start//page_step
    merger.append(f, pages = (start, end))
    file_name = str(d[i]) + ".pdf"
    merger.write("/Users/Documents/" + file_name)
    merger.close

の様に書き出し先を絶対pathで指定する。

いずれにしろ、pdfファイルはそれなりに時間が掛かる。1200ページのpdfを4ベージごとに分割したら、全部で10分以上かかった。いい方法があれば知りたい\(\cdots\)

関連記事

DataFrame

データフレームの中から条件を満たす列のIDを取得
JSONファイルの読み込みについて

numpy

numpyでリストごとの大小比較

一般


Python3で自作関数を他ファイルから参照する

コメント

タイトルとURLをコピーしました