PDF(Portable Document Format)는 문서를 전자적으로 표시하고 공유하기 위한 표준 파일 형식입니다. Node.js에서 PDF 문서를 생성하고 조작하기 위해 PDFKit이라는 강력한 모듈을 사용할 수 있습니다. PDFKit은 복잡한 PDF 문서를 쉽게 생성할 수 있도록 다양한 기능을 제공합니다. 이 라이브러리는 문서, 그래픽, 이미지, 링크 등의 요소를 PDF에 추가할 수 있도록 도와줍니다.
1. PDFKit 설치 및 기본 설정
프로젝트 초기화 및 PDFKit 설치
mkdir pdfkit-nodejs
cd pdfkit-nodejs
npm init -y
npm install pdfkit
"Hello, PDFKit!"이라는 텍스트를 포함한 PDF 파일을 생성하여 output.pdf로 저장
// app.js
const PDFDocument = require('pdfkit');
const fs = require('fs');
// PDF 문서 생성
const doc = new PDFDocument();
// 파일 저장
doc.pipe(fs.createWriteStream('output.pdf'));
// 기본 텍스트 추가
doc.text('Hello, PDFKit!', {
align: 'center'
});
// 문서 마무리
doc.end();
2. PDF 생성 및 텍스트 추가하기
텍스트 스타일 지정 가능.
폰트 크기, 정렬, 색상, 링크 등의 스타일을 설정하여 텍스트를 PDF 문서에 추가
// app.js (continued)
doc.fontSize(25)
.text('PDFKit을 사용한 PDF 생성', {
align: 'center',
underline: true
});
doc.fontSize(12)
.fillColor('gray')
.text('PDF 문서를 쉽게 생성할 수 있습니다.', {
align: 'left',
indent: 30,
lineGap: 10
});
doc.moveDown()
.fillColor('blue')
.text('클릭하여 PDFKit GitHub 페이지로 이동', {
link: '<https://github.com/foliojs/pdfkit>',
underline: true
});
3. 이미지 및 그래픽 요소 추가하기
이미지 파일의 경로를 지정하여 PDF 문서에 삽입 가능.
fit 옵션을 사용하여 이미지의 크기를 조정 가능
// app.js (continued)
doc.image('path/to/image.png', {
fit: [250, 300],
align: 'center',
valign: 'center'
});
직선, 도형 등의 그래픽 요소를 그릴 수 있으며, 직선, 사각형, 원을 그려 PDF 문서에 그래픽 요소를 추가 가능.
javascript코드 복사
// app.js (continued)
// 직선 그리기
doc.moveTo(100, 100)
.lineTo(300, 100)
.stroke();
// 사각형 그리기
doc.rect(100, 150, 200, 100)
.fillAndStroke('green', 'black');
// 원 그리기
doc.circle(200, 350, 50)
.fill('red');
4. PDF 저장 및 스트리밍
PDF 문서를 파일로 저장 가능.
output.pdf 파일로 PDF 문서를 저장하며, 저장 완료 후 메시지를 출력
// app.js (continued)
const filePath = 'output.pdf';
doc.pipe(fs.createWriteStream(filePath));
// 파일 저장 완료 이벤트
doc.on('finish', () => {
console.log(`PDF 파일이 ${filePath}에 저장되었습니다.`);
});
PDF 문서를 HTTP 응답으로 스트리밍하여 브라우저에 직접 전송 가능.
Express 서버를 사용하여 /download 경로에서 PDF 문서를 생성하고, HTTP 응답으로 전송
// server.js
const express = require('express');
const PDFDocument = require('pdfkit');
const app = express();
const port = 3000;
app.get('/download', (req, res) => {
const doc = new PDFDocument();
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'inline; filename="download.pdf"');
doc.pipe(res);
doc.text('PDFKit으로 생성된 PDF 문서', {
align: 'center'
});
doc.end();
});
app.listen(port, () => {
console.log(`Server running at <http://localhost>:${port}`);
});
5. PDFKit로 PDF 문서 처리하기
페이지를 추가하거나, 문서의 특정 위치에 주석 추가 가능.
// app.js (continued)
// 새로운 페이지 추가
doc.addPage()
.fontSize(20)
.text('새로운 페이지에 추가된 텍스트', {
align: 'center'
});
// 주석 추가
doc.annotate(150, 150, 100, 100, {
Type: 'Text',
Contents: '이것은 주석입니다.',
Open: true
});
이번 포스팅에서는 Node.js에서 PDFKit을 사용하여 PDF 문서를 생성하고 처리하는 방법을 살펴보았습니다. PDFKit은 다양한 텍스트 스타일, 이미지 삽입, 그래픽 요소 그리기, 파일 저장 및 스트리밍 기능을 제공하여 PDF 문서를 쉽게 생성하고 조작할 수 있습니다.
'개발정리 (nodeJS)' 카테고리의 다른 글
[nodeJS] Node.js로 GraphQL API 구현하기 (2) | 2024.09.18 |
---|---|
[nodeJS] Node.js와 Elasticsearch를 사용한 검색 기능 구현하기 (0) | 2024.09.13 |
[nodeJS] Node.js에서 시계열 데이터베이스 적용하기 (0) | 2024.09.03 |
[nodeJS] Node.js와 gRPC를 사용한 고성능 서비스 구축하기 (0) | 2024.08.26 |
[nodeJS] Node.js와 RabbitMQ를 사용한 메시지 큐 시스템 구축하기 (0) | 2024.08.14 |