Fix PDF zoom: preserve buffer with slice(0), cap base width to 900px
All checks were successful
Build and push Docker image / build (push) Successful in 13s
Test / test (push) Successful in 16s

- Use arrayBuffer.slice(0) before passing to pdfjsLib.getDocument so PDF.js
  doesn't transfer/detach currentPdfBuffer, enabling re-renders on zoom change
- Cap containerWidth to min(viewport-32, 900px) so PDF doesn't stretch across
  the full viewport on wide screens

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
marwin 2026-03-20 20:13:45 +01:00
parent 04818c939e
commit 1cba67b3ed

View file

@ -2836,7 +2836,7 @@ async function _parsePdfOutline(pdf, items, depth) {
} }
async function renderPdf(arrayBuffer, contentEl, scaleOverride) { async function renderPdf(arrayBuffer, contentEl, scaleOverride) {
const pdf = currentPdfDoc || await pdfjsLib.getDocument({data: new Uint8Array(arrayBuffer)}).promise; const pdf = currentPdfDoc || await pdfjsLib.getDocument({data: new Uint8Array(arrayBuffer.slice(0))}).promise;
currentPdfDoc = pdf; currentPdfDoc = pdf;
let pdfTitle = '', pdfAuthor = ''; let pdfTitle = '', pdfAuthor = '';
@ -2854,7 +2854,7 @@ async function renderPdf(arrayBuffer, contentEl, scaleOverride) {
contentEl.innerHTML = ''; contentEl.innerHTML = '';
const containerWidth = contentEl.clientWidth - 32; const containerWidth = Math.min(contentEl.clientWidth - 32, 900);
for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) { for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {
const page = await pdf.getPage(pageNum); const page = await pdf.getPage(pageNum);