From ad5e8ccdb38fe3861cd0fcb92ef0b571785202eb Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 5 Feb 2026 09:23:14 +0100 Subject: [PATCH] :bug: Fix pdf sizing issue on export (#8274) --- CHANGES.md | 6 ++++++ exporter/src/app/renderer/pdf.cljs | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 7ba6b64e95..58e9c0a9a5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # CHANGELOG +## 2.13.1 + +### :bug: Bugs fixed + +- Fix PDF Exporter outputs empty page when board has A4 format [Taiga #13181](https://tree.taiga.io/project/penpot/issue/13181) + ## 2.13.0 ### :heart: Community contributions (Thank you!) diff --git a/exporter/src/app/renderer/pdf.cljs b/exporter/src/app/renderer/pdf.cljs index c7558184c4..a93020e147 100644 --- a/exporter/src/app/renderer/pdf.cljs +++ b/exporter/src/app/renderer/pdf.cljs @@ -38,6 +38,18 @@ (assoc :path "/render.html") (assoc :query (u/map->query-string params))))) + (sync-page-size! [dom] + (bw/eval! dom + (fn [elem] + (let [width (.getAttribute ^js elem "width") + height (.getAttribute ^js elem "height") + style-node (let [node (.createElement js/document "style")] + (.appendChild (.-head js/document) node) + node)] + (set! (.-textContent style-node) + (str "@page { size: " width "px " height "px; margin: 0; }\n" + "html, body, #app { margin: 0; padding: 0; width: " width "px; height: " height "px; overflow: visible; }")))))) + (render-object [page base-uri {:keys [id] :as object}] (p/let [uri (prepare-uri base-uri id) path (sh/tempfile :prefix "penpot.tmp.pdf." :suffix (mime/get-extension type))] @@ -45,6 +57,7 @@ (bw/nav! page uri) (p/let [dom (bw/select page (dm/str "#screenshot-" id))] (bw/wait-for dom) + (sync-page-size! dom) (bw/screenshot dom {:full-page? true}) (bw/sleep page 2000) ; the good old fix with sleep (bw/pdf page {:path path})