学習要覧から必要なページだけ抜き取る

はじめまして。JS2FZHです。
待ちに待ったpdf版学習要覧が見れるようになりました。
あの重い本からはおさらばできます。
しかし、pdfもページ数が多いので、自分の必要なところだけ抽出して見ようということです。
適当にPythonで作りました。
初めてブログ書きます。よくわかってないので、暖かい目で見てもらえると嬉しいです。
数時間で書いてるので、いろいろ間違えてるかも……
※素人が書いています。バグがあるかと思います。


1.とりあえずソースコード

from pypdf import PdfWriter
import os
import tkinter.filedialog

fTyp = [("pdfファイル", "*.pdf")]
iDir = os.path.abspath(os.path.dirname(__file__))
file_name = tkinter.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir)

pageraw = tkinter.simpledialog.askstring("PageSetting", "抽出したいページを入力してください。例「1,5,7-10,45」",)
pages = pageraw.split(",")
print(pages)

merger = PdfWriter()

for p in pages:
    if "-" in p:
        merger.append(file_name, pages=(int(p.split("-")[0]) - 1, int(p.split("-")[1])))
    else:
        merger.append(file_name, pages=(int(p) - 1 , int(p)))

pdfName = tkinter.simpledialog.askstring("pdfName", "抽出後のpdfファイル名を入力してください。※拡張子「.pdf」を最後につけてください。 例「youran2024-short.pdf」",)
merger.write(pdfName)

merger.close()

Pythonを触ったことがある人向けに説明を端折ります。
pypdfをインストールして使ってください。
ページ入力ダイアログのところでは、ページ数を入れてください。
例「1,5,7-10,45」で1,5,7,8,9,10,45ページが抽出されます。
先頭を1ページにしたので、pdfビューワーのページ数で考えてください。
※pdf本体の下に書いてあるページ数ではないです。

2.Python触ったことがない人向け

難しいことはありません。
まず、Pythonをインストールします。
以下のPython公式から、ダウンロードしてください。

"Downloads"のところから、自分のOSを選んでインストールしてください。
Windowsの場合、Download Windows installer (64-bit) というものです。
詳しくは、適当に「python インストール」で調べてください。(投げやり)

3.pypdfインストール

pypdfというモジュールを使うので、インストールします。
コマンドプロンプトや、Powershellで以下のコマンドを実行してください。

pip install pypdf

4.Pythonコード入力

任意のフォルダに新規ファイルを作ってください。
ファイル名に拡張子「.py」をつけておいてください。
作ったら、そのファイルを右クリック、「Edit with IDLE」、「Edit with IDLE 3.OO (64-bit)」をクリックして、エディタを開いて、以下のコードをコピペしてください。(先述のものと一緒です。)

from pypdf import PdfWriter
import os
import tkinter.filedialog

fTyp = [("pdfファイル", "*.pdf")]
iDir = os.path.abspath(os.path.dirname(__file__))
file_name = tkinter.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir)

pageraw = tkinter.simpledialog.askstring("PageSetting", "抽出したいページを入力してください。例「1,5,7-10,45」",)
pages = pageraw.split(",")
print(pages)

merger = PdfWriter()

for p in pages:
    if "-" in p:
        merger.append(file_name, pages=(int(p.split("-")[0]) - 1, int(p.split("-")[1])))
    else:
        merger.append(file_name, pages=(int(p) - 1 , int(p)))

pdfName = tkinter.simpledialog.askstring("pdfName", "抽出後のpdfファイル名を入力してください。※拡張子「.pdf」を最後につけてください。 例「youran2024-short.pdf」",)
merger.write(pdfName)

merger.close()

5.実行

F5を押して、実行すると、最初にファイル選択ダイアログが表示されます。
そこで、元のpdfファイルを選択してください。
.pyと同じフォルダに入れておくと楽です。
次に、ページを入力するダイアログが表示されます。
そこで、抽出したいページを入力します。
例「1,5,7-10,45」で1,5,7,8,9,10,45ページが抽出されます。
pdfビューワーのページ数で考えてください。
※pdf本体の下に書いてあるページ数ではないです。
その後、生成されるpdfファイル名を入力するダイアログが現れます。
適当な名前+「.pdf」を入力してください。
.pyと同じフォルダに生成されます。
確認出来たら、完成です。

無事できたら、一言でもいいので、伝えてくれると泣いて喜びます。
エラーもできる限り対応したいと思っています。

プロへ
素人が作ってます。
ここはこうした方が良いとかあったらなんでも言ってください。

6.参考文献

いいなと思ったら応援しよう!