【发布时间】:2015-02-19 20:03:07
【问题描述】:
我正在使用带有默认查看器的 PDF.js,并且需要在每次呈现页面时进行检测。
这应该在文档打开、滚动或缩放时发生。
据我所知,我只能在我自己显式渲染页面时使用 Promise,但是在渲染页面时是否有回调或需要听的东西?实际上获取页面(因为 int 就足够了)也非常重要。
【问题讨论】:
标签: javascript jquery events promise pdf.js
我正在使用带有默认查看器的 PDF.js,并且需要在每次呈现页面时进行检测。
这应该在文档打开、滚动或缩放时发生。
据我所知,我只能在我自己显式渲染页面时使用 Promise,但是在渲染页面时是否有回调或需要听的东西?实际上获取页面(因为 int 就足够了)也非常重要。
【问题讨论】:
标签: javascript jquery events promise pdf.js
好吧,我检查了the source,看来如果您明确呈现页面,您可以使用:
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);
}
这是无证的,可能会破坏。没有记录的方法可以做到这一点。
【讨论】:
pagerendered 事件。