Convert RenderTask
, in src/display/api.js
, to an ES6 class
Also deprecates the `then` method, in favour of the `promise` getter.
This commit is contained in:
parent
ef8e5fd77c
commit
2c003a82d5
@ -73,7 +73,8 @@ loadingTask.promise.then(function(pdfDocument) {
|
|||||||
canvasFactory: canvasFactory
|
canvasFactory: canvasFactory
|
||||||
};
|
};
|
||||||
|
|
||||||
page.render(renderContext).then(function () {
|
var renderTask = page.render(renderContext);
|
||||||
|
renderTask.promise.then(function() {
|
||||||
// Convert the canvas to an image buffer.
|
// Convert the canvas to an image buffer.
|
||||||
var image = canvasAndContext.canvas.toBuffer();
|
var image = canvasAndContext.canvas.toBuffer();
|
||||||
fs.writeFile('output.png', image, function (error) {
|
fs.writeFile('output.png', image, function (error) {
|
||||||
|
@ -2280,11 +2280,10 @@ class PDFObjects {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows controlling of the rendering tasks.
|
* Allows controlling of the rendering tasks.
|
||||||
* @class
|
|
||||||
* @alias RenderTask
|
* @alias RenderTask
|
||||||
*/
|
*/
|
||||||
var RenderTask = (function RenderTaskClosure() {
|
class RenderTask {
|
||||||
function RenderTask(internalRenderTask) {
|
constructor(internalRenderTask) {
|
||||||
this._internalRenderTask = internalRenderTask;
|
this._internalRenderTask = internalRenderTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2296,39 +2295,36 @@ var RenderTask = (function RenderTaskClosure() {
|
|||||||
this.onContinue = null;
|
this.onContinue = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderTask.prototype = /** @lends RenderTask.prototype */ {
|
/**
|
||||||
/**
|
* Promise for rendering task completion.
|
||||||
* Promise for rendering task completion.
|
* @return {Promise}
|
||||||
* @return {Promise}
|
*/
|
||||||
*/
|
get promise() {
|
||||||
get promise() {
|
return this._internalRenderTask.capability.promise;
|
||||||
return this._internalRenderTask.capability.promise;
|
}
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancels the rendering task. If the task is currently rendering it will
|
* Cancels the rendering task. If the task is currently rendering it will
|
||||||
* not be cancelled until graphics pauses with a timeout. The promise that
|
* not be cancelled until graphics pauses with a timeout. The promise that
|
||||||
* this object extends will be rejected when cancelled.
|
* this object extends will be rejected when cancelled.
|
||||||
*/
|
*/
|
||||||
cancel: function RenderTask_cancel() {
|
cancel() {
|
||||||
this._internalRenderTask.cancel();
|
this._internalRenderTask.cancel();
|
||||||
},
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers callbacks to indicate the rendering task completion.
|
* Registers callbacks to indicate the rendering task completion.
|
||||||
*
|
*
|
||||||
* @param {function} onFulfilled The callback for the rendering completion.
|
* @param {function} onFulfilled The callback for the rendering completion.
|
||||||
* @param {function} onRejected The callback for the rendering failure.
|
* @param {function} onRejected The callback for the rendering failure.
|
||||||
* @return {Promise} A promise that is resolved after the onFulfilled or
|
* @return {Promise} A promise that is resolved after the onFulfilled or
|
||||||
* onRejected callback.
|
* onRejected callback.
|
||||||
*/
|
*/
|
||||||
then: function RenderTask_then(onFulfilled, onRejected) {
|
then(onFulfilled, onRejected) {
|
||||||
return this.promise.then.apply(this.promise, arguments);
|
deprecated('RenderTask.then method, use the `promise` getter instead.');
|
||||||
},
|
return this.promise.then.apply(this.promise, arguments);
|
||||||
};
|
}
|
||||||
|
}
|
||||||
return RenderTask;
|
|
||||||
})();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For internal use only.
|
* For internal use only.
|
||||||
|
@ -1332,26 +1332,23 @@ describe('api', function() {
|
|||||||
|
|
||||||
// Render the first page of the given PDF file.
|
// Render the first page of the given PDF file.
|
||||||
// Fulfills the promise with the base64-encoded version of the PDF.
|
// Fulfills the promise with the base64-encoded version of the PDF.
|
||||||
function renderPDF(filename) {
|
async function renderPDF(filename) {
|
||||||
var loadingTask = getDocument(filename);
|
const loadingTask = getDocument(filename);
|
||||||
loadingTasks.push(loadingTask);
|
loadingTasks.push(loadingTask);
|
||||||
return loadingTask.promise
|
const pdf = await loadingTask.promise;
|
||||||
.then(function(pdf) {
|
pdfDocuments.push(pdf);
|
||||||
pdfDocuments.push(pdf);
|
const page = await pdf.getPage(1);
|
||||||
return pdf.getPage(1);
|
const viewport = page.getViewport(1.2);
|
||||||
}).then(function(page) {
|
const canvasAndCtx = CanvasFactory.create(viewport.width,
|
||||||
var viewport = page.getViewport(1.2);
|
viewport.height);
|
||||||
var canvasAndCtx = CanvasFactory.create(viewport.width,
|
const renderTask = page.render({
|
||||||
viewport.height);
|
canvasContext: canvasAndCtx.context,
|
||||||
return page.render({
|
viewport,
|
||||||
canvasContext: canvasAndCtx.context,
|
});
|
||||||
viewport,
|
await renderTask.promise;
|
||||||
}).then(function() {
|
const data = canvasAndCtx.canvas.toDataURL();
|
||||||
var data = canvasAndCtx.canvas.toDataURL();
|
CanvasFactory.destroy(canvasAndCtx);
|
||||||
CanvasFactory.destroy(canvasAndCtx);
|
return data;
|
||||||
return data;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
afterEach(function(done) {
|
afterEach(function(done) {
|
||||||
|
@ -48,9 +48,7 @@ describe('custom canvas rendering', function() {
|
|||||||
}).then(function(data) {
|
}).then(function(data) {
|
||||||
page = data;
|
page = data;
|
||||||
done();
|
done();
|
||||||
}).catch(function (reason) {
|
}).catch(done.fail);
|
||||||
done.fail(reason);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(function(done) {
|
afterAll(function(done) {
|
||||||
@ -66,20 +64,16 @@ describe('custom canvas rendering', function() {
|
|||||||
var viewport = page.getViewport(1);
|
var viewport = page.getViewport(1);
|
||||||
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
|
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
|
||||||
|
|
||||||
page.render({
|
const renderTask = page.render({
|
||||||
canvasContext: canvasAndCtx.context,
|
canvasContext: canvasAndCtx.context,
|
||||||
viewport,
|
viewport,
|
||||||
}).then(function() {
|
|
||||||
var { r, g, b, a, } = getTopLeftPixel(canvasAndCtx.context);
|
|
||||||
CanvasFactory.destroy(canvasAndCtx);
|
|
||||||
expect(r).toEqual(255);
|
|
||||||
expect(g).toEqual(255);
|
|
||||||
expect(b).toEqual(255);
|
|
||||||
expect(a).toEqual(255);
|
|
||||||
done();
|
|
||||||
}).catch(function (reason) {
|
|
||||||
done(reason);
|
|
||||||
});
|
});
|
||||||
|
renderTask.promise.then(function() {
|
||||||
|
expect(getTopLeftPixel(canvasAndCtx.context)).toEqual(
|
||||||
|
{ r: 255, g: 255, b: 255, a: 255, });
|
||||||
|
CanvasFactory.destroy(canvasAndCtx);
|
||||||
|
done();
|
||||||
|
}).catch(done.fail);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('renders to canvas with a custom background', function(done) {
|
it('renders to canvas with a custom background', function(done) {
|
||||||
@ -89,20 +83,16 @@ describe('custom canvas rendering', function() {
|
|||||||
var viewport = page.getViewport(1);
|
var viewport = page.getViewport(1);
|
||||||
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
|
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
|
||||||
|
|
||||||
page.render({
|
const renderTask = page.render({
|
||||||
canvasContext: canvasAndCtx.context,
|
canvasContext: canvasAndCtx.context,
|
||||||
viewport,
|
viewport,
|
||||||
background: 'rgba(255,0,0,1.0)',
|
background: 'rgba(255,0,0,1.0)',
|
||||||
}).then(function() {
|
|
||||||
var { r, g, b, a, } = getTopLeftPixel(canvasAndCtx.context);
|
|
||||||
CanvasFactory.destroy(canvasAndCtx);
|
|
||||||
expect(r).toEqual(255);
|
|
||||||
expect(g).toEqual(0);
|
|
||||||
expect(b).toEqual(0);
|
|
||||||
expect(a).toEqual(255);
|
|
||||||
done();
|
|
||||||
}).catch(function (reason) {
|
|
||||||
done(reason);
|
|
||||||
});
|
});
|
||||||
|
renderTask.promise.then(function() {
|
||||||
|
expect(getTopLeftPixel(canvasAndCtx.context)).toEqual(
|
||||||
|
{ r: 255, g: 0, b: 0, a: 255, });
|
||||||
|
CanvasFactory.destroy(canvasAndCtx);
|
||||||
|
done();
|
||||||
|
}).catch(done.fail);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user