개발/Python

[Python] 파이썬으로 PDF 파일 생성하기 fpdf2 설치부터 사용까지 총정리

일요일좋아하는사람 2025. 4. 27. 23:02
728x90
반응형


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" 같은 라이브러리도 탐색해보세요.

 






728x90
반응형