Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python TkinterとPyPDF2でPDFビューアを作成する方法

Pythonは、多様な機能や用途に対応した豊富なライブラリと拡張モジュールを備えていることで広く知られています。PDFファイルを扱う場合にはPyPDF2というツールキットが利用でき、PDFの処理やテキスト抽出、複数ページの結合、暗号化など、さまざまな操作が可能です。PDFのようなファイルストリームの管理・操作において非常に便利なパッケージです。本記事では、PyPDF2を活用して、ユーザーがローカルディレクトリからPDFファイルを選択して開き、その内容を表示できるTkinterアプリケーションを作成する方法を解説します。

アプリケーション作成の手順

以下の手順に従ってアプリケーションを構築していきます。

  1. まず、コマンドシェルで次のコマンドを実行し、必要なライブラリをインストールします。
    pip install PyPDF2
    インストール後、import PyPDF2としてノートブックにライブラリを読み込みます。

  2. filedialogをインポートし、ローカルディレクトリからファイルを選択するためのダイアログボックスを作成できるようにします。

  3. Textウィジェットを作成し、「Open(開く)」「Clear(クリア)」「Quit(終了)」などのメニューを追加します。

  4. 各メニューに対応する関数をそれぞれ定義します。

  5. ファイルを開く関数を定義します。この関数では、まずPdfFileReader(file)でファイルを読み込み、続いてページを抽出します。

  6. 抽出した内容をテキストボックスに挿入します。

  7. Quitメニュー用の関数を定義します。

サンプルコード

# 必要なライブラリをインポート
import PyPDF2
from tkinter import *
from tkinter import filedialog

# Tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry("750x450")

# テキストボックスを作成
text = Text(win, width=80, height=30)
text.pack(pady=20)

# テキストをクリアする関数
def clear_text():
    text.delete(1.0, END)

# PDFファイルを開く関数
def open_pdf():
    file = filedialog.askopenfilename(title="Select a PDF", filetype=(("PDF Files", "*.pdf"), ("All Files", "*.*")))
    if file:
        # PDFファイルを開く
        pdf_file = PyPDF2.PdfFileReader(file)
        # 読み込むページを選択
        page = pdf_file.getPage(0)
        # ページの内容を取得
        content = page.extractText()
        # 内容をテキストボックスに追加
        text.insert(1.0, content)

# ウィンドウを終了する関数
def quit_app():
    win.destroy()

# メニューを作成
my_menu = Menu(win)
win.config(menu=my_menu)

# メニューにドロップダウンを追加
file_menu = Menu(my_menu, tearoff=False)
my_menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Open", command=open_pdf)
file_menu.add_command(label="Clear", command=clear_text)
file_menu.add_command(label="Quit", command=quit_app)

win.mainloop()

補足:PyPDF2のバージョンについて

PyPDF2のバージョン3.0以降では、PdfFileReadergetPage()extractText()といった旧APIは非推奨となり、それぞれPdfReaderpages[0]extract_text()へ置き換えられました。最新版を使用する場合は、該当部分を次のように書き換えてください。

pdf_file = PyPDF2.PdfReader(file)
page = pdf_file.pages[0]
content = page.extract_text()

実行結果

上記のコードを実行すると、本格的なTkinterアプリケーションが起動します。ファイルを開く、表示内容をクリアする、アプリケーションを終了するといった一連の機能が備わっています。

Python TkinterとPyPDF2でPDFビューアを作成する方法

画面左上の「File」メニューをクリックしてPDFファイルを選択すると、その内容がテキストボックスに表示されます。

Python TkinterとPyPDF2でPDFビューアを作成する方法

  1. Python Tkinterのaskopenfile()関数でファイルを選択して読み込む方法

    Pythonプログラムで使用するファイルのパスをハードコーディングする代わりに、GUIを使ってユーザー自身にフォルダ構造をブラウズさせ、目的のファイルを選択してもらうことができます。これはtkinterモジュールを利用することで実現でき、キャンバス(ウィンドウ)を定義し、その上にファイルを参照するためのボタンを配置します。以下のプログラムでは、ファイルを開くための関数を定義しています。ここではテキストファイルを開くことに限定しています。Pythonはテキストファイルの内容を読み取り、非常に読みやすい形で出力できるためです。.txtや.csvなど、テキストベースのファイルであればどのようなもので

  2. Pythonのファイルオブジェクトとは?open関数によるファイル操作の基本を徹底解説

    Pythonでは、ファイルを読み書きする際に特別なライブラリをインポートする必要はありません。ファイル操作は言語にネイティブに組み込まれているためです。 まず最初に行うのは、組み込み関数 open() を使ってファイルオブジェクトを取得することです。open() 関数はファイルを開き、ファイルオブジェクトを返します。このファイルオブジェクトには、開いたファイルから情報を取得したり、内容を操作したりするためのメソッドや属性が含まれています。 ファイルとは何か? ファイル操作を行う前に、「ファイルとは何か」を理解しておきましょう。ファイルとは、関連する情報を保存するためにディスク上に確保された「名