mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Adding new errorback and code to display error messages.
This commit is contained in:
parent
59d9dfc014
commit
d6925b13ba
6 changed files with 119 additions and 15 deletions
21
src/core.js
21
src/core.js
|
@ -63,6 +63,10 @@ var Page = (function pagePage() {
|
|||
};
|
||||
this.xref = xref;
|
||||
this.ref = ref;
|
||||
|
||||
this.ctx = null;
|
||||
this.callback = null;
|
||||
this.errorback = null;
|
||||
}
|
||||
|
||||
constructor.prototype = {
|
||||
|
@ -165,8 +169,10 @@ var Page = (function pagePage() {
|
|||
try {
|
||||
self.display(gfx, self.callback);
|
||||
} catch (e) {
|
||||
if (self.callback) self.callback(e.toString());
|
||||
throw e;
|
||||
if (self.errorback)
|
||||
self.errorback(e);
|
||||
else
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -303,9 +309,10 @@ var Page = (function pagePage() {
|
|||
}
|
||||
return links;
|
||||
},
|
||||
startRendering: function pageStartRendering(ctx, callback) {
|
||||
startRendering: function pageStartRendering(ctx, callback, errorback) {
|
||||
this.ctx = ctx;
|
||||
this.callback = callback;
|
||||
this.errorback = errorback;
|
||||
|
||||
this.startRenderingTime = Date.now();
|
||||
this.pdf.startRendering(this);
|
||||
|
@ -599,6 +606,14 @@ var PDFDoc = (function pdfDoc() {
|
|||
}
|
||||
}.bind(this));
|
||||
|
||||
messageHandler.on('page_error', function pdfDocError(data) {
|
||||
var page = this.pageCache[data.pageNum];
|
||||
if (page.errorback)
|
||||
page.errorback(data.error)
|
||||
else
|
||||
throw data.error;
|
||||
}, this);
|
||||
|
||||
setTimeout(function pdfDocFontReadySetTimeout() {
|
||||
messageHandler.send('doc', this.data);
|
||||
this.workerReadyPromise.resolve(true);
|
||||
|
|
|
@ -14,7 +14,6 @@ function MessageHandler(name, comObj) {
|
|||
ah['console_error'] = [function ahConsoleError(data) {
|
||||
console.error.apply(console, data);
|
||||
}];
|
||||
|
||||
comObj.onmessage = function messageHandlerComObjOnMessage(event) {
|
||||
var data = event.data;
|
||||
if (data.action in ah) {
|
||||
|
@ -67,7 +66,6 @@ var WorkerMessageHandler = {
|
|||
handler.on('page_request', function wphSetupPageRequest(pageNum) {
|
||||
pageNum = parseInt(pageNum);
|
||||
|
||||
var page = pdfDoc.getPage(pageNum);
|
||||
|
||||
// The following code does quite the same as
|
||||
// Page.prototype.startRendering, but stops at one point and sends the
|
||||
|
@ -77,9 +75,22 @@ var WorkerMessageHandler = {
|
|||
var start = Date.now();
|
||||
|
||||
var dependency = [];
|
||||
|
||||
// Pre compile the pdf page and fetch the fonts/images.
|
||||
var IRQueue = page.getIRQueue(handler, dependency);
|
||||
try {
|
||||
var page = pdfDoc.getPage(pageNum);
|
||||
// Pre compile the pdf page and fetch the fonts/images.
|
||||
var IRQueue = page.getIRQueue(handler, dependency);
|
||||
} catch(e) {
|
||||
// Turn the error into an obj that can be serialized
|
||||
e = {
|
||||
message: e.message,
|
||||
stack: e.stack
|
||||
};
|
||||
handler.send('page_error', {
|
||||
pageNum: pageNum,
|
||||
error: e
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('page=%d - getIRQueue: time=%dms, len=%d', pageNum,
|
||||
Date.now() - start, IRQueue.fnArray.length);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue