Pdf.js: 단일 νŽ˜μ΄μ§€ 뷰어에 λŒ€ν•œ 예제 μž‘μ„±

에 λ§Œλ“  2017λ…„ 09μ›” 24일  Β·  8μ½”λ©˜νŠΈ  Β·  좜처: mozilla/pdf.js

pull request # 8724μ—μ„œ 단일 νŽ˜μ΄μ§€ λ·°μ–΄κ°€ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 λ·°μ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 λ³΄μ—¬μ£ΌλŠ” examples 폴더에 ꡬ성 μš”μ†Œ μ˜ˆμ œκ°€ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

1-other 5-good-beginner-bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ꡬ성 μš”μ†Œ ν΄λ”μ—μ„œ pageviewer.jsλŠ” pdf_page_view.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ pdf νŒŒμΌμ„ μ •μƒμ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€. pdf_single_page_viewer.jsλ₯Ό μ‚¬μš©ν•˜λŠ” singlepageviewer.js와 같은 예제λ₯Ό λ§Œλ“€μ–΄μ•Όν•©λ‹ˆλ‹€.

PDFSinglePageViewer λŠ” https://github.com/mozilla/pdf.js/blob/master/examples/components/simpleviewer.js 의 μƒˆ 예제λ₯Ό 기반으둜 PDFViewer κ³Ό λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€λŠ” 점을 κ³ λ € ν•˜μ‹­μ‹œμ˜€. 훨씬 더 μ μ ˆν•œ 좜발점이 될 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  8 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”! 이 문제λ₯Ό ν•΄κ²°ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. Githubμ—μ„œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것은 이번이 μ²˜μŒμ΄λ―€λ‘œ μ‹œμž‘ν•˜λŠ” 방법을 μ•Œμ•„λ‚Ό 수 μžˆλ„λ‘ 도와 μ£Όμ‹œλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€.
이미 gulp μ„œλ²„λ‘œ μ‹€ν–‰λ˜λŠ” 둜컬 볡사본이 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/mozilla/pdf.js/tree/master/examples/components 폴더에 ꡬ성 μš”μ†Œ μ˜ˆμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 패치의 λͺ©μ μ€ PDFSinglePageViewer λ₯Ό μ‚¬μš©ν•˜λŠ” 예제λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‹€λ₯Έ μ˜ˆμ œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ κΈ°λ³Έ Tracemonkey PDF 파일 λ§Œλ‘œλ“œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

감사! λ‚˜λŠ” 이것에 λŒ€ν•΄ λ…Έλ ₯ν•  것이닀.

κ·Έλž˜μ„œ λ‚˜λŠ” μ—¬κΈ°μ„œ μ•½κ°„ ν˜Όλž€μŠ€λŸ¬μ›Œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이것이 λ‚΄κ°€ 이해 ν•œ κ²ƒμž…λ‹ˆλ‹€.
ꡬ성 μš”μ†Œ ν΄λ”μ—μ„œ pageviewer.jsλŠ” pdf_page_view.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ pdf νŒŒμΌμ„ μ •μƒμ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€. pdf_single_page_viewer.jsλ₯Ό μ‚¬μš©ν•˜λŠ” singlepageviewer.js와 같은 예제λ₯Ό λ§Œλ“€μ–΄μ•Όν•©λ‹ˆλ‹€.

λ‚˜λŠ” μ§€κΈˆκΉŒμ§€ μ˜¬λ°”λ₯Έ 길을 κ°€κ³  μžˆλŠ”κ°€?

기본적으둜 이것이 단일 νŽ˜μ΄μ§€ λ·°μ–΄λ₯Ό μ‚¬μš©ν•˜λ„λ‘ pageviewer.js νŒŒμΌμ—μ„œ νŽΈμ§‘ν•΄μ•Όν•˜λŠ” κ²ƒμž…λ‹ˆκΉŒ?

return pdfDocument.getPage(PAGE_TO_VIEW).then(function (pdfPage) {
    // Creating the page view with default parameters.
    var pdfPageView = new PDFJS.PDFPageView({
      container: container,
      id: PAGE_TO_VIEW,
      scale: SCALE,
      defaultViewport: pdfPage.getViewport(SCALE),
      // We can enable text/annotations layers, if needed
      textLayerFactory: new PDFJS.DefaultTextLayerFactory(),
      annotationLayerFactory: new PDFJS.DefaultAnnotationLayerFactory()
    });
    // Associates the actual page with the view, and drawing it
    pdfPageView.setPdfPage(pdfPage);
    return pdfPageView.draw();
  });

