2025. 5. 9. 10:33ㆍPYTHON
FPDF란 무엇인가?
FPDF는 Free PDF의 약자로, Python에서 PDF 파일을 생성하기 위한 간단하고 강력한 라이브러리입니다. 이를 사용하면 복잡한 코드 작성 없이도 텍스트, 이미지, 테이블 등 다양한 PDF 요소를 다룰 수 있습니다.
FPDF는 매우 가벼우면서도 다양한 기능을 제공합니다. 다음과 같은 기능들을 지원합니다:
- 텍스트 추가 (다양한 폰트와 스타일)
- 이미지 삽입
- 테이블 생성
- 페이지 레이아웃 조정
- 페이지 번호 추가
- 사용자 정의 헤더 및 푸터
FPDF 설치 방법
FPDF는 Python에서 사용하기 쉽게 설치할 수 있습니다. Python의 패키지 관리자인 pip을 통해 간단하게 설치할 수 있습니다.
pip install fpdf
설치 후, import fpdf로 사용할 준비가 끝났습니다.
FPDF 사용법
1. 기본 설정 및 PDF 객체 생성
FPDF 라이브러리를 사용하려면 FPDF 클래스를 상속받아 객체를 생성해야 합니다. 객체 생성 후, 페이지 추가 및 텍스트를 넣는 방식으로 PDF 문서를 작성합니다.
from fpdf import FPDF
# PDF 객체 생성
pdf = FPDF()
# 새로운 페이지 추가
pdf.add_page()
# 기본 폰트 설정 (폰트, 스타일, 크기)
pdf.set_font("Arial", size=12)
# 텍스트 추가
pdf.cell(200, 10, txt="Hello World!", ln=True, align='C')
# PDF 출력
pdf.output("example.pdf")
위 코드는 간단한 PDF를 생성하며, 텍스트 "Hello World!"를 중앙 정렬로 출력합니다.
2. 폰트 설정
FPDF는 다양한 기본 폰트를 제공합니다. 또한, 외부 폰트를 사용할 수도 있습니다.
# 폰트 설정 (폰트, 스타일, 크기)
pdf.set_font("Arial", "B", 16) # Bold 16pt 크기
FPDF 기본 제공 폰트:
- Arial, Times, Courier 등
- 스타일: B (Bold), I (Italic), U (Underline)
3. 페이지 추가
PDF 문서에 페이지를 추가하려면 add_page() 메서드를 사용합니다. 기본적으로 페이지는 A4 사이즈로 추가되며, 페이지 크기를 변경하려면 set_page_size() 메서드를 사용할 수 있습니다.
pdf.cell(200, 10, txt="이것은 텍스트입니다.", ln=True, align='C')
4. 텍스트 및 셀 추가
PDF에 텍스트를 추가하려면 cell() 메서드를 사용합니다. 셀은 텍스트가 들어가는 직사각형을 의미하며, x, y 위치, 너비, 높이 등을 설정할 수 있습니다.
pdf.cell(200, 10, txt="이것은 텍스트입니다.", ln=True, align='C')
- 200: 셀 너비
- 10: 셀 높이
- txt: 출력할 텍스트
- ln: 셀 이후 줄 바꿈 여부 (True는 줄 바꿈)
- align: 텍스트 정렬 (좌측: 'L', 중앙: 'C', 우측: 'R')
5. 이미지 삽입
이미지를 PDF에 삽입하려면 image() 메서드를 사용합니다. 파일 경로와 함께 위치와 크기를 설정할 수 있습니다.
pdf.image('image.jpg', x=10, y=30, w=100)
- x, y: 이미지의 위치
- w: 이미지의 너비 (높이는 자동으로 비율에 맞게 조정됩니다.)
6. 표 생성
FPDF로 표를 생성하려면 cell() 메서드를 반복하여 테이블을 작성할 수 있습니다. 셀을 이어서 출력하면 자동으로 표 형태가 됩니다.
# 표 데이터 예시
data = [
['이름', '나이', '직업'],
['홍길동', '30', '학생'],
['김철수', '28', '개발자'],
['이영희', '35', '디자이너']
]
# 표 출력
for row in data:
for item in row:
pdf.cell(40, 10, item, border=1)
pdf.ln()
이 예제는 데이터를 받아서 각 셀에 출력하고, border=1로 테두리를 추가합니다.
7. 헤더와 푸터 추가
PDF 문서에 일관된 헤더와 푸터를 추가하려면 header()와 footer() 메서드를 오버라이드하여 사용자 정의 내용을 추가할 수 있습니다.
class PDF(FPDF):
def header(self):
self.set_font("Arial", "B", 12)
self.cell(0, 10, "PDF 문서 헤더", 0, 1, "C")
def footer(self):
self.set_y(-15)
self.set_font("Arial", "I", 8)
self.cell(0, 10, f"페이지 {self.page_no()}", 0, 0, "C")
8. 다중 페이지 지원
FPDF는 여러 페이지를 쉽게 추가하고 관리할 수 있습니다. 각 페이지에서 다른 텍스트나 이미지를 삽입할 수 있으며, 페이지마다 다른 레이아웃을 설정할 수 있습니다.
pdf.add_page() # 페이지 추가
pdf.cell(0, 10, "두 번째 페이지 텍스트", ln=True)
FPDF 사용 시 주의 사항
- 페이지 크기: 기본 페이지 크기는 A4입니다. 필요에 따라 set_page_size()를 사용하여 페이지 크기를 변경할 수 있습니다.
- 폰트 경로: 외부 폰트를 사용하려면 add_font() 메서드를 사용하여 폰트를 추가해야 합니다. 웹에서 제공하는 무료 폰트를 다운로드해 사용할 수 있습니다.
- 성능: FPDF는 매우 가볍고 성능이 좋습니다. 그러나 대규모 PDF를 생성할 때는 성능을 고려해야 할 수 있습니다.
- 파일 형식: PDF 외에도 텍스트 파일을 만들거나 HTML을 사용해 PDF를 생성하는 라이브러리도 있으므로, 프로젝트에 적합한 라이브러리를 선택하는 것이 중요합니다.
결론
FPDF는 Python에서 PDF 문서를 쉽게 만들 수 있는 도구로, 다양한 기능을 제공하면서도 간단하고 직관적인 사용법을 자랑합니다. 텍스트, 이미지, 테이블, 헤더 및 푸터 등 기본적인 요소를 다룰 수 있으며, 이를 바탕으로 맞춤형 PDF 문서를 손쉽게 생성할 수 있습니다.
FPDF를 사용하면 보고서, 청구서, 계약서 등 다양한 유형의 PDF를 자동화하여 생성할 수 있어 업무 효율성을 크게 향상시킬 수 있습니다. 다양한 옵션을 사용하여 자신만의 PDF 생성 시스템을 구축해보세요!
'PYTHON' 카테고리의 다른 글
네이트의 검색 키워드 가져오기 (0) | 2025.05.28 |
---|---|
일단위 DB백업진행 (0) | 2025.04.09 |
📌 Doji(도지)란? (0) | 2025.04.01 |
✅ 서비스 중지 없이 MySQL 대용량 데이터(80GB) 동기화하는 방법 (1) | 2025.03.23 |
[PYTHON]asyncio: 파이썬 비동기 프로그래밍 완벽 가이드 (0) | 2025.02.27 |