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:
2026-06-06 14:56:45 +02:00
parent 86b821739a
commit fc267e1eb4
2 changed files with 37 additions and 9 deletions

View File

@@ -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);
}