PDF.js如何创建页面呈现事件

PDF.js how to create a page rendered event?

本文关键字:事件 创建 js 何创建 PDF      更新时间:2023-09-26

我正在使用带有默认查看器的PDF.js,并且需要检测每次呈现页面的时间。

当文档被反对、滚动或缩放时,应该会发生这种情况。

据我所知,我只能在自己显式呈现页面时使用 promise,但是每当呈现页面时是否有回调或要侦听的东西?实际上获取页面(因为int就足够了(也非常重要。

对于显式呈现:

好吧,我检查了源代码,似乎如果您显式呈现页面,您可以使用:

page.render(content).promise.then(function(){
  alert("done");
});

文档指出:

承诺渲染任务完成。

隐式呈现

好吧,您可以随时覆盖页面以自己提供事件,渲染不在任何原型上,因此这变得非常丑陋。 render调用返回一个RenderTask,该具有具有回调的InternalRenderTask。所以你可以通过这样做来欺骗它:

var renderTask = page.render(...); // make any page render anything anywhere
var internal = renderTask.__proto__;
var oldNext = internal._next;
internal._next = function(){
     if((this.operatorListIdx === this.operatorList.argsArray.length) &&
         this.operatorList.lastChunk){
         anyPageRendered(this.pageNumber);             
     }
     // decorate
     return oldNext.apply(this, arguments);
};
function anyPageRendered(pageNumber){
    // your code here
    alert("Rendered " + pageNumber); 
}

这是未记录的,可能会中断。没有记录的方法可以做到这一点。