PDF.JS mozilla项目 - 预加载所有页面?

时间:2014-02-27 13:42:57

标签: javascript html pdf pdf.js

我已经从mozilla PDF.JS项目修改了web / viewer,这样我就可以将页面导出到单独的HTML页面。但是当我尝试导出所有页面时,我注意到渲染还没有完成。

我在viewer.js中创建了自己的函数:

renderAll: function pdfViewAll() {
  if (PDFView.idleTimeout) {
    clearTimeout(PDFView.idleTimeout);
    PDFView.idleTimeout = null;
  }

  // Pages have a higher priority than thumbnails, so check them first.
  var allPages = this.getAllPages();
  for (var count = 0; count < this.pages.length; count++) {
      this.renderView(this.pages[count], 'page');
      this.pages[count].scrollIntoView();
  }
},

我正在侦听两个位置以查明是否有任何页面已完成渲染。 第一个位置是调用renderView时:

renderView: function pdfViewRender(view, type) {
  var state = view.renderingState;
  switch (state) {
    case RenderingStates.FINISHED:
      if (EXPORTING) {
        view.scrollIntoView();
        preparePageExport(view.id);
      }
      return false;
    case RenderingStates.PAUSED:
      PDFView.highestPriorityPage = type + view.id;
      view.resume();
      break;
    case RenderingStates.RUNNING:
      PDFView.highestPriorityPage = type + view.id;
      break;
    case RenderingStates.INITIAL:
      PDFView.highestPriorityPage = type + view.id;
      if (EXPORTING)
          view.scrollIntoView();
      view.draw(this.renderHighestPriority.bind(this));
      break;
  }
  return true;
},

第二个位置是调用renderTask的回调时: var renderTask = this.renderTask = this.pdfPage.render(renderContext);

this.renderTask.promise.then(
  function pdfPageRenderCallback() {
    pageViewDrawCallback(null);
    if (EXPORTING) {
      preparePageExport(self.id);
    }
  },
  function pdfPageRenderError(error) {
    pageViewDrawCallback(error);
  }
);

preparePageExport(self.id)函数只是一个从画布页面获取图像的函数。 并非所有页面都在准备中。我还是比较新的PDF.JS所以你能看到我在这里缺少的东西吗?

0 个答案:

没有答案