파이썬을 활용한 PDF 파일 자동 생성 및 다운로드 방법
오늘은 파이썬을 이용하여 PDF 파일을 자동으로 생성하고 다운로드하는 방법에 대해 알아보겠습니다. PDF 파일은 여러 문서 형식 중에서도 널리 사용되며, 고정된 서식을 유지하는 데 강점을 지니고 있습니다. 그렇기 때문에, 특정 데이터를 기반으로 PDF 파일을 생성할 수 있다면 많은 업무가 효율적으로 진행될 수 있습니다.

PDF 파일 생성의 필요성
많은 기업이나 개인이 보고서, 청구서, 계약서와 같은 다양한 문서 형식을 PDF로 변환하여 사용합니다. 이러한 PDF 파일은 쉽게 배포할 수 있으며, 모든 기기에서 동일한 형식으로 내용을 확인할 수 있기에 매우 유용합니다. 따라서, 자동으로 PDF 파일을 생성하는 방법을 알고 있다면, 문서 작성의 시간을 단축하고 작업 효율성을 높일 수 있습니다.
파이썬 PDF 생성기 설치하기
PDF 파일을 생성하기 위해서는 먼저 필요한 라이브러리를 설치해야 합니다. 주로 사용되는 파이썬 라이브러리는 ReportLab와 PyPDF2입니다. 이를 통해 간편하게 PDF 파일을 만들 수 있습니다. 다음의 명령어를 통해 두 라이브러리를 설치할 수 있습니다:
pip install reportlab
pip install PyPDF2
PDF 파일 생성 코드 작성하기
이제 PDF 파일을 생성하는 간단한 코드를 작성해 보겠습니다. 아래의 코드는 텍스트를 포함한 PDF 파일을 생성하는 기본 예제입니다.
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def create_pdf(file_name, text):
c = canvas.Canvas(file_name, pagesize=letter)
c.drawString(100, 750, text)
c.save()
create_pdf("sample.pdf", "안녕하세요, 파이썬으로 생성한 PDF입니다!")
위 코드를 실행하면 “sample.pdf”라는 이름의 PDF 파일이 생성되며, 해당 파일에는 지정한 텍스트가 포함됩니다. canvas.Canvas 클래스를 사용하여 PDF의 페이지를 정의하고, drawString 메서드를 통해 텍스트를 추가하는 형태입니다.
PDF 파일 다운로드 기능 추가하기
웹 애플리케이션을 통해 PDF 파일을 다운로드할 수 있는 기능을 추가하려면 웹 프레임워크를 사용할 수 있습니다. Flask와 같은 경량 웹 프레임워크를 사용하여 아래와 같이 구현할 수 있습니다.
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/download')
def download_file():
create_pdf("sample.pdf", "안녕하세요, PDF 파일 다운로드입니다!")
return send_file("sample.pdf", as_attachment=True)
if __name__ == '__main__':
app.run(debug=True)
위의 Flask 코드를 실행하면, 웹 서버가 생성되고 “/download” 주소로 접근했을 때 자동으로 PDF 파일이 생성되어 다운로드됩니다. send_file 함수를 통해 파일을 클라이언트에게 전송하는 형태로, 사용자가 손쉽게 파일을 다운로드할 수 있습니다.
PDF 파일 용량 줄이기
여러 PDF 파일의 용량을 줄이는 기능은 필요한 경우가 많습니다. 위의 코드를 기반으로 한 PDF 파일 압축을 위해 PyPDF2를 활용할 수 있습니다. 아래 코드는 PDF의 각 페이지를 압축하는 방법을 보여줍니다.
from PyPDF2 import PdfReader, PdfWriter
def compress_pdf(input_pdf, output_pdf):
with open(input_pdf, 'rb') as read_file:
reader = PdfReader(read_file)
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
with open(output_pdf, 'wb') as write_file:
writer.write(write_file)
compress_pdf("sample.pdf", "compressed_sample.pdf")
위의 코드를 실행하면 “compressed_sample.pdf”라는 이름으로 압축된 PDF 파일이 생성됩니다. 이를 통해 여러 개의 PDF 파일을 한꺼번에 압축하는 것도 가능합니다.
다중 PDF 압축 실행하기
한 번에 여러 개의 PDF 파일을 선택하여 압축하는 기능도 구현할 수 있습니다. 아래 코드는 PyQt5를 사용하여 GUI 환경에서 다중 파일 선택 기능을 추가합니다.
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog, QMessageBox
import os
class PdfCompressor(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('PDF 압축기')
self.setGeometry(600, 200, 400, 200)
self.btn = QPushButton('파일찾기', self)
self.btn.move(150, 100)
self.btn.clicked.connect(self.btn_clicked)
def btn_clicked(self):
files_path = QFileDialog.getOpenFileNames(self, "압축할 PDF 파일 선택", "", "PDF Files (*.pdf)")[0]
for file_path in files_path:
compress_pdf(file_path, f"compressed-{os.path.basename(file_path)}")
QMessageBox.about(self, '완료!', 'PDF 압축이 완료되었습니다.')
if __name__ == '__main__':
app = QApplication([])
window = PdfCompressor()
window.show()
app.exec_()
위 코드를 통해 사용자는 여러 PDF 파일을 선택하여 간편하게 압축할 수 있습니다. GUI 환경에서 파일 선택 후 버튼 클릭만으로 압축된 PDF 파일이 생성되는 과정을 경험할 수 있습니다.

결론
파이썬은 PDF 파일을 자동으로 생성하고, 다운로드하며, 압축하는 등 다양한 기능을 제공하는 강력한 도구입니다. 이를 통해 업무의 효율성을 높이고, 시간 절약을 이룰 수 있습니다. 또한, 위의 예제 코드를 바탕으로 자신만의 응용 프로그램을 만들어 보시기 바랍니다.
지속적으로 파이썬을 학습하고 확장해 나간다면, 다양한 분야에서 활용 가능한 기술을 습득할 수 있을 것입니다.
자주 물으시는 질문
파이썬으로 PDF 파일을 자동 생성하려면 어떻게 해야 하나요?
PDF 파일을 생성하고 싶다면, 우선 ReportLab 라이브러리를 설치한 후 간단한 코드를 작성하면 됩니다. 이 과정을 통해 특정 텍스트를 포함한 PDF 파일을 손쉽게 생성할 수 있습니다.
PDF 파일 다운로드 기능은 어떻게 추가하나요?
Flask와 같은 웹 프레임워크를 활용하여 다운로드 기능을 추가할 수 있습니다. 지정된 주소로 접근하면 자동으로 PDF 파일을 생성하고 사용자에게 다운로드 링크를 제공하게 됩니다.
여러 PDF 파일을 한번에 압축할 수 있나요?
네, PyQt5를 사용하여 GUI 환경에서 여러 PDF 파일을 선택하고 간편하게 압축할 수 있는 기능을 만들 수 있습니다. 사용자는 원하는 파일을 선택한 후 버튼 클릭 한 번으로 압축된 파일을 받을 수 있습니다.