๋ค์ 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 ์ฌ์ด์ ์ธ ๊ฐ์ง ๋ฒ์ ๋ชจ๋์์ ์ผ๊ด๋์์ต๋๋ค.
'pdf'๊ฐ ๋ฌด์์ ๋๊น? ์์ ํ ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
๋ฌผ๋ก , ๋ ์๋ฒฝํ๊ฒ ์์ฐํ๊ธฐ ์ํด Github ์ ์ฅ์๋ฅผ ์ค์ ํ๊ฒ ์ต๋๋ค.
์ ์ฅ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/MartinSnyder/pdfjs-with-requirejs
'pdf'๋ ํด๋น ๊ธฐ๋ฅ์ผ๋ก ๋์๊ฐ๋ ค๊ณ ํ๋ ํ์ ๋ชจ๋ ์ฐธ์กฐ์ ๋๋ค. ์ด ์๋๋ฆฌ์ค์์ Requirejs๋ pdf.js๋ฅผ ๋์ ์ผ๋ก ๋ก๋ํ๊ณ ์ฝ๋ฐฑ ํจ์์ ๋ํ '๋ชจ๋ ์ฐธ์กฐ'๋ฅผ ๋ฐํํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ชจ๋ ์ฐธ์กฐ๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ ๋คํธ์ํฌ ๋๋ฒ๊ฑฐ๋ฅผ ํตํด ๋์ ๋ก๋๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ด๊ฒ์ pdf.js ๋ด๋ถ์ ๋ฌด์ธ๊ฐ๊ฐ ๋ชจ๋ ๋ก๋๊ฐ ์๋ ๊ฒ์ ๊ฐ์งํ๊ณ ์ ์ญ PDFJS ๊ฐ์ฒด๋ฅผ ์ค์ ํ์ง ์๋๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ํฐ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๋ ๋ค ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ requirejs๊ฐ ํ์ด์ง์ ์์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๊ฐ์ฒด๋ฅผ ๋ก๋ํ๋ ๋ฐ require๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ํฉ๋๋ค. ํ์ด์ง์ pdf.js์ ๋ํ ์ฃผ์ ์ฒ๋ฆฌ๋ ์คํฌ๋ฆฝํธ ์ฐธ์กฐ๋ฅผ ๋ฃ์์ต๋๋ค. require ์์ ๋ฐฐ์นํ๋ฉด ์ ์ญ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋ฉ๋๋ค. ์ด๊ฒ์ด require ๋ค์์ ๋ฐฐ์น๋๋ฉด ์ ์ญ์ด ์ค์ ๋์ง ์์ต๋๋ค.
์ฝ๋์๋ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์๋ํด ๋ณด์ธ์.
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๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทํ์ ์๋ฃจ์ ์ด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค! ์์ฒญ๋. ๋น์ ์ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
RequireJS์์๋ ์ฌ๋ฐ๋ฅธ ์ฐธ์กฐ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์์๊ธฐ ๋๋ฌธ์ RequireJS ๊ตฌ์ฑ์ ์ผ๋ถ์ธ ์๋ฃจ์ ์ ๊ทธ๋๋ก ๋๊ฒ ์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์์ ์์ ์ ์ํ ๋๋ก
PDFJS.workerSrc
์์ ์์ ๊ฒฝ๋ก๋ฅผ ํ ๋นํ ํ์๋ ์์ต๋๋ค. ์์ ์๊ฐ ์๋์ผ๋ก ์ฐพ๊ธฐ ๋๋ฌธ์ ๋๋ค.