[Node.js] node.js로 PDF 문서 생성하기[Node.js] node.js로 PDF 문서 생성하기
Posted at 2019. 4. 11. 19:58 | Posted in Node.js참고 : 자바스크립트와 Node.js를 이용한 웹 크롤링 테크닉
■ PDFKit을 이용한 PDF문서 출력
node.js를 활용하여 PDF 문서를 출력해 보려고 한다.
PDFKit이라고 하는 라이브러리가 node.js 용으로 공개되어 있어 PDF를 쉽게 만들어 낼 수 있다.
npm을 사용하여 PDFKit을 설치한다.
$ npm install pdfkit |
|
설치가 완료 되었다면 아래 코드와 같이 PDF 파일을 만들어 보도록 하자.
# 소스코드
pdfkit-test.js |
// 모듈로드 const pdfDocument = require('PDFKit'); const fs = require("fs"); // 도큐먼트 생성 let doc = new pdfDocument(); // 출력파일 지정 doc.pipe(fs.createWriteStream("output.pdf")); // 폰트지정 - 나눔고딕 사용(한글폰트를 사용해야 한다.) doc.font("NanumGothic.ttf"); // 문자표시 doc.fontSize(30).text("Wicked_MISO", 90, 100); doc.fontSize(20).text("사악미소", 100, 180); // 도형 그리기 doc.save() .moveTo(80, 80) .lineTo(300, 80) .lineTo(300, 150) .lineTo(80, 150) .lineTo(80, 80) .stroke("#0000FF"); // 페이지 추가 doc.addPage(); // 도형 그리기 doc.save() .moveTo(100, 150) .lineTo(100, 250) .lineTo(200, 250) .fill("#FF0000"); // 종료 doc.end(); |
.fongSize( ) : 크기를 지정하고
.text( ) : 출력할 텍스트와 표시 위치를 지정한다
화면의 왼쪽 위 좌표가 (0, 0)이고 밑으로 내려갈 수록 수치가 높아진다.
메소드 |
의 미 |
.moveTo(x, y) |
· 도형의 시작 좌표를 지정한다. |
.lineTo(x, y) |
· 이전 좌표에서(x, y)로 선을 긋는다. |
.stroke(color) |
· 지정한 좌표들에 선을 긋는다. |
.fill(color) |
· 지저안 좌표들을 칠한다. |
# 출력결과
$ node pdfkit-test.js |
■ PDFKit을 이용한 PDF문서 출력
# 소스코드
pdfkit-graph.js |
// 모듈로드 const pdfDocument = require("PDFKit"); const fs = require("fs"); // 그래프 데이터 var data = [ { label:"트와이스", value:96 } , { label:"레드벨벳", value:90 } , { label:"블랙핑크", value:74 } , { label:"여자친구", value:85 } , { label:"러블리즈", value:93 } , { label:"모모랜드", value:89 } , { label:"아이즈원", value:69 } , { label:"우주소녀", value:71 } ]; // 도큐먼트 var doc = new pdfDocument(); var page_w = doc.page.width; var page_h = doc.page.height; // 출력파일 설정 doc.pipe(fs.createWriteStream("output-graph.pdf")); // 폰트 설정 doc.font("NanumGothic.ttf"); // 타이틀 표시 doc.fontSize(30).text("걸그룹", 20, 20); // 그래프 그리기 var margin = 20; var g_w = page_w - margin * 2 -50; var g_x = margin + 50; var y = 80; var wpx = g_w / 100; for(var i = 0; i < data.length; i++) {
var value = data[i].value; var label = data[i].label;
doc.save() .rect(g_x, y, wpx * value, 20) .fill((i % 2) ? "blue" : "red");
doc.fontSize(10) .fillColor("black") .text(label, 30, y + 5) .text(value, g_x + 5, y + 5);
y += 20 + 5; } // 편집종료 doc.end(); |
# 출력결과
$ node pdfkit-graph.js |
여기서는 doc.rect( ) 메소드를 사용하여 각 값의 막대 그래프를 그리고 있다.
PDFKit이 외에도 여러가지 도형을 그릴 수 있는 메소드가 준비되어있다.
메소드 이름 |
설명 |
.rect(x, y, width, height) |
· 직사각형 그리기 |
.roundRect(x, , width, height, conerRadius) |
· 모퉁이가 둥근 사각형 그리기 |
.ellipse(cx, cy, radiusX, radiusY) |
· 타원 그리기 |
.circle(cx, cy, radius) |
· 원 그리기 |
.poygon(points...) |
· 다각형 그리기 |
.path(pathData) |
· SVG의 path 지정하여 그리기 |
'Node.js' 카테고리의 다른 글
[Node.js] Terminal 명령을 수행하는 node_cmd 모듈 (0) | 2019.05.10 |
---|---|
[Node.js] SCRAPING을 위한 cheerio 모듈과 cheerio-httpcli 모듈 (0) | 2019.05.08 |
[Node.js] package.json과 npm i 명령 (0) | 2019.04.02 |
[Node.js] Node.js 채팅방 제작 (0) | 2019.02.12 |
[Node.js] PM2 프로세스 관리 도구 (0) | 2019.01.22 |