diff --git a/frappe/public/js/frappe/microtemplate.js b/frappe/public/js/frappe/microtemplate.js index be1f05177b..4e0bd76601 100644 --- a/frappe/public/js/frappe/microtemplate.js +++ b/frappe/public/js/frappe/microtemplate.js @@ -175,6 +175,7 @@ frappe.render_template = function (name, data) { w.document.write(tree); w.document.close(); }); + frappe.render_pdf = function (html, opts = {}) { //Create a form to place the HTML content var formData = new FormData(); @@ -197,8 +198,17 @@ frappe.render_pdf = function (html, opts = {}) { var blob = new Blob([success.currentTarget.response], { type: "application/pdf" }); var objectUrl = URL.createObjectURL(blob); - //Open report in a new window - window.open(objectUrl); + // Create a hidden a tag to force set report name + // https://stackoverflow.com/questions/19327749/javascript-blob-filename-without-link + let hidden_a_tag = document.createElement("a"); + document.body.appendChild(hidden_a_tag); + hidden_a_tag.style = "display: none"; + hidden_a_tag.href = objectUrl; + hidden_a_tag.download = opts.report_name || "report.pdf"; + + // Open report in a new window + hidden_a_tag.click(); + window.URL.revokeObjectURL(objectUrl); } }; xhr.send(formData); diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 8a103f7186..1febf11b6c 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1383,6 +1383,14 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { layout_direction: frappe.utils.is_rtl() ? "rtl" : "ltr", }); + let filter_values = [], + name_len = 0; + for (var key of Object.keys(applied_filters)) { + name_len = name_len + applied_filters[key].toString().length; + if (name_len > 200) break; + filter_values.push(applied_filters[key]); + } + print_settings.report_name = `${__(this.report_name)}_${filter_values.join("_")}.pdf`; frappe.render_pdf(html, print_settings); }