diff --git a/frappe/printing/doctype/print_settings/print_settings.json b/frappe/printing/doctype/print_settings/print_settings.json index 2a05fcbcd5..d3a8189798 100644 --- a/frappe/printing/doctype/print_settings/print_settings.json +++ b/frappe/printing/doctype/print_settings/print_settings.json @@ -8,6 +8,7 @@ "pdf_settings", "send_print_as_pdf", "repeat_header_footer", + "pdf_generator", "column_break_4", "pdf_page_size", "pdf_page_height", @@ -170,13 +171,20 @@ "fieldname": "pdf_page_width", "fieldtype": "Float", "label": "PDF Page Width (in mm)" + }, + { + "default": "wkhtmltopdf", + "fieldname": "pdf_generator", + "fieldtype": "Select", + "label": "PDF Generator", + "options": "wkhtmltopdf\nchrome" } ], "icon": "fa fa-cog", "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2024-03-23 16:03:35.392721", + "modified": "2026-01-10 11:54:14.176810", "modified_by": "Administrator", "module": "Printing", "name": "Print Settings", @@ -191,8 +199,9 @@ } ], "quick_entry": 1, + "row_format": "Dynamic", "sort_field": "creation", "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/frappe/printing/doctype/print_settings/print_settings.py b/frappe/printing/doctype/print_settings/print_settings.py index dbb19519a9..88cf4e2557 100644 --- a/frappe/printing/doctype/print_settings/print_settings.py +++ b/frappe/printing/doctype/print_settings/print_settings.py @@ -24,6 +24,7 @@ class PrintSettings(Document): enable_raw_printing: DF.Check font: DF.Literal["Default", "Helvetica Neue", "Arial", "Helvetica", "Inter", "Verdana", "Monospace"] font_size: DF.Float + pdf_generator: DF.Literal["wkhtmltopdf", "chrome"] pdf_page_height: DF.Float pdf_page_size: DF.Literal[ "A0", diff --git a/frappe/printing/page/print/print.js b/frappe/printing/page/print/print.js index 9a5551b7fb..9808f65a84 100644 --- a/frappe/printing/page/print/print.js +++ b/frappe/printing/page/print/print.js @@ -710,8 +710,14 @@ frappe.ui.form.PrintView = class { ); } } - - render_page(method, printit = false, pdf_generator = "wkhtmltopdf") { + get_pdf_generator(pdf_generator) { + if (!pdf_generator) { + pdf_generator = this.print_settings.pdf_generator || "wkhtmltopdf"; + } + return pdf_generator; + } + render_page(method, printit = false, pdf_generator) { + pdf_generator = this.get_pdf_generator(pdf_generator); let w = window.open( frappe.urllib.get_full_url( method + diff --git a/frappe/utils/print_utils.py b/frappe/utils/print_utils.py index dfb17f1038..9c5e903f3c 100644 --- a/frappe/utils/print_utils.py +++ b/frappe/utils/print_utils.py @@ -175,7 +175,7 @@ def find_or_download_chromium_executable(): import shutil from pathlib import Path - if chromium_path := shutil.which(frappe.get_common_site_config().chromium_path): + if chromium_path := shutil.which(frappe.get_common_site_config().get("chromium_path", "")): return chromium_path bench_path = frappe.utils.get_bench_path()