<p>pdf.js๋Š” requirejs์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค</p>

์— ๋งŒ๋“  2016๋…„ 05์›” 03์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mozilla/pdf.js

๋‹ค์Œ HTML์€ ๋ฌธ์ œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

<html> <head> <title>Flexpaper React/Require Sandbox</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.js"></script> <script> require(['pdf'], function(pdf) { console.log('PDFJS Module: ' + pdf); console.log('PDFJS Global: ' + window.PDFJS); }); </script> </head> </html>

pdf.js๋Š” "require" ๋ฐ "define" ๊ธฐ๋Šฅ์˜ ์กด์žฌ๋ฅผ ๊ฐ์ง€ํ•˜๋ฏ€๋กœ ๊ธ€๋กœ๋ฒŒ PDFJS ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“ˆ ๋กœ๋”๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์˜ˆ์—์„œ๋Š” "pdf"์™€ "window.PDFJS"๊ฐ€ ๋ชจ๋‘ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— require๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. pdf.js๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ require๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฒ„์ „ 1.0.1040์—์„œ๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ 1.4.20 ๋ฐ 1.5.188์—์„œ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ 3 ์ด์™ธ์˜ ๋ฒ„์ „์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋™์ž‘์€ Chrome๊ณผ Safari ์‚ฌ์ด์˜ ์„ธ ๊ฐ€์ง€ ๋ฒ„์ „ ๋ชจ๋‘์—์„œ ์ผ๊ด€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

RequireJS์—์„œ๋„ ์˜ฌ๋ฐ”๋ฅธ ์ฐธ์กฐ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— RequireJS ๊ตฌ์„ฑ์˜ ์ผ๋ถ€์ธ ์†”๋ฃจ์…˜์„ ๊ทธ๋Œ€๋กœ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

