javascript - PDF.js 使用滚动条渲染 pdf

标签 javascript jsp spring-mvc pdf

我使用 mozilla pdf.js。我有一个代码:

<canvas id="the-canvas"/>
function displayDocument(){
        PDFJS.getDocument(numberOdDocument[attachment]).then(function (pdfDoc_) {
            pdfDoc = pdfDoc_;
            renderPage(pageNum);
          });
    }
function renderPage(num) {
        pdfDoc.getPage(num).then(function(page) {
          var viewport = page.getViewport(scale, rotate);
          canvas.height = '900';
          canvas.width = '500';

          var renderContext = {
            canvasContext: ctx,
            viewport: viewport
          };
          var renderTask = page.render(renderContext);

          renderTask.promise.then(function () {
            pageRendering = false;
            if (pageNumPending !== null) {
              renderPage(pageNumPending);
              pageNumPending = null;
            }
          });
        });
    }

现在我在 canvas 标签中只看到一页,但我想在我的 canvvas 中添加滚动条,并且我想使用滚动条更改页面。我该怎么做?

最佳答案

允许滚动

首先,创建一个父div来封装canvas元素:

<div>
 <canvas id="the-canvas"/>
</div>

然后,通过垂直滚动设置固定大小

<div style="width:650px;height:600px;overflow-y:scroll;">...</div>

最后,您可以使用变量“scale”设置您想要的比例,但保留这些原始行:

function renderPage(num) {
 pdfDoc.getPage(num).then(function(page) {
  var viewport = page.getViewport(scale);
  canvas.height = viewport.height;
  canvas.width = viewport.width;
  ...

呈现所有页面

请记住,呈现大量页面会花费一些时间,但这里是如何做到这一点。

想法:您需要在单独的 Canvas 元素中呈现每个页面。

首先,在渲染期间动态创建具有特定 id 的 canvas 元素:

<div id="pdf-viewer"></div>
...
function renderPage(num) {
 pdfDoc.getPage(num).then(function(page) {
  var canvasId = 'pdf-viewer-' + num;
  $('#pdf-viewer').append($('<canvas/>', {'id': canvasId}));
  var canvas = document.getElementById(canvasId);
  ...

最后,为每个页面调用 renderPage()

function renderAllPages() {
 for (var i = 1; i <= pdfDoc.numPages; i++) {
  renderPage(i);
 }
}

关于javascript - PDF.js 使用滚动条渲染 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185785/

相关文章:

javascript - 在 keypressup 事件中按下单个键时,textarea 打印两个字符

java - 无法为所有 url 设置 Spring 安全性

java - Spring security 阻止 css、js 文件加载到 jsp 页面上

javascript - 如何用JavaScript统计页面上的所有图像(包括CSS和img)

javascript - 我需要将图像从一个元素移动到另一个元素

java - 错误 : According to TLD, 标记形式 :input must be empty, 但不是

hibernate - 冲洗模式只能使用一次吗?

javascript - 在使用 jQuery 扩展 DIV 时将高度设置为自动

javascript - 天空盒未出现,但立方体出现

javascript - 在下拉列表中加载国家/地区