Pdf.js: typescript๋กœ pdf.js ๊ฐ€์ ธ์˜ค๊ธฐ

์— ๋งŒ๋“  2019๋…„ 02์›” 12์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mozilla/pdf.js

์—ฌ๊ธฐ์— PDF ํŒŒ์ผ์„ ์ฒจ๋ถ€(๊ถŒ์žฅ)ํ•˜๊ฑฐ๋‚˜ ๋งํฌ:

๊ตฌ์„ฑ:

  • ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ํ•ด๋‹น ๋ฒ„์ „: NODE 10
  • ์šด์˜ ์ฒด์ œ ๋ฐ ํ•ด๋‹น ๋ฒ„์ „: LINUX/DOCKER
  • PDF.js ๋ฒ„์ „: pdfjs-dist 2.2.2
  • ๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ์ž: ์•„๋‹ˆ์š”

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

  1. npm install pdfjs-dist --save ๋กœ pdfjs-dist ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
  2. npm install @types/pdfjs-dist --save-dev ๋กœ @types/pdfjs-dist ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
  3. *.ts ํŒŒ์ผ์—์„œ pdfjs-dist ๊ฐ€์ ธ์˜ค๊ธฐ: import { PDFJS } from 'pdfjs-dist';
  4. getDocument ์—์„œ PDFJS ์‚ฌ์šฉ: PDFJS.getDocument('my.pdf')
  5. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค: _PDFJS๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค_

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
PDFJS๋Š” typescript์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋‚˜์š”?
PDFJS๋Š” typescript์—์„œ lib๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ทฐ์–ด ๋งํฌ:
๋ฌด์ฑ…์ž„ํ•˜์ง€ ์•Š๋‹ค

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
์ด ๋ฐฉ๋ฒ•์œผ๋กœ PDFJS ๊ฐ€์ ธ์˜ค๊ธฐ

import { PDFJSStatic } from 'pdfjs-dist'; 
const PDFJS: PDFJSStatic = require('pdfjs-dist');

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

pdfjs๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž์ฒด Typescript ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

๋ชจ๋“  8 ๋Œ“๊ธ€

2\. Install **@types/pdfjs-dist** with: `npm install @types/pdfjs-dist --save-dev`

2.0 ์ด์ƒ์˜ PDF.js ๋ฒ„์ „์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ด๋Ÿฌํ•œ ์œ ํ˜•์ด ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์—์„œ ์œ ์ง€ ๊ด€๋ฆฌ ๋˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋Š” ๋ถˆํ–‰ํžˆ๋„ ์—ฌ๊ธฐ์—์„œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@Snuffleupagus @timvandermeij ๋‹ค์‹œ ์—ด์–ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? @types/pdfjs-dist ๋Š” ๋ฒ„์ „ >= 2์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๊บผ์ ธ ์žˆ๊ณ  Github ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์—๋Š” ๋ฌธ์ œ ์ถ”์ ๊ธฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

npm install @types/pdfjs-dist --save-dev ๋กœ @types/pdfjs-dist ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

https://github.com/mozilla/pdf.js/issues/10547#issuecomment -462675381์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ์ด๋“ค์€ Mozilla ๋˜๋Š” PDF.js ํ”„๋กœ์ ํŠธ์™€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค .

@types/pdfjs-dist

๋‹ค์‹œ ์ด๊ฒƒ์€ https://github.com/mozilla/pdfjs-dist ์™€ ๊ด€๋ จ์ด ์—†์ง€๋งŒ ์‹ค์ œ๋กœ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ pdfjs-dist

@types/pdfjs-dist ๋Š” mozilla/pdfjs-dist ๋ฐ/๋˜๋Š” mozilla/pdf.js ๊ธฐ์—ฌ์ž๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์—ฌ์ž๋งŒ์ด ์ฝ”๋“œ์™€ ๊ธฐ๋Šฅ์„ ์•Œ๊ณ  ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ๊ณต๊ฐœ๋œ ๋ฌธ์ œ์™€ ์ด์— ๋Œ€ํ•œ PR์ด ์žˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ์ด์— ๋Œ€ํ•œ ์‹ค์ œ ์ˆ˜์š”๋Š” ๋‚ฎ๊ณ  PR์€ ์‹ค์ œ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๊ธฐ์กด PR(์˜ˆ: ์ฝ”๋“œ ์ž์ฒด์—์„œ ์ƒ์„ฑ์„ ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ฒ˜๋Ÿผ ๋ณด์ด๋Š” #10575)์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋ณ‘ํ•ฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

pdfjs๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž์ฒด Typescript ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

์ด๊ฒŒ ์™œ ๊ฐ€๊น์ง€? ์œ ํ˜•์€ ์–ด๋””์— ์ œ๊ณต๋˜๋ฉฐ ์–ด๋–ป๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ typescript ํ”„๋กœ์ ํŠธ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

#7909์˜ ์ค‘๋ณต์ด๋ฉฐ ์–ด์ œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