From 1cba67b3ed2d182181d1df47f3ad0ee0c64a2298 Mon Sep 17 00:00:00 2001 From: marwin Date: Fri, 20 Mar 2026 20:13:45 +0100 Subject: [PATCH] Fix PDF zoom: preserve buffer with slice(0), cap base width to 900px - 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 --- static/js/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/js/app.js b/static/js/app.js index c331aff..3a6e212 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -2836,7 +2836,7 @@ async function _parsePdfOutline(pdf, items, depth) { } 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; let pdfTitle = '', pdfAuthor = ''; @@ -2854,7 +2854,7 @@ async function renderPdf(arrayBuffer, contentEl, scaleOverride) { contentEl.innerHTML = ''; - const containerWidth = contentEl.clientWidth - 32; + const containerWidth = Math.min(contentEl.clientWidth - 32, 900); for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) { const page = await pdf.getPage(pageNum);