paths: {
    'pdfjs-dist/build/pdf': 'myfolder/pdf.min',
    'pdfjs-dist/build/pdf.worker': 'myfolder/pdf.worker.min'
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ˆ์ œ ์—์„œ ์ œ์•ˆํ•œ ๋Œ€๋กœ PDFJS.workerSrc ์ž‘์—…์ž์˜ ๊ฒฝ๋กœ๋ฅผ ํ• ๋‹นํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—…์ž๊ฐ€ ์ž๋™์œผ๋กœ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

'pdf'๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์™„์ „ํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌผ๋ก , ๋” ์™„๋ฒฝํ•˜๊ฒŒ ์‹œ์—ฐํ•˜๊ธฐ ์œ„ํ•ด Github ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/MartinSnyder/pdfjs-with-requirejs

'pdf'๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์œผ๋กœ ๋Œ์•„๊ฐ€๋ ค๊ณ  ํ•˜๋Š” ํ•„์ˆ˜ ๋ชจ๋“ˆ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ Requirejs๋Š” pdf.js๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๊ณ  ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ๋Œ€ํ•œ '๋ชจ๋“ˆ ์ฐธ์กฐ'๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ ๋ชจ๋“ˆ ์ฐธ์กฐ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์˜ ๋„คํŠธ์›Œํฌ ๋””๋ฒ„๊ฑฐ๋ฅผ ํ†ตํ•ด ๋™์  ๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ pdf.js ๋‚ด๋ถ€์˜ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ชจ๋“ˆ ๋กœ๋”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๊ณ  ์ „์—ญ PDFJS ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— requirejs๊ฐ€ ํŽ˜์ด์ง€์— ์žˆ์„ ๋•Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๊ฐ์ฒด๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ require๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์— pdf.js์— ๋Œ€ํ•œ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์Šคํฌ๋ฆฝํŠธ ์ฐธ์กฐ๋ฅผ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. require ์•ž์— ๋ฐฐ์น˜ํ•˜๋ฉด ์ „์—ญ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด require ๋‹ค์Œ์— ๋ฐฐ์น˜๋˜๋ฉด ์ „์—ญ์ด ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋“ˆ์ด ์ด๋ฆ„์œผ๋กœ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ 'pdfjs-dist/build/pdf'๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค(๊ทธ๋ฆฌ๊ณ  pdfjs-dist๋ฅผ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ require.config๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค).
  2. ๋ฌธ์„œ๋ฅผ ์ง€์šฐ๋Š” document.write๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ๋„ํ•ด ๋ณด์„ธ์š”.

        require.config({paths: {'pdfjs-dist': './node_modules/pdfjs-dist'}});
        require(['pdfjs-dist/build/pdf'], function(pdf) {
            console.log('PDFJS Module: ' + pdf + '<br>');
            console.log('PDFJS Global: ' + window.PDFJS);
        });

๋‹ต๋ณ€๋Œ€๋กœ ๋งˆ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฒ„์ „ 1.0.1040์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฒ„์ „์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ requirejs๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ผ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ถ€์ž‘์šฉ์ž…๋‹ˆ๋‹ค. -- ์ด๊ฒƒ์ด require.js์™€ ํ˜ธํ™˜๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ „์—ญ PDFJS ์ธ์Šคํ„ด์Šค ์„ค์ •

๊ธ€๋กœ๋ฒŒ PDFJS๋Š” ํ–ฅํ›„ ๋ฒ„์ „์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ด๋ฏ€๋กœ requirejs๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ pdf.PDFJS /๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ์ธํŠธ 1๊ณผ ๊ด€๋ จํ•˜์—ฌ:
์ด ์˜ˆ์ œ์—์„œ pdf.js๋ฅผ ํฌํ•จํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฐฐํฌํŒ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  pdf.js๋ฅผ ์ƒ˜ํ”Œ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— 'pdf'๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋””๋ฒ„๊ฑฐ์˜ ์˜ˆ์ œ๋ฅผ ๋ณด๊ณ  ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ require์— ์˜ํ•ด ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ์ธํŠธ 2์™€ ๊ด€๋ จํ•˜์—ฌ:
์ด๊ฒƒ์€ ์˜ˆ์ œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๊ด€๊ณ„์—†์ด ์ฐธ์กฐ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํŠนํžˆ console.log๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ฐธ์กฐ๋„ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ–ฅํ›„ ๋ฒ„์ „์—์„œ ์ œ๊ฑฐ๋˜๋Š” Global PDFJS์™€ ๊ด€๋ จํ•˜์—ฌ:
๋‚˜๋Š” ๊ดœ์ฐฎ์ง€๋งŒ pdf๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ pdf.PDFJS๋ฅผ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

ํ•ด๋‹น ์˜ˆ์ œ์— pdf.js๋ฅผ ํฌํ•จํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด node.js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฐฐํฌํŒ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  pdf.js๋ฅผ ์ƒ˜ํ”Œ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

PDF.js๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ ๋งŽ์€ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด pdfjs-dist/build/pdf ๋ชจ๋“ˆ์€ pdfjs-dist/build/pdf.worker ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— 'pdf'๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ •์˜์— ๋‚˜์—ด๋œ AMD ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค( https://github.com/MartinSnyder/pdfjs-with-requirejs/blob/master/pdf.js#L21 ์ฐธ์กฐ).

์ „์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” require.config๋กœ ์œ„์˜ ์˜ˆ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ?

์ „์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” require.config๋กœ ์œ„์˜ ์˜ˆ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง€๊ธˆ ๋ง‰ ์™„๋ฃŒํ–ˆ๊ณ  ๋‹น์‹ ์ด ๋งํ•œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ์šฉ๋„๋กœ ์—ฌ๊ธฐ์—์„œ ์ฐพ์€ "๋‹ค์šด๋กœ๋“œ๋œ" ๋ฐฐํฌํŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ?
https://mozilla.github.io/pdf.js/getting_started/#download

๋…ธ๋“œ 'pdfjs-dist' ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋‹ค์šด๋กœ๋“œํ•œ ๋ฒ„์ „์€ ์ด ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋…ธ๋“œ 'pdfjs-dist' ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋‹ค์šด๋กœ๋“œํ•œ ๋ฒ„์ „์€ ์ด ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ฃผ์ œ์™€ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด ํŒจํ‚ค์ง€์˜ pdf.js/pdf.worker.js ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. worker.js ํŒŒ์ผ์€ ๋นŒ๋“œ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค).

์—ฌ์ „ํžˆ ์ •์˜์— ๋‚˜์—ด๋œ AMD ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค( https://github.com/MartinSnyder/pdfjs-with-requirejs/blob/master/pdf.js#L21 ์ฐธ์กฐ).

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ดํ•ด์—์„œ ๋†“์นœ ํ•ต์‹ฌ ๋น„ํŠธ์˜€์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ๋‚ด์–ด ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ์ƒˆ ๊ณ„์ •์„ ์—ด์ง€ ์•Š๊ณ  ์—ฌ๊ธฐ์— ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ๊ดœ์ฐฎ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
require.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ https://github.com/mozilla/pdf.js/blob/master/examples/components/simpleviewer.js ๊ธฐ๋ฐ˜ ๋ทฐ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ pdf.js ๋ฐ pdf_viewer.js ํŒŒ์ผ์ด ๋ชจ๋‘ ํ•„์š”ํ•œ ๊ฒฝ์šฐ PDFJS.PDFViewer๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/Lazzi/pdfjs-bower-requirejs

@Lazzi ๊ท€ํ•˜์˜ main.js ๋ชจ๋“ˆ์€ AMD์—๊ฒŒ ์ •๋ง ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‹œ๋„ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

define('main', ['pdfjs-dist/build/pdf', 'pdfjs-dist/web/pdf_viewer'], function(pdfjsLib, viewer, require) {

ํ˜ธํ™˜์„ฑ์€ AMD๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ, AMD๋Š” ์•„๋‹ˆ์ง€๋งŒ require.js๋Š” http://requirejs.org/docs/api.html#cjsmodule ๊ณผ ๊ฐ™์€ ๋ชจ๋“ˆ ์ •์˜๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค

๊ทธ๋Ÿฌ๋‚˜ ์ œ์•ˆํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ๋‚ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@Lazzi ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. #7332๋ฅผ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(AFAIK AMD ์ด๋ฆ„์ด ์ค‘์š”ํ•จ)

@yurydelendik ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๋‹น์‹ ์€ ๋งค์šฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹น์‹ ์˜ require.config์— ๋ฐฐ์น˜๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹น์‹ ์„ ์œ„ํ•ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

    map: {
        '*': {
            'pdfjs-dist/build/pdf.worker' : 'path/to/your/install/pdf.worker'
        }
    },

map ํ•จ์ˆ˜๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์ „์—ญ ๋ฌธ์ž์—ด ๋ฐ”๊พธ๊ธฐ์ด๊ณ  '*'๋Š” ๋ฌธ์ž์—ด ๋ฐ”๊พธ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ข…์†์„ฑ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 2๊ฐ€์ง€ ๋ฒ„์ „์˜ JQuery๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์— ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค -- ๋ฌธ์ž์—ด ๊ต์ฒด๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ข…์†์„ฑ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ต์ฒดํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ '*'๋Š” ์ฃผ์š” pdf.js ์ข…์†์„ฑ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

RequireJS์—์„œ๋„ ์˜ฌ๋ฐ”๋ฅธ ์ฐธ์กฐ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— RequireJS ๊ตฌ์„ฑ์˜ ์ผ๋ถ€์ธ ์†”๋ฃจ์…˜์„ ๊ทธ๋Œ€๋กœ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

paths: {
    'pdfjs-dist/build/pdf': 'myfolder/pdf.min',
    'pdfjs-dist/build/pdf.worker': 'myfolder/pdf.worker.min'
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ˆ์ œ ์—์„œ ์ œ์•ˆํ•œ ๋Œ€๋กœ PDFJS.workerSrc ์ž‘์—…์ž์˜ ๊ฒฝ๋กœ๋ฅผ ํ• ๋‹นํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—…์ž๊ฐ€ ์ž๋™์œผ๋กœ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@dmaxweiler ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋™์ผํ•œ ๋ฌธ์ œ๋กœ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. RequireJS๋„ ์‚ฌ์šฉํ•  ๋•Œ pdf.js๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋กœ๋“œํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์†”๋ฃจ์…˜์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค! ์—„์ฒญ๋‚œ. ๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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