From 819dba80388d135f40b56b3b578eec07e9e5ba8f Mon Sep 17 00:00:00 2001 From: gajjug004 Date: Wed, 18 Mar 2026 17:31:04 +0530 Subject: [PATCH 1/2] fix: show letterhead footer in report print preview --- frappe/public/html/print_template.html | 25 ++++++++++++------------ frappe/public/js/frappe/microtemplate.js | 15 ++++++++++++++ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/frappe/public/html/print_template.html b/frappe/public/html/print_template.html index 80069f4bf3..03dc439b61 100644 --- a/frappe/public/html/print_template.html +++ b/frappe/public/html/print_template.html @@ -14,19 +14,6 @@ diff --git a/frappe/public/js/frappe/microtemplate.js b/frappe/public/js/frappe/microtemplate.js index f3041c677a..3f5a4665c4 100644 --- a/frappe/public/js/frappe/microtemplate.js +++ b/frappe/public/js/frappe/microtemplate.js @@ -163,6 +163,21 @@ frappe.render_template = function (name, data) { } w.document.write(html); + + // show footer on print + const footer = w.document.getElementById("footer-html"); + if (footer) { + footer.classList.remove("visible-pdf"); + footer.style.marginTop = "auto"; + + const print_format = w.document.querySelector(".print-format"); + if (print_format) { + print_format.style.display = "flex"; + print_format.style.flexDirection = "column"; + print_format.style.minHeight = "100vh"; + } + } + w.document.close(); }), (frappe.render_tree = function (opts) { From 8cc04db960191319248fb489c12b502ef7eb74ae Mon Sep 17 00:00:00 2001 From: gajjug004 Date: Wed, 18 Mar 2026 17:32:43 +0530 Subject: [PATCH 2/2] fix: re-render letterhead on every print/PDF action --- frappe/public/js/frappe/views/reports/query_report.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 42cedbe15a..c70fe46fea 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1676,7 +1676,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { async render_report_letterhead(print_settings) { if (!print_settings.with_letter_head || !print_settings.letter_head_name) return; - if (print_settings.__letter_head_rendered) return; const filters = this.get_filter_values ? this.get_filter_values() : {}; const doc_context = Object.assign({}, filters); @@ -1692,7 +1691,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }); if (r.message) { print_settings.letter_head = r.message; - print_settings.__letter_head_rendered = true; } } catch (e) { // fall back silently if rendering fails