aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-11-30 03:17:17 +0900
committernsfisis <nsfisis@gmail.com>2025-11-30 03:17:17 +0900
commit013fd2595d1b69b0035dd26b8d5b8e5b97a63db7 (patch)
tree6ccece5a06a866defd56cc314f2e2495c64b357d
parent277ff78fa74be86de86fdfa66af7f4ae2fb17980 (diff)
downloadnsfisis.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.js14
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;