Как показать все страницы PDF, а не только одну в pdf.js - PullRequest
0 голосов
/ 11 мая 2019

У меня проблемы с отображением всех страниц PDF вместо одной, использующей pdf.js

Это код, который отображает PDF-файл. Я скопировал этот код из учебника Traversy Media, но в настоящее время он только печатаетпервая страница и переходит на следующую страницу только при нажатии на кнопку следующей страницы.Но я хочу показать все страницы PDF без необходимости нажимать на следующую страницу user

 <div class="top-bar">
                                          <button class="btn" id="prev-page">
                                            <i class="fas fa-arrow-circle-left"></i> Prev Page
                                          </button>
                                          <button class="btn" id="next-page">
                                            Next Page <i class="fas fa-arrow-circle-right"></i>
                                          </button>
                                          <span class="page-info">
                                            Page <span id="page-num"></span> of <span id="page-count"></span>
                                          </span>
                                        </div>

                                        <canvas id="pdf-render"></canvas>

                                        <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>

                                        <script>
                                          const url = 'pdfname.pdf';

                                          let pdfDoc = null,
                                            pageNum = 1,
                                            pageIsRendering = false,
                                            pageNumIsPending = null;

                                          const scale = 1.5,
                                            canvas = document.querySelector('#pdf-render'),
                                            ctx = canvas.getContext('2d');

                                          // Render the page
                                          const renderPage = num => {
                                            pageIsRendering = true;

                                            // Get page
                                            pdfDoc.getPage(num).then(page => {
                                              // Set scale
                                              const viewport = page.getViewport({ scale });
                                              canvas.height = viewport.height;
                                              canvas.width = viewport.width;

                                              const renderCtx = {
                                                canvasContext: ctx,
                                                viewport
                                              };

                                              page.render(renderCtx).promise.then(() => {
                                                pageIsRendering = false;

                                                if (pageNumIsPending !== null) {
                                                  renderPage(pageNumIsPending);
                                                  pageNumIsPending = null;
                                                }
                                              });

                                              // Output current page
                                              document.querySelector('#page-num').textContent = num;
                                            });
                                          };

                                          // Check for pages rendering
                                          const queueRenderPage = num => {
                                            if (pageIsRendering) {
                                              pageNumIsPending = num;
                                            } else {
                                              renderPage(num);
                                            }
                                          };

                                          // Show Prev Page
                                          const showPrevPage = () => {
                                            if (pageNum <= 1) {
                                              return;
                                            }
                                            pageNum--;
                                            queueRenderPage(pageNum);
                                          };

                                          // Show Next Page
                                          const showNextPage = () => {
                                            if (pageNum >= pdfDoc.numPages) {
                                              return;
                                            }
                                            pageNum++;
                                            queueRenderPage(pageNum);
                                          };

                                          // Get Document
                                          pdfjsLib
                                            .getDocument(url)
                                            .promise.then(pdfDoc_ => {
                                              pdfDoc = pdfDoc_;

                                              document.querySelector('#page-count').textContent = pdfDoc.numPages;

                                              renderPage(pageNum);
                                            })
                                            .catch(err => {
                                              // Display error
                                              const div = document.createElement('div');
                                              div.className = 'error';
                                              div.appendChild(document.createTextNode(err.message));
                                              document.querySelector('body').insertBefore(div, canvas);
                                              // Remove top bar
                                              document.querySelector('.top-bar').style.display = 'none';
                                            });

                                          // Button Events
                                          document.querySelector('#prev-page').addEventListener('click', showPrevPage);
                                          document.querySelector('#next-page').addEventListener('click', showNextPage);
                                              </script> 
                                              <style>
                                                * {
                                            margin: 0;
                                            padding: 0;
                                          }

                                          .top-bar {
                                            background: #333;
                                            color: #fff;
                                            padding: 1rem;
                                          }

                                          .btn {
                                            background: coral;
                                            color: #fff;
                                            border: none;
                                            outline: none;
                                            cursor: pointer;
                                            padding: 0.7rem 2rem;
                                          }

                                          .btn:hover {
                                            opacity: 0.9;
                                          }

                                          .page-info {
                                            margin-left: 1rem;
                                          }

                                          .error {
                                            background: orangered;
                                            color: #fff;
                                            padding: 1rem;
                                          }
                                        </style>
                                           <link
                                              rel="stylesheet"
                                              href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"
                                              integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
                                              crossorigin="anonymous"
                                            />
                                            <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>

