PDF toolkit 예제 2026 | 실무 코드로 배우는 초급~중급 활용법
PDF toolkit 예제 2026 | 실무 코드로 배우는 초급~중급 활용법
2026년 3월 28일
예제 1: PDFKit으로 간단한 PDF 생성 (Node.js)
const PDFDocument = require('pdfkit'); const fs = require('fs');// PDF 생성 const doc = new PDFDocument(); const stream = fs.createWriteStream('hello.pdf'); doc.pipe(stream);
// 텍스트 추가 doc.fontSize(25).text('Hello PDF!', 100, 100); doc.fontSize(12).text('작성일: 2026-03-28', 100, 150);
// 도형 추가 doc.rect(100, 200, 200, 100).stroke(); doc.fillColor('red').text('박스 안의 텍스트', 110, 240);
// 페이지 추가 doc.addPage().fontSize(20).text('2페이지', 100, 100);
// 파일 저장 doc.end(); console.log('PDF 생성 완료: hello.pdf');
예제 2: ReportLab으로 테이블 생성 (Python)
from reportlab.pdfgen import canvas from reportlab.platypus import SimpleDocTemplate, Table, TableStyle from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib import colorsPDF 생성
pdf_file = SimpleDocTemplate('table.pdf') elements = []
테이블 데이터
data = [ ['상품명', '가격', '수량'], ['노트북', '$1,200', '5'], ['마우스', '$50', '20'], ['키보드', '$100', '10'] ]
테이블 스타일
table = Table(data) table.setStyle(TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.grey), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'), ('FONTSIZE', (0, 0), (-1, 0), 14), ('BOTTOMPADDING', (0, 0), (-1, 0), 12), ('BACKGROUND', (0, 1), (-1, -1), colors.beige), ('GRID', (0, 0), (-1, -1), 1, colors.black) ]))
elements.append(table) pdf_file.build(elements) print('테이블 PDF 생성 완료: table.pdf')
예제 3: PyPDF2로 PDF 병합 (Python)
from PyPDF2 import PdfWriter, PdfReaderPDF Reader 생성
pdf_writer = PdfWriter()
여러 PDF 파일 병합
for pdf_file in ['file1.pdf', 'file2.pdf', 'file3.pdf']: reader = PdfReader(pdf_file) for page in reader.pages: pdf_writer.add_page(page)
결과 저장
with open('merged.pdf', 'wb') as output_file: pdf_writer.write(output_file)
print('PDF 병합 완료: merged.pdf')
예제 4: PDFKit으로 이미지 삽입 (Node.js)
const PDFDocument = require('pdfkit'); const fs = require('fs');const doc = new PDFDocument(); const stream = fs.createWriteStream('image.pdf'); doc.pipe(stream);
// 텍스트 doc.fontSize(20).text('보고서 커버', 100, 50);
// 이미지 삽입 doc.image('logo.png', 100, 100, { width: 200, height: 150 });
// 추가 텍스트 doc.fontSize(12).text('작성일: 2026-03-28', 100, 280);
doc.end(); console.log('이미지 포함 PDF 생성: image.pdf');
예제 5: PDF 암호 설정 (PyPDF2)
from PyPDF2 import PdfWriter, PdfReader기존 PDF 읽기
reader = PdfReader('input.pdf') writer = PdfWriter()
모든 페이지 복사
for page in reader.pages: writer.add_page(page)
암호 설정 (사용자/관리자 비밀번호)
writer.encrypt('user_password', 'admin_password')
저장
with open('encrypted.pdf', 'wb') as output_file: writer.write(output_file)
print('암호 설정 완료: encrypted.pdf')
실무 활용 팁
- 예제 1: 송장, 인증서, 간단 보고서 자동 생성
- 예제 2: 매출 현황, 인보이스, 명세서 테이블
- 예제 3: 월간 보고서, 계약서 여러 문서 합치기
- 예제 4: 브랜드 로고, 제품 이미지 포함 카탈로그
- 예제 5: 기밀 문서, 개인정보 포함 파일 보호
위 5가지 예제를 마스터하면 90% 실무 작업 커버 가능. 각 toolkit 공식 문서로 심화 학습 권장.
FAQ (예제 관련)
Q1. 예제 코드 실행 안 됨? → 필수 라이브러리 설치 확인 (npm install, pip install).
Q2. 한글 텍스트 깨짐? → 폰트 설정 필요 (reportlab 예제에서 한글폰트 지정).
Q3. 대용량 파일 처리? → bufferPages 옵션 사용, 배치 렌더링 권장.
Q4. 오류 처리 방법? → try-catch/try-except 블록 추가, 파일 존재 여부 확인.
Q5. 예제 조합 가능? → 가능, 출력 형식 맞추면 여러 toolkit 연결 사용 가능.
댓글
댓글 쓰기