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 colors

PDF 생성

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, PdfReader

PDF 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 연결 사용 가능.

댓글

이 블로그의 인기 게시물

한국자동차환경협회 조기폐차 신청 방법과 보조금 수령 절차 총정리

신치토세 공항 리무진 버스 총정리: 삿포로까지 편안한 이동을 위한 완벽 가이드

KTX 경주 완전정복! 시간표·요금·정차역부터 관광 연결 팁까지