简体   繁体   中英

Generating thumbnail of a pdf using PDF.js

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 to write:

<script src="any.js"></script>

How can I use PDF.js in my project? I'm using PHP in backend.

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>

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; 
    });
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM