我正在使用默认的PDF.js查看器,需要检测每次页面呈现的时间。
这应该在打开、滚动或缩放文档时发生。
据我所知,只有在自己显式地呈现页面时才能使用promise,但是否有回调或其他内容可以监听每当页面呈现时?实际上获取页面(作为int)也非常重要。
这应该在打开、滚动或缩放文档时发生。
据我所知,只有在自己显式地呈现页面时才能使用promise,但是否有回调或其他内容可以监听每当页面呈现时?实际上获取页面(作为int)也非常重要。
好的,我查看了源代码,如果你显式地渲染页面,那么可以使用以下方法:
page.render(content).promise.then(function(){
alert("done");
});
文档中写道:
用于渲染任务完成的 Promise。
好吧,你总是可以覆盖页面以提供自己的事件,但是渲染不在任何原型上,所以这变得非常丑陋。 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);
}
pagerendered
事件。 - Benjamin Gruenbaum