Improve PDF toolbar layout and rendering logic
Updated `envelope-viewer.css` to enhance the layout and responsiveness of the PDF toolbar: - Adjusted padding, gap, width, and alignment for better usability. - Improved zoom section and slider styles for flexibility and consistency. Enhanced `pdf-viewer.js` to handle concurrent rendering tasks: - Added checks to prevent overlapping render tasks on the same canvas. - Implemented error handling for rendering operations to ensure stability. These changes improve the user experience and robustness of the PDF viewer.
This commit is contained in:
@@ -303,6 +303,15 @@ window.pdfViewer = {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if canvas is already being used by a render task
|
||||
if (canvas._renderTask) {
|
||||
try {
|
||||
await canvas._renderTask;
|
||||
} catch (e) {
|
||||
// Ignore cancellation errors
|
||||
}
|
||||
}
|
||||
|
||||
const page = await this.pdfDoc.getPage(pageNum);
|
||||
|
||||
// High-quality rendering with HiDPI support (configurable)
|
||||
@@ -333,7 +342,14 @@ window.pdfViewer = {
|
||||
viewport: viewport
|
||||
};
|
||||
|
||||
await page.render(renderContext).promise;
|
||||
// Store render task on canvas to track active renders
|
||||
const renderTask = page.render(renderContext);
|
||||
canvas._renderTask = renderTask.promise;
|
||||
|
||||
await renderTask.promise;
|
||||
|
||||
// Clear the task when done
|
||||
delete canvas._renderTask;
|
||||
} catch (error) {
|
||||
console.error('Error rendering thumbnail', pageNum, ':', error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user