Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Tkinter로 만드는 PDF 뷰어 – PyPDF2 활용 가이드

Python은 다양한 기능과 용도를 가진 방대한 라이브러리와 확장 모듈을 제공하는 것으로 잘 알려져 있습니다. PDF 파일을 다룰 때는 PyPDF2 툴킷을 활용할 수 있으며, 이 라이브러리는 PDF 처리, 텍스트 추출, 여러 페이지 병합, PDF 암호화 등 다양한 작업을 지원합니다. PDF처럼 파일 스트림을 관리하고 조작하는 데 매우 유용한 패키지입니다.

이번 글에서는 PyPDF2를 이용해, 사용자가 로컬 디렉터리에서 PDF 파일을 선택하고 열면 해당 내용을 화면에 출력하는 Tkinter 애플리케이션을 만들어 보겠습니다.

애플리케이션 제작 순서

  • 명령 셸에서 pip install PyPDF2를 입력해 필요한 패키지를 설치합니다. 설치가 끝나면 노트북에서 import PyPDF2로 라이브러리를 불러옵니다.
  • filedialog를 임포트하여, 로컬 디렉터리에서 파일을 선택할 수 있는 대화상자를 만듭니다.
  • Text 위젯을 생성하고, 열기(Open), 지우기(Clear), 종료(Quit) 같은 메뉴를 추가합니다.
  • 각 메뉴에 대응하는 함수를 정의합니다.
  • 파일을 여는 함수를 정의합니다. 이 함수 안에서 먼저 PdfFileReader(file)로 파일을 읽은 뒤, 페이지를 추출합니다.
  • 추출한 내용을 텍스트 상자(Text Box)에 삽입합니다.
  • 종료(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()

실행 결과

위 코드를 실행하면 파일 열기, 내용 지우기, 애플리케이션 종료 기능을 갖춘 완성된 Tkinter 애플리케이션이 화면에 나타납니다.

Python Tkinter로 만드는 PDF 뷰어 – PyPDF2 활용 가이드

애플리케이션 좌측 상단의 "File" 메뉴를 클릭한 뒤 새 PDF 파일을 열면, 해당 문서의 내용이 텍스트 상자에 표시됩니다.

Python Tkinter로 만드는 PDF 뷰어 – PyPDF2 활용 가이드

참고: 최신 PyPDF2 버전 사용 시

PyPDF2 3.x 버전부터는 API가 일부 변경되었습니다. 위 코드의 PdfFileReader, getPage(), extractText()는 구버전(1.x~2.x) 기준이며, 최신 버전에서는 각각 PdfReader, reader.pages[0], page.extract_text() 형태로 사용해야 합니다. 설치된 버전에 맞게 코드를 조정하시기 바랍니다.