[파이썬] Flask에서의 PDF 생성
Flask는 파이썬 웹 프레임워크로, 다양한 기능들을 추가할 수 있는 확장성을 제공합니다. 이 중에 하나는 PDF 생성 기능입니다. Flask를 사용하여 PDF를 생성하는 것은 매우 유용하며, 다양한 용도로 활용할 수 있습니다.
PDFkit 라이브러리
PDF 생성을 위해 Flask에서 많이 사용되는 라이브러리 중 하나는 PDFkit 입니다. PDFkit은 wkhtmltopdf 또는 wkhtmltopdf-binary와 함께 사용되어 HTML을 PDF로 변환할 수 있습니다.
PDFkit를 사용하기 위해 먼저 아래 명령을 사용하여 라이브러리를 설치해야 합니다.
pip install pdfkit
PDFkit 사용법
PDFkit를 사용하여 Flask 애플리케이션에서 PDF를 생성하는 방법은 다음과 같이 간단합니다.
- 먼저, PDFkit을 import 합니다.
import pdfkit
- HTML 파일 또는 문자열을 PDF로 변환하려면
pdfkit.from_file()
또는pdfkit.from_string()
메소드를 사용합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
html = '<h1>My PDF Content</h1>'
pdfkit.from_string(html, 'output.pdf')
- 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)
- 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 파일을 생성하는 기능을 추가하여 더욱 다양한 용도로 활용할 수 있습니다.