์๋
ํ์ญ๋๊น,
pdf.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ์ฑ๊ณผ ํตํฉํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ ์ฃผ๋ ์ด์ ๋ ์ฑ์ pdf ๋ทฐ์ด๊ฐ ์๊ณ ๋ฌธ์๋ฅผ ์ธ์ํ๊ธฐ ์ํด์์
๋๋ค.
์ฐ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํฉํ๋ ค๊ณ ํ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ด ์์ต๋๋ค.
</div>
<canvas id="theCanvas"></canvas>
<div>
PDFJS.getDocument(pdfPath).then(function getPdfHelloWorld(pdf) {
pdf.getPage(1).then(function getPageHelloWorld(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('theCanvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ด๊ฐ ์ํ๋ ๊ฒ์ ์ผ๋ถ์ผ ๋ฟ์ ๋๋ค. ๋๋ viewer.html๊ณผ ๊ฐ์ ๋ทฐ์ด ์ปจํธ๋กค์ ์ํฉ๋๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ง์ viewer.html๋ก ์ ์ฐฝ์ ์ด๋ ค๊ณ ํ์ต๋๋ค.
var pdfPath = __dirname + '/pdfs/trial.pdf';
mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);
๋ทฐ์ด๋ฅผ ๋ณผ ์ ์์์ง๋ง pdf ํ์ผ์ ๋ก๋ํ๋ ๋์ ์ฝ์์์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์กํ์ง ์์(์ฝ์ ์ค) TypeError: PDFJS.getDocument๋ ํจ์๊ฐ ์๋๋๋ค.
Object.pdfView ์์ ์ด๋ฆฐ ์ํ๋ก ์ด๊ธฐ
webViewerInitialized์์ (file:///.../src/generic/web/viewer.js:7686:26)
๋๋ ๋ด๊ฐ ์ฌ๊ธฐ์ ๋ฌด์์ ์๋ชปํ๊ณ ์๋์ง ์ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋๊น? ๋ํ ์ ์ฒด ๋ทฐ์ด๋ฅผ ์ผ๋ถ ์บ๋ฒ์ค ๋๋ ์ผ๋ถ iframe์ ํฌํจํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๋ด๊ฐ ์๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ ํน์ ์ผ๋ฐ์ ์ธ ์์ ์ ์ํํ๊ธฐ ์ํด ํ๋ก์ ํธ์ API ๋ชฉ๋ก์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ฃ์กํฉ๋๋ค. ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ์ฐพ์ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ์ฌ๊ธฐ์์ ๋๋ฅผ ๋์ธ ์ ์๋ค๋ฉด ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค...
๊ตฌ์ฑ:
PDF.js ๋ฒ์ : 0.8.0
์ ๋ง ์ค๋๋ ๋ฒ์ ์
๋๋ค. ์ฐ๋ฆฌ ๋ฆด๋ฆฌ์ค(๋๋ gulp generic
one)์์ ์ด๋ฏธ ์ฌ์ ๋น๋๋ ๋ฒ์ ์ ์ ์๋ํฉ๋๋ค. ๋จ, pdf๋ฅผ Uint8Array์ ์ง์ ๋ก๋ํ ์ ์๋ค๋ ์ ์ ์์ธ์
๋๋ค.
PDFJS.getDocument๋ ํจ์๊ฐ ์๋๋๋ค.
์ด๋ ํต์ฌ PDF.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ('./build/pdf.js' ํ์ผ)๊ฐ ๋ก๋๋์ง ์์์์ ๋ํ๋ ๋๋ค.
์ ์ํ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ ๋ง ์ค๋๋ ๋ฒ์ ์ ๋๋ค.
์ด๋ป๊ฒ ๊ทธ ์ด์ ๋ฒ์ ์ ์ป์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ํ๋ก์ ํธ๋ฅผ ์ป๊ธฐ ์ํด git clone git://github.com/mozilla/pdf.js.git
์ธ์๋ ์๋ฌด ๊ฒ๋ ํ์ง ์์๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์์ ๋ณด๋ฉด package.json์ ์ฌ์ ํ โโ0.8.0์ ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ ๋ฆด๋ฆฌ์ค(๋๋ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๊ฟ๊บฝ ๋๋ฆฌ ๊ฒฝ์ฐ)์์ ์ด๋ฏธ ๋ฏธ๋ฆฌ ๋น๋๋ ๋ฒ์ ์ ์ ์๋ํฉ๋๋ค. ๋จ, pdf๋ฅผ Uint8Array์ ์ง์ ๋ก๋ํ ์ ์๋ค๋ ์ ์ ์์ธ์ ๋๋ค.
์ด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์งํผ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๊น? .
์ด๋ ํต์ฌ PDF.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ('./build/pdf.js' ํ์ผ)๊ฐ ๋ก๋๋์ง ์์์์ ๋ํ๋ ๋๋ค.
gulp generic์ ํ ํ ๋ ๊ณณ์์ pdf.js์ pdf.worker.js๋ฅผ ์ป์์ต๋๋ค. ํ๋๋ ์ผ๋ฐ ๋๋ ํ ๋ฆฌ ์ธ๋ถ์ ํ๋๋ generic/build/ ๋๋ ํ ๋ฆฌ ๋ด๋ถ์ ์์ต๋๋ค. ๋๋ ํ์ฌ ๋ฐ๊นฅ์ชฝ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค. ๋ด๊ฐ ์๋ชป๋ ๊ฒ์ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
๋ค์ ํ ๋ฒ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
package.json์ ์ฌ์ ํ โโ0.8.0์ ํ์ํฉ๋๋ค.
package.json์๋ ๋น๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฒ์ ๋ฒํธ๋ pdf.js ํ์ผ ๋๋ PDFJS.version ์์ฑ์ ์ฐธ์กฐํ์ญ์์ค.
๋ด๊ฐ ์๋ชป๋ ๊ฒ์ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
๋ ๋ค ๋์ผํด์ผ ํฉ๋๋ค. ์ ์ฒด "generic/" ํด๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก pdf.js๊ฐ ์ฌ๋ฐ๋ฅธ ์์น์ ์์ ๊ฒ์ ๋๋ค.
pdf.js ํ์ผ ๋๋ PDFJS.version ์์ฑ ์ฐธ์กฐ
๋ํ, ๋๋ ๋ฌธ์ ๋ฅผ ์์ ๋์ต๋๋ค. ์ผ๋ฐ ๋๋ ํ ๋ฆฌ์์ ์ฌ๋ฐ๋ฅธ ๋ด์ฉ์ ๋ณต์ฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ viewer.html URL์ด ์๋ ์ฐฝ์ ์ด ๋; window ์์ฑ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
webPreferences: {
nodeIntegration: false
}
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ง๊ธ ์๋ก๋ ํ ์ ์์ต๋๋ค.
๋์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฒ์ :1.4.174
๋ํ, ๋๋ ๋ฌธ์ ๋ฅผ ์์ ๋์ต๋๋ค. ์ผ๋ฐ ๋๋ ํ ๋ฆฌ์์ ์ฌ๋ฐ๋ฅธ ๋ด์ฉ์ ๋ณต์ฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ viewer.html URL์ด ์๋ ์ฐฝ์ ์ด ๋; window ์์ฑ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
webPreferences: { nodeIntegration: false }
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ง๊ธ ์๋ก๋ ํ ์ ์์ต๋๋ค.
๋์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!