From c2e20fb6823e31caf80771b6ccf4a159035376fa Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sat, 3 Oct 2026 15:56:04 +0000 Subject: [PATCH] A poster printed from a phone is exactly one page (its print root is sized and clipped to the fitted sheet), and its leader lines match the image print's weight --- library/components/poster/PosterWall.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/library/components/poster/PosterWall.vue b/library/components/poster/PosterWall.vue index 9f7b3830a..0aada689b 100644 --- a/library/components/poster/PosterWall.vue +++ b/library/components/poster/PosterWall.vue @@ -867,8 +867,13 @@ function fitForPrint(html) { const M = (PRINT_MARGIN_MM / 25.4) * 96 const W = +box[1], H = +box[2] const f = Math.min((pageW - 2 * M) / W, (pageH - 2 * M) / H) * 0.995 + const w = Math.floor(W * f), h = Math.floor(H * f) + // On a PHONE the sheet prints inside the page itself (printInPlace's #dxm-print-root), where the host's print rules + // force html/body overflow visible, so the stage's unscaled layout box spilled onto blank pages: the root is sized + // and clipped to the fitted box too (the frame print has no root, so this rule changes nothing there). const css = `` + + `html,body{width:${w}px;height:${h}px}#dxm-print-root{width:${w}px!important;height:${h}px!important;overflow:hidden!important;margin:0!important}` + + `.lead{stroke-opacity:.75}.slead{opacity:.5}}` return html.replace('', css + '') }