diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-11-30 03:17:17 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-11-30 03:17:17 +0900 |
| commit | 013fd2595d1b69b0035dd26b8d5b8e5b97a63db7 (patch) | |
| tree | 6ccece5a06a866defd56cc314f2e2495c64b357d | |
| parent | 277ff78fa74be86de86fdfa66af7f4ae2fb17980 (diff) | |
| download | nsfisis.dev-013fd2595d1b69b0035dd26b8d5b8e5b97a63db7.tar.gz nsfisis.dev-013fd2595d1b69b0035dd26b8d5b8e5b97a63db7.tar.zst nsfisis.dev-013fd2595d1b69b0035dd26b8d5b8e5b97a63db7.zip | |
fix(slides): Fix slide rendering in HiDPI display
| -rw-r--r-- | services/nuldoc/static/slides/slide.js | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/services/nuldoc/static/slides/slide.js b/services/nuldoc/static/slides/slide.js index 75a8d35..f62b511 100644 --- a/services/nuldoc/static/slides/slide.js +++ b/services/nuldoc/static/slides/slide.js @@ -17,13 +17,21 @@ async function init() { const page = await doc.getPage(num); const viewport = page.getViewport({ scale: 1.0 }); - canvas.height = viewport.height; - canvas.width = viewport.width; + const outputScale = globalThis.devicePixelRatio || 1; + canvas.height = Math.floor(viewport.height * outputScale); + canvas.width = Math.floor(viewport.width * outputScale); + canvas.style.width = Math.floor(viewport.width) + "px"; + canvas.style.height = Math.floor(viewport.height) + "px"; + + const transform = outputScale !== 1 + ? [outputScale, 0, 0, outputScale, 0, 0] + : null; // TODO: error handling await page.render({ canvasContext: ctx, - viewport: viewport, + viewport, + transform, }); pageRendering = false; |
