[파이썬] Flask에서의 PDF 생성

Flask는 파이썬 웹 프레임워크로, 다양한 기능들을 추가할 수 있는 확장성을 제공합니다. 이 중에 하나는 PDF 생성 기능입니다. Flask를 사용하여 PDF를 생성하는 것은 매우 유용하며, 다양한 용도로 활용할 수 있습니다.

PDFkit 라이브러리

PDF 생성을 위해 Flask에서 많이 사용되는 라이브러리 중 하나는 PDFkit 입니다. PDFkit은 wkhtmltopdf 또는 wkhtmltopdf-binary와 함께 사용되어 HTML을 PDF로 변환할 수 있습니다.

PDFkit를 사용하기 위해 먼저 아래 명령을 사용하여 라이브러리를 설치해야 합니다.

pip install pdfkit

PDFkit 사용법

PDFkit를 사용하여 Flask 애플리케이션에서 PDF를 생성하는 방법은 다음과 같이 간단합니다.

  1. 먼저, PDFkit을 import 합니다.
import pdfkit
  1. HTML 파일 또는 문자열을 PDF로 변환하려면 pdfkit.from_file() 또는 pdfkit.from_string() 메소드를 사용합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
html = '<h1>My PDF Content</h1>'
pdfkit.from_string(html, 'output.pdf')
  1. PDF 생성 옵션을 사용하여 변환할 수도 있습니다. 다음 예제에서는 페이지나 폰트 크기를 사용자 정의하는 방법을 보여줍니다.
options = {
    'page-size': 'A4',
    'margin-top': '0mm',
    'margin-right': '0mm',
    'margin-bottom': '0mm',
    'margin-left': '0mm',
    'encoding': "UTF-8",
    'font-size': '12pt'
}

pdfkit.from_file('input.html', 'output.pdf', options=options)
  1. Flask 애플리케이션 내에서 PDF 생성을 처리하려면 Flask의 라우트 함수를 사용하여 PDF 생성 코드를 작성합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
from flask import Flask, render_template, make_response
import pdfkit

app = Flask(__name__)

@app.route('/')
def create_pdf():
    html = render_template('template.html')  # 렌더링할 HTML 템플릿 파일

    pdf = pdfkit.from_string(html, False)
    response = make_response(pdf)
    response.headers['Content-Type'] = 'application/pdf'
    response.headers['Content-Disposition'] = 'inline; filename=output.pdf'
    return response

if __name__ == '__main__':
    app.run()

위의 코드에서, template.html은 Flask 애플리케이션 내에서 렌더링될 HTML 템플릿 파일을 가리킵니다. PDF 파일은 response 객체를 통해 클라이언트로 전달됩니다.

결론

Flask와 PDFkit을 함께 사용하여 파이썬으로 간단하고 효과적으로 PDF를 생성할 수 있습니다. Flask를 사용하여 웹 애플리케이션을 개발하고 있다면, PDF 파일을 생성하는 기능을 추가하여 더욱 다양한 용도로 활용할 수 있습니다.