if (this.worker)
this.worker.terminate();
- for (var n in this.pageCache)
- delete this.pageCache[n];
+ this.pageCache = [];
+ this.pagePromises = [];
},
setupFakeWorker: function WorkerTransport_setupFakeWorker() {
// If we don't use a worker, just post/sendMessage to the main thread.
function WorkerTransport_setupMessageHandler(messageHandler) {
this.messageHandler = messageHandler;
- messageHandler.on('doc', function transportPage(data) {
+ messageHandler.on('getdoc', function transportDoc(data) {
var pdfInfo = data.pdfInfo;
var pdfDocument = new PdfDocumentWrapper(pdfInfo, this);
this.pdfDocument = pdfDocument;
messageHandler.on('getpage', function transportPage(data) {
var pageInfo = data.pageInfo;
var page = new PdfPageWrapper(pageInfo, this);
- this.pageCache[pageInfo.pageNumber] = page;
- var promises = this.pagePromises[pageInfo.pageNumber];
- delete this.pagePromises[pageInfo.pageNumber];
- for (var i = 0, ii = promises.length; i < ii; ++i)
- promises[i].resolve(page);
+ this.pageCache[pageInfo.pageIndex] = page;
+ var promise = this.pagePromises[pageInfo.pageIndex];
+ promise.resolve(page);
}, this);
- messageHandler.on('page', function transportPage(data) {
- var pageNum = data.pageNum;
- var page = this.pageCache[pageNum - 1];
+ messageHandler.on('renderpage', function transportRender(data) {
+ var page = this.pageCache[data.pageIndex];
var depFonts = data.depFonts;
- //page.stats.timeEnd('Page Request');
+ page.stats.timeEnd('Page Request');
page.startRenderingFromOperatorList(data.operatorList, depFonts);
}, this);
},
sendData: function WorkerTransport_sendData(data) {
- this.messageHandler.send('doc_request', data);
+ this.messageHandler.send('getdoc_request', data);
},
- getPage: function WorkerTransport_getPage(n, promise) {
- if (this.pageCache[n - 1]) {
- promise.resolve(this.pageCache[n - 1]);
- return;
- }
- if ((n - 1) in this.pagePromises) {
- this.pagePromises[n - 1].push(promise);
- return;
- }
- this.pagePromises[n - 1] = [promise];
- this.messageHandler.send('getpage_request', {pageNumber: n - 1});
+ getPage: function WorkerTransport_getPage(pageNumber, promise) {
+ var pageIndex = pageNumber - 1;
+ if (pageIndex in this.pagePromises)
+ return this.pagePromises[pageIndex];
+ var promise = new PDFJS.Promise('Page ' + pageNumber);
+ this.pagePromises[pageIndex] = promise;
+ this.messageHandler.send('getpage_request', { pageIndex: pageIndex });
+ return promise;
}
};
function PdfPageWrapper(pageInfo, transport) {
}
PdfPageWrapper.prototype = {
get pageNumber() {
- return this.pageInfo.pageNumber;
+ return this.pageInfo.pageIndex + 1;
},
get rotate() {
return this.pageInfo.rotate;
if (!this.displayReadyPromise) {
this.displayReadyPromise = new Promise();
- //this.stats.time('Page Request');
- this.transport.messageHandler.send('page_request', this.pageNumber + 1);
+ this.stats.time('Page Request');
+ this.transport.messageHandler.send('renderpage_request', {
+ pageIndex: this.pageNumber - 1
+ });
}
var callback = (function complete(error) {
return this.pdfInfo.fingerprint;
},
getPage: function(number) {
- var promise = new PDFJS.Promise();
- this.transport.getPage(number, promise);
- return promise;
+ return this.transport.getPage(number);
},
getDestinations: function() {
var promise = new PDFJS.Promise();
handler.send('test', data instanceof Uint8Array);
});
- handler.on('doc_request', function wphSetupDoc(data) {
+ handler.on('getdoc_request', function wphSetupDoc(data) {
// Create only the model of the PDFDoc, which is enough for
// processing the content of the pdf.
pdfModel = new PDFDocModel(new Stream(data));
info: pdfModel.info,
metadata: pdfModel.catalog.metadata
};
- handler.send('doc', {pdfInfo: doc});
+ handler.send('getdoc', {pdfInfo: doc});
});
handler.on('getpage_request', function wphSetupTest(data) {
- var pdfPage = pdfModel.getPage(data.pageNumber + 1);
+ var pageNumber = data.pageIndex + 1;
+ var pdfPage = pdfModel.getPage(pageNumber);
var page = {
- pageNumber: data.pageNumber,
+ pageIndex: data.pageIndex,
rotate: pdfPage.rotate,
ref: pdfPage.ref,
view: pdfPage.view,
handler.send('getpage', {pageInfo: page});
});
- handler.on('page_request', function wphSetupPageRequest(pageNum) {
- pageNum = parseInt(pageNum);
+ handler.on('renderpage_request', function wphSetupPageRequest(data) {
+ var pageNum = data.pageIndex + 1;
// The following code does quite the same as
}
}
- handler.send('page', {
- pageNum: pageNum,
+ handler.send('renderpage', {
+ pageIndex: data.pageIndex,
operatorList: operatorList,
depFonts: Object.keys(fonts)
});