FPDF란 무엇인가?

2025. 5. 9. 10:33PYTHON

반응형

 

FPDF란 무엇인가?

FPDFFree 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 사용 시 주의 사항

  1. 페이지 크기: 기본 페이지 크기는 A4입니다. 필요에 따라 set_page_size()를 사용하여 페이지 크기를 변경할 수 있습니다.
  2. 폰트 경로: 외부 폰트를 사용하려면 add_font() 메서드를 사용하여 폰트를 추가해야 합니다. 웹에서 제공하는 무료 폰트를 다운로드해 사용할 수 있습니다.
  3. 성능: FPDF는 매우 가볍고 성능이 좋습니다. 그러나 대규모 PDF를 생성할 때는 성능을 고려해야 할 수 있습니다.
  4. 파일 형식: PDF 외에도 텍스트 파일을 만들거나 HTML을 사용해 PDF를 생성하는 라이브러리도 있으므로, 프로젝트에 적합한 라이브러리를 선택하는 것이 중요합니다.

결론

FPDF는 Python에서 PDF 문서를 쉽게 만들 수 있는 도구로, 다양한 기능을 제공하면서도 간단하고 직관적인 사용법을 자랑합니다. 텍스트, 이미지, 테이블, 헤더 및 푸터 등 기본적인 요소를 다룰 수 있으며, 이를 바탕으로 맞춤형 PDF 문서를 손쉽게 생성할 수 있습니다.

FPDF를 사용하면 보고서, 청구서, 계약서 등 다양한 유형의 PDF를 자동화하여 생성할 수 있어 업무 효율성을 크게 향상시킬 수 있습니다. 다양한 옵션을 사용하여 자신만의 PDF 생성 시스템을 구축해보세요!