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

Tkinter를 사용하여 이미지를 PDF로 변환하는 방법

파이썬(Python)은 스크립트 언어로서, CSV를 PDF로 변환하거나 PDF를 DOC으로 변환하는 것과 같은 다양한 파일 변환기를 손쉽게 만들 수 있게 도와줍니다. 몇 가지 라이브러리를 활용하면 이미지를 PDF로 변환하는 애플리케이션도 만들 수 있습니다. 이때 사용하는 것이 파이썬의 img2pdf 모듈로, 이미지의 바이너리(binary) 데이터를 파싱하여 PDF 파일로 변환해 줍니다.

애플리케이션 개발 순서

  1. 먼저 시스템에 img2pdf 패키지가 설치되어 있는지 확인합니다. 터미널에 pip install img2pdf를 입력해 패키지를 설치한 뒤, 코드 상단에서 img2pdf를 임포트합니다.
  2. filedialog를 임포트하여 사용자가 폴더에서 여러 장의 이미지를 선택할 수 있는 대화상자를 엽니다.
  3. from tkinter import * 구문으로 tkinter 라이브러리를 임포트합니다.
  4. Tkinter 라이브러리를 활용해 기본 화면 구조를 만듭니다. 파일 대화상자를 여는 버튼(Button) 위젯과 안내 메시지를 표시하는 라벨(Label) 위젯을 배치합니다.
  5. 사용자에게 여러 장의 이미지를 선택하도록 요청하는 대화상자를 여는 함수를 정의합니다.
  6. 선택한 파일을 바이너리 모드로 열고 convert() 메서드를 사용해 PDF로 변환·저장하는 함수를 정의합니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import filedialog
import img2pdf
from tkinter import ttk

# tkinter 프레임 인스턴스 생성
win = Tk()

# 창 크기와 제목 설정
win.geometry('750x250')
win.title('Image to PDF')

# 이미지 선택 대화상자를 여는 함수
def select_file():
    global images
    images = filedialog.askopenfilenames(initialdir='', title='이미지 선택')
    Label(win, text='\n'.join(images)).pack()

# 이미지를 PDF로 변환하는 함수
def image_to_pdf():
    for i, image in enumerate(images):
        pdf_name = image.rsplit('.', 1)[0] + '.pdf'
        with open(pdf_name, 'wb') as file:
            file.write(img2pdf.convert([image]))
    Label(frame, text='PDF 변환이 완료되었습니다!').pack()

# 라벨과 버튼 추가
Label(win, text='Image to PDF Converter', font='Caveat 25 bold').pack(pady=30)
ttk.Button(win, text='Select Images', command=select_file).pack(ipadx=10)
frame = Frame(win)
frame.pack()
ttk.Button(frame, text='Convert and Save', command=image_to_pdf).pack(side=LEFT, pady=20, ipadx=10)

win.mainloop()

코드 설명

select_file() 함수는 파일 탐색기를 열어 사용자가 한 번에 여러 장의 이미지를 선택할 수 있게 하며, 선택된 파일 경로들을 전역 변수 images에 저장한 후 화면에 표시합니다. image_to_pdf() 함수는 선택된 각 이미지를 원본 파일명과 동일한 이름의 PDF 파일로 변환하여 저장하고, 작업이 끝나면 완료 메시지를 출력합니다.

실행 결과

위 코드를 실행하면 이미지를 PDF 파일로 변환해 주는 애플리케이션 창이 나타납니다.

Tkinter를 사용하여 이미지를 PDF로 변환하는 방법

이제 로컬 폴더에서 변환할 이미지 파일을 선택한 뒤 'Convert and Save'(변환 및 저장) 버튼을 클릭하면, 선택한 이미지가 PDF 파일로 변환되어 저장됩니다.