Generating thumbnail of a pdf using PDF.js

前端 未结 2 1203
情深已故
情深已故 2020-12-31 20:14

I would like to generate a thumbnail from a pdf file using PDF.js, but it isn\'t like anothers js that have just one file and all needed to include the js in your project is

相关标签:
2条回答
  • 2020-12-31 20:26

    I figured it out, the scale is not a parameter. The parameters are an object with field of scale that needed to be set.

    function makeThumb(page) {
        // draw page to fit into 96x96 canvas
        var vp = page.getViewport({ scale: 1, });
        var canvas = document.createElement("canvas");
        var scalesize = 1;
        canvas.width = vp.width * scalesize;
        canvas.height = vp.height * scalesize;
        var scale = Math.min(canvas.width / vp.width, canvas.height / vp.height);
        console.log(vp.width, vp.height, scale);
        return page.render({ canvasContext: canvas.getContext("2d"), viewport: page.getViewport({ scale: scale }) }).promise.then(function () {
            return canvas; 
        });
    }
    
    0 讨论(0)
  • 2020-12-31 20:46

    Based on helloworld example:

    function makeThumb(page) {
      // draw page to fit into 96x96 canvas
      var vp = page.getViewport(1);
      var canvas = document.createElement("canvas");
      canvas.width = canvas.height = 96;
      var scale = Math.min(canvas.width / vp.width, canvas.height / vp.height);
      return page.render({canvasContext: canvas.getContext("2d"), viewport: page.getViewport(scale)}).promise.then(function () {
        return canvas;
      });
    }
    
    pdfjsLib.getDocument("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf").promise.then(function (doc) {
      var pages = []; while (pages.length < doc.numPages) pages.push(pages.length + 1);
      return Promise.all(pages.map(function (num) {
        // create a div for each page and build a small canvas for it
        var div = document.createElement("div");
        document.body.appendChild(div);
        return doc.getPage(num).then(makeThumb)
          .then(function (canvas) {
            div.appendChild(canvas);
        });
      }));
    }).catch(console.error);
    <script src="//npmcdn.com/pdfjs-dist/build/pdf.js"></script>

    0 讨论(0)
提交回复
热议问题