본문 바로가기
개발정리 (nodeJS)

[nodeJS] Node.js로 PDF 생성 및 처리하기

by 할리갈리0 2024. 9. 9.

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 문서를 쉽게 생성하고 조작할 수 있습니다.

 

반응형