Allows to cancel the rendering of a page in case it is not finished and there is a new zoom level

This commit is contained in:
Vincent LAURENT 2022-05-07 02:06:30 +02:00
parent 6198c55d3a
commit 9b25ef4c6e
1 changed files with 8 additions and 4 deletions

View File

@ -10,6 +10,7 @@ var pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.GlobalWorkerOptions.workerSrc = '/vendor/pdf.worker.js?legacy';
var nbPDF = 0;
var pages = [];
var pdfRenderTasks = [];
var loadPDF = async function(pdfBlob, filename, pdfIndex) {
let url = await URL.createObjectURL(pdfBlob);
@ -131,7 +132,7 @@ var pageRenderAll = function() {
}
}
var pageRender = function(pageIndex) {
var pageRender = async function(pageIndex) {
let page = pages[pageIndex];
let rotation = parseInt(document.querySelector('#input_rotate_'+pageIndex).value);
let viewport = page.getViewport({scale: 1, rotation: rotation});
@ -155,9 +156,12 @@ var pageRender = function(pageIndex) {
canvasPDF.height = viewport.height;
canvasPDF.width = viewport.width;
page.render({
canvasContext: context,
viewport: viewport,
if(pdfRenderTasks[pageIndex]) {
pdfRenderTasks[pageIndex].cancel();
}
pdfRenderTasks[pageIndex] = await page.render({
canvasContext: context,
viewport: viewport,
});
}