파이썬(Python)은 스크립트 언어로서, CSV를 PDF로 변환하거나 PDF를 DOC으로 변환하는 것과 같은 다양한 파일 변환기를 손쉽게 만들 수 있게 도와줍니다. 몇 가지 라이브러리를 활용하면 이미지를 PDF로 변환하는 애플리케이션도 만들 수 있습니다. 이때 사용하는 것이 파이썬의 img2pdf 모듈로, 이미지의 바이너리(binary) 데이터를 파싱하여 PDF 파일로 변환해 줍니다.
애플리케이션 개발 순서
- 먼저 시스템에 img2pdf 패키지가 설치되어 있는지 확인합니다. 터미널에
pip install img2pdf를 입력해 패키지를 설치한 뒤, 코드 상단에서 img2pdf를 임포트합니다. - filedialog를 임포트하여 사용자가 폴더에서 여러 장의 이미지를 선택할 수 있는 대화상자를 엽니다.
from tkinter import *구문으로 tkinter 라이브러리를 임포트합니다.- Tkinter 라이브러리를 활용해 기본 화면 구조를 만듭니다. 파일 대화상자를 여는 버튼(Button) 위젯과 안내 메시지를 표시하는 라벨(Label) 위젯을 배치합니다.
- 사용자에게 여러 장의 이미지를 선택하도록 요청하는 대화상자를 여는 함수를 정의합니다.
- 선택한 파일을 바이너리 모드로 열고 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 파일로 변환해 주는 애플리케이션 창이 나타납니다.

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