Python을 사용하면 아주 간편하게 PDF 파일을 생성할 수 있습니다.
특히 보고서, 이력서, 포트폴리오, 청구서, 자동화 문서 등을 만들 때 매우 유용하죠.
실제 코드 예제를 곁들이면서, 파이썬으로 PDF를 만드는 방법을 정리해보겠습니다.
1. 왜 Python으로 PDF를 만들까?
Python은 빠르고, 다양한 라이브러리가 있기 때문입니다. 특히 업무 자동화할 때
- Word -> PDF 변환
- HTML -> PDF 변환
- 텍스트 직접 생성 후 PDF로 저장
모두 Python 코드 몇 줄로 끝낼 수 있습니다.
또한, 사람이 직접 디자인하는 것보다 프로그램이 알아서 문서를 생성하면 반복 작업이 줄어들어 생산성이 비약적으로 향상됩니다.
2. 가장 많이 쓰는 라이브러리: `fpdf2
Python에서 PDF를 생성할 때 가장 널리 쓰이는 라이브러리 중 하나는 `fpdf2`입니다.
설치 방법은 아주 간단합니다.
pip install fpdf2
fpdf2는
- 텍스트 추가
- 폰트 설정
- 이미지 삽입
- 페이지 나누기
- 표(Table) 작성
까지 지원합니다.
3. 가장 기본적인 PDF 생성하기
가장 기본적인 PDF를 만드는 코드를 살펴보겠습니다.
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Hello, PDF World!", ln=True, align='C')
pdf.output("simple_example.pdf")
- add_page(): 새 페이지 추가
- set_font(): 폰트 설정 (Arial, 12pt)
- cell(): 하나의 텍스트 블록 작성
- output(): 파일 저장
아주 간단하죠?
4. 한글 PDF 만들기 (TTF 폰트 사용)
한글을 출력하려면, 한글 TTF 폰트를 등록해서 사용해야 합니다.
pdf.add_font(family='NanumGothic', fname='NanumGothic.ttf', uni=True)
pdf.set_font('NanumGothic', size=14)
pdf.cell(0, 10, '안녕하세요, 파이썬 PDF 생성입니다!', ln=True)
중요 포인트!
- add_font()할 때 uni=True를 반드시 넣어야 유니코드(한글) 지원합니다.
5. 여러 페이지를 자동으로 생성하기
문서가 길어지면 페이지가 자동으로 넘어가야 합니다.
fpdf2는 이를 매우 쉽게 처리합니다.
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
for i in range(100):
pdf.cell(0, 10, f"Line {i+1}", ln=True)
pdf.output("multipage_example.pdf")
- 줄(line)을 100개 추가하면 알아서 페이지가 넘어갑니다.
6. 문단 (Paragraph) 작성하기
긴 텍스트를 자연스럽게 쓰려면 multi_cell()을 사용해야 합니다.
text = """
파이썬으로 PDF 파일을 만드는 것은 매우 쉽습니다.
특히 반복적으로 문서를 생성해야 할 때 큰 도움이 됩니다.
"""
pdf.multi_cell(0, 10, text)
- multi_cell()은 줄바꿈까지 알아서 처리해줍니다.
7. 이미지를 추가하기
PDF에 이미지를 추가할 수도 있습니다.
pdf.image('example.jpg', x=10, y=30, w=100)
- `x`, `y`는 위치
- `w`는 폭 (width)
주의! 이미지 파일이 현재 작업 폴더에 있어야 합니다.
8. 표(Table) 그리기
cell()을 반복하면 표도 만들 수 있습니다.
header = ['이름', '나이', '직업']
rows = [
['민지', '30', '개발자'],
['지민', '28', '디자이너'],
]
# Header
for col in header:
pdf.cell(40, 10, col, border=1)
pdf.ln()
# Rows
for row in rows:
for item in row:
pdf.cell(40, 10, item, border=1)
pdf.ln()
- border=1을 주면 셀마다 테두리가 생깁니다.
9. 여러 폰트 스타일 사용하기
다양한 스타일을 섞어서 쓸 수 있습니다.
pdf.set_font('Arial', 'B', 16)
pdf.cell(0, 10, '굵은 제목', ln=True)
pdf.set_font('Arial', '', 12)
pdf.cell(0, 10, '일반 텍스트입니다.', ln=True)
- B는 Bold(굵게)
- ''는 기본체
10. 문서 메타데이터 설정하기
PDF 문서의 제목, 작성자 등을 설정할 수 있습니다.
pdf.set_title('일요일의 포트폴리오')
pdf.set_author('Sunday')
pdf.set_creator('Python FPDF2')
- 나중에 PDF 문서를 열면 이 정보가 보입니다.
11. 실제 활용 예시: PDF 자동 생성
간단한 사용자 정보를 자동으로 만들 수 있습니다.
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=14)
pdf.cell(0, 10, '이름: 일요일', ln=True)
pdf.cell(0, 10, '연락처: 010-1234-5678', ln=True)
pdf.cell(0, 10, '이메일: sunday@example.com', ln=True)
pdf.cell(0, 10, '기술: Python, AWS, DevOps', ln=True)
pdf.output("sample.pdf")
- 반복 입력 없이 프로그래밍으로 이력서를 빠르게 만들 수 있습니다.
12. 마무리 - 파이썬 PDF 만들기 총정리
요약하면:
- fpdf2 설치 (pip install fpdf2)
- add_page(), set_font(), cell(), multi_cell() 기본 조작
- TTF 폰트 등록해서 한글 지원
- 이미지, 표, 스타일 다양하게 조정
- 페이지 넘김, 메타데이터 설정까지 가능
파이썬으로 PDF를 생성하는 것은 매우 강력하고 실용적입니다.
직장에서도, 개인 프로젝트에서도, 자동화 업무에서도 활용도가 매우 높습니다.
더 고급 기능 (예: PDF 병합, 분할, 암호화 등)도 가능하니, fpdf2 공식 문서를 참고하거나 "PyMuPDF", "PyPDF2" 같은 라이브러리도 탐색해보세요. |
'개발 > Python' 카테고리의 다른 글
[Python] 파이썬으로 만드는 마인크래프트 스타일 블록 게임 (15) | 2025.05.01 |
---|---|
[Python] 파이썬으로 메이플스토리 같은 도트 RPG 게임 만들기 (8) | 2025.04.30 |
[Python] 젤다 스타일 파이썬 게임 만들기 - 영상 추천 (3) | 2025.04.22 |
[Python] 고전 게임 시리즈 회고 (1) | 2025.04.22 |
[Python] 고전 게임 시리즈 회고 – '단순함' 속에서 배운 모든 것 (0) | 2025.04.22 |