λ‹€μŒμ€ singlepageviewer.jsκ°€ νŽΈμ§‘ 된 λΆ€λΆ„μœΌλ‘œ ν¬ν•¨ν•˜λŠ” λ‚΄μš©μž…λ‹ˆλ‹€.

return pdfDocument.getPage(PAGE_TO_VIEW).then(function (pdfPage) {
    // Creating the page view with default parameters.
    var pdfSinglePageView = new PDFJS.PDFSinglePageViewer({
      container: container,
      id: PAGE_TO_VIEW,
      scale: SCALE,
      defaultViewport: pdfPage.getViewport(SCALE),
      // We can enable text/annotations layers, if needed
      textLayerFactory: new PDFJS.DefaultTextLayerFactory(),
      annotationLayerFactory: new PDFJS.DefaultAnnotationLayerFactory()
    });
    // Associates the actual page with the view, and drawing it
    pdfSinglePageView.setPdfPage(pdfPage);
    return pdfSinglePageView.draw();
  });

μ§€κΈˆκΉŒμ§€μ˜ μ ‘κ·Ό 방식이 μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

μ‹œκ°„ λ‚΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

μ μ ˆν•œ ν˜•μ‹μœΌλ‘œ λŒ“κΈ€μ„ λ‹€μ‹œ κ²Œμ‹œν•©λ‹ˆλ‹€.

ꡬ성 μš”μ†Œ ν΄λ”μ—μ„œ pageviewer.jsλŠ” pdf_page_view.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ pdf νŒŒμΌμ„ μ •μƒμ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€. pdf_single_page_viewer.jsλ₯Ό μ‚¬μš©ν•˜λŠ” singlepageviewer.js와 같은 예제λ₯Ό λ§Œλ“€μ–΄μ•Όν•©λ‹ˆλ‹€.

PDFSinglePageViewer λŠ” https://github.com/mozilla/pdf.js/blob/master/examples/components/simpleviewer.js 의 μƒˆ 예제λ₯Ό 기반으둜 PDFViewer κ³Ό λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€λŠ” 점을 κ³ λ € ν•˜μ‹­μ‹œμ˜€. 훨씬 더 μ μ ˆν•œ 좜발점이 될 κ²ƒμž…λ‹ˆλ‹€.

κ·Έ 쑰언에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!
https://github.com/mozilla/pdf.js/pull/8989 ν’€ μš”μ²­μ„ μ œμΆœν–ˆμŠ΅λ‹ˆλ‹€

νŽΈμ§‘ν•˜λ‹€:
여기에 λ­”κ°€ λΉ μ‘ŒλŠ”μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ ꡬ성 μš”μ†Œ 예제 쀑 http://localhost:8888/examples/components/{anyfile}.html 의 λΈŒλΌμš°μ €μ— 아무것도 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ½˜μ†”μ— λ‹€μŒ 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

singlepageviewer.html:38 GET http://localhost:8888/node_modules/pdfjs-dist/web/pdf_viewer.css net::ERR_ABORTED
singlepageviewer.html:40 GET http://localhost:8888/node_modules/pdfjs-dist/build/pdf.js net::ERR_ABORTED
singlepageviewer.html:41 GET http://localhost:8888/node_modules/pdfjs-dist/web/pdf_single_page_viewer.js net::ERR_ABORTED
singlepageviewer.js:18 Uncaught ReferenceError: PDFJS is not defined
    at singlepageviewer.js:18

여기에 λ­”κ°€ λΉ μ‘ŒλŠ”μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ http : // localhost : 8888 / examples / components / {anyfile} .html의 λΈŒλΌμš°μ €μ— 아무것도 ν‘œμ‹œλ˜μ§€ μ•ŠλŠ” ꡬ성 μš”μ†Œ μ˜ˆμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€. μ½˜μ†”μ— λ‹€μŒ 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

예제의 *.js νŒŒμΌμ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄, 예λ₯Ό λ“€μ–΄ μ—¬κΈ°λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€. gulp dist-install ν–ˆμŠ΅λ‹ˆκΉŒ?

κ°μ‚¬ν•©λ‹ˆλ‹€!
λ‹€μŒμ€ κ²€ν†  ν•œ λͺ¨λ“  λ³€κ²½ 사항을 ν¬ν•¨ν•˜κ³  Contributing and Squashing Commits wiki에 λ”°λ₯Έ pull μš”μ²­μž…λ‹ˆλ‹€ : https://github.com/mozilla/pdf.js/pull/8990
μ‹œκ°„ λ‚΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