首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PDF.js生成pdf的缩略图

使用PDF.js生成pdf的缩略图
EN

Stack Overflow用户
提问于 2017-06-14 22:27:10
回答 2查看 22.8K关注 0票数 9

我想使用PDF.js从pdf文件中生成一个缩略图,但它不像其他只有一个文件的js,所有在你的项目中包含js所需要的就是写:

代码语言:javascript
复制
<script src="any.js"></script>

如何在我的项目中使用PDF.js?我在后端使用PHP。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-14 23:12:18

基于helloworld example

代码语言:javascript
复制
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);
代码语言:javascript
复制
<script src="//npmcdn.com/pdfjs-dist/build/pdf.js"></script>

票数 20
EN

Stack Overflow用户

发布于 2020-12-08 10:07:19

我想通了,规模不是一个参数。参数是需要设置的具有比例尺范围的对象。

代码语言:javascript
复制
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; 
    });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44547585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档