Любая помощь будет высоко ценится ?

спасибо,

Arnav

1 Ответ

0 голосов
/ 12 мая 2019

разобрался ? оказывается, это был очень простой ответ но вот код всей страницы

<!-- pdf viewer supportes on all browsers this script is mainly used to display all the page of pdf in scroll method . 
beacause norrmal click is already mentioned in pdf.js documentation -->

<div class="container">
  <div class="row">
   <div id="navbar" class="controls">
   <button type="button"  class="btn-zoom pls" onclick="zoomin()"><span>+</span> </button>
 <button type="button" class="btn-zoom min" onclick="zoomout()"><span>-</span> </button>
</div>
    <script src="//mozilla.github.io/pdf.js/build/pdf.js"></script>
    <div id="pdf-viewer" class="pdf-viewer"></div>
</div>
<style>
  .pdf
  {
    over-flow:scroll;
    width:540px;
  }
  .pdf-viewer
  {
    width:auto;
    display:block;
    margin:0 auto;
    border:1px solid red;
  }
  canvas
  {
    width:100%;
  }
</style>
<script>
     // If absolute URL from the remote server is provided, configure the CORS
    // header on that server.
    var url = 'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf';

    // Loaded via <script> tag, create shortcut to access PDF.js exports.
    var pdfjsLib = window['pdfjs-dist/build/pdf'];

    // The workerSrc property shall be specified.
    pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';

    var thePdf = null;
    var scale =2.3;

    pdfjsLib.getDocument(url).promise.then(function(pdf) {
      thePdf = pdf;
      viewer = document.getElementById('pdf-viewer');

      for(page = 1; page <= pdf.numPages; page++) {
        canvas = document.createElement("canvas");    
        canvas.className = 'pdf-page-canvas';    
        viewer.appendChild(canvas);            
        renderPage(page, canvas);
      }

    });
    function renderPage(pageNumber, canvas) {
      thePdf.getPage(pageNumber).then(function(page) {
        viewport = page.getViewport(scale);
        canvas.height = viewport.height;
        canvas.width = viewport.width;          
// page.render({canvasContext: canvas.getContext('2d'), viewport: viewport});
 page.render({canvasContext: canvas.getContext('2d'), viewport: viewport}).promise.then(function () {
 if (thePdf.numPages === pageNumber) 
// document.getElementById('loader').style.display=='none';
                    $('#loader').hide();
                    $('.pdf-viewer').show();
                });
      });
    }




           //zoom functionality
           function zoomin(){
        var myImg = document.getElementById("pdf-viewer");
        var currWidth = myImg.clientWidth;
        var currHeight = myImg.clientHeight;
        //if(currWidth == 2500) return false;
        // else{
        //    myImg.style.width = (currWidth + 100) + "px";
        //} 
        myImg.style.width = (currWidth + 50) + "px";
        myImg.style.height = (currHeight + 50) + "px";
    }
    function zoomout(){
        var myImg = document.getElementById("pdf-viewer");
        var currWidth = myImg.clientWidth;
        var currHeight = myImg.clientHeight;
        // if(currWidth == 100000) return false;
        //  else{
            myImg.style.width = (currWidth - 50) + "px";
            myImg.style.height= (currHeight- 50) + "px";
        // }
    }
</script>

Спасибо,

Арнав ?

...