[enhancement] Set print font from Setup > Print Settings or set it for each Print Formatversion-14
@@ -162,4 +162,4 @@ def load_print(bootinfo, doclist): | |||
load_print_css(bootinfo, print_settings) | |||
def load_print_css(bootinfo, print_settings): | |||
bootinfo.print_css = frappe.get_attr("frappe.templates.pages.print.get_print_style")(print_settings.print_style or "Modern") | |||
bootinfo.print_css = frappe.get_attr("frappe.templates.pages.print.get_print_style")(print_settings.print_style or "Modern", for_legacy=True) |
@@ -0,0 +1 @@ | |||
- Change print font from Setup > Print Settings or set it for each Print Format. Font options are "Default", "Arial", "Helvetica", "Verdana", "Monospace". |
@@ -12,7 +12,6 @@ def get(name): | |||
""" | |||
page = frappe.get_doc('Page', name) | |||
if page.is_permitted(): | |||
print "here" | |||
page.load_assets() | |||
return page | |||
else: | |||
@@ -19,12 +19,10 @@ | |||
"search_index": 0 | |||
}, | |||
{ | |||
"depends_on": "eval:!doc.custom_format", | |||
"fieldname": "edit_format", | |||
"fieldtype": "Button", | |||
"label": "Edit Format", | |||
"permlevel": 0, | |||
"precision": "" | |||
"fieldname": "disabled", | |||
"fieldtype": "Check", | |||
"label": "Disabled", | |||
"permlevel": 0 | |||
}, | |||
{ | |||
"fieldname": "column_break_3", | |||
@@ -52,23 +50,18 @@ | |||
"search_index": 1 | |||
}, | |||
{ | |||
"fieldname": "disabled", | |||
"fieldname": "custom_format", | |||
"fieldtype": "Check", | |||
"label": "Disabled", | |||
"permlevel": 0 | |||
"label": "Custom Format", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"depends_on": "custom_format", | |||
"fieldname": "section_break_6", | |||
"fieldtype": "Section Break", | |||
"permlevel": 0 | |||
}, | |||
{ | |||
"fieldname": "custom_format", | |||
"fieldtype": "Check", | |||
"label": "Custom Format", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"default": "Server", | |||
"depends_on": "custom_format", | |||
@@ -99,6 +92,44 @@ | |||
"reqd": 0, | |||
"search_index": 0 | |||
}, | |||
{ | |||
"depends_on": "eval:!doc.custom_format", | |||
"fieldname": "section_break_9", | |||
"fieldtype": "Section Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"depends_on": "eval:!doc.custom_format", | |||
"fieldname": "edit_format", | |||
"fieldtype": "Button", | |||
"label": "Edit Format", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"fieldname": "column_break_11", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"default": "Default", | |||
"depends_on": "eval:!doc.custom_format", | |||
"fieldname": "font", | |||
"fieldtype": "Select", | |||
"label": "Font", | |||
"options": "Default\nArial\nHelvetica\nVerdana\nMonospace", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"depends_on": "custom_format", | |||
"fieldname": "section_break_13", | |||
"fieldtype": "Section Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"depends_on": "custom_format", | |||
"fieldname": "print_format_help", | |||
@@ -134,7 +165,7 @@ | |||
"issingle": 0, | |||
"istable": 0, | |||
"max_attachments": 0, | |||
"modified": "2015-02-05 05:11:42.667447", | |||
"modified": "2015-07-15 08:01:06.284031", | |||
"modified_by": "Administrator", | |||
"module": "Print", | |||
"name": "Print Format", | |||
@@ -42,9 +42,13 @@ | |||
"permlevel": 0 | |||
}, | |||
{ | |||
"fieldname": "column_break_6", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0 | |||
"default": "Default", | |||
"fieldname": "font", | |||
"fieldtype": "Select", | |||
"label": "Font", | |||
"options": "Default\nArial\nHelvetica\nVerdana\nMonospace", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"description": "In points. Default is 9.", | |||
@@ -53,6 +57,11 @@ | |||
"label": "Font Size", | |||
"permlevel": 0 | |||
}, | |||
{ | |||
"fieldname": "column_break_6", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0 | |||
}, | |||
{ | |||
"default": "1", | |||
"description": "Print with Letterhead, unless unchecked in a particular Document", | |||
@@ -76,7 +85,7 @@ | |||
], | |||
"icon": "icon-cog", | |||
"issingle": 1, | |||
"modified": "2015-03-25 07:10:38.893958", | |||
"modified": "2015-07-15 08:03:23.743143", | |||
"modified_by": "Administrator", | |||
"module": "Print", | |||
"name": "Print Settings", | |||
@@ -24,10 +24,20 @@ frappe.dom = { | |||
// execute the script globally | |||
document.getElementsByTagName('head')[0].appendChild(el); | |||
}, | |||
set_style: function(txt) { | |||
set_style: function(txt, id) { | |||
if(!txt) return; | |||
var se = document.createElement('style'); | |||
se.type = "text/css"; | |||
if (id) { | |||
var element = document.getElementById(id); | |||
if (element) { | |||
element.parentNode.removeChild(element); | |||
} | |||
se.id = id; | |||
} | |||
if (se.styleSheet) { | |||
se.styleSheet.cssText = txt; | |||
} else { | |||
@@ -30,6 +30,7 @@ frappe.ui.form.PrintPreview = Class.extend({ | |||
.on("change", function() { | |||
if(me.is_old_style()) { | |||
me.wrapper.find(".btn-download-pdf").toggle(false); | |||
me.set_style(); | |||
me.preview_old_style(); | |||
} else { | |||
me.wrapper.find(".btn-download-pdf").toggle(true); | |||
@@ -91,8 +92,9 @@ frappe.ui.form.PrintPreview = Class.extend({ | |||
}, | |||
preview: function() { | |||
var me = this; | |||
this.get_print_html(function(html) { | |||
me.wrapper.find(".print-format").html(html); | |||
this.get_print_html(function(out) { | |||
me.wrapper.find(".print-format").html(out.html); | |||
me.set_style(out.style); | |||
}); | |||
}, | |||
printit: function() { | |||
@@ -100,21 +102,19 @@ frappe.ui.form.PrintPreview = Class.extend({ | |||
}, | |||
new_page_preview: function(printit) { | |||
var me = this; | |||
this.get_print_html(function(html) { | |||
var w = window.open("/print?" | |||
+"doctype="+encodeURIComponent(me.frm.doc.doctype) | |||
+"&name="+encodeURIComponent(me.frm.doc.name) | |||
+(printit ? "&trigger_print=1" : "") | |||
+"&format="+me.selected_format() | |||
+"&no_letterhead="+(me.with_letterhead() ? "0" : "1")); | |||
if(!w) { | |||
msgprint(__("Please enable pop-ups")); return; | |||
} | |||
}); | |||
var w = window.open("/print?" | |||
+"doctype="+encodeURIComponent(me.frm.doc.doctype) | |||
+"&name="+encodeURIComponent(me.frm.doc.name) | |||
+(printit ? "&trigger_print=1" : "") | |||
+"&format="+me.selected_format() | |||
+"&no_letterhead="+(me.with_letterhead() ? "0" : "1")); | |||
if(!w) { | |||
msgprint(__("Please enable pop-ups")); return; | |||
} | |||
}, | |||
get_print_html: function(callback) { | |||
frappe.call({ | |||
method: "frappe.templates.pages.print.get_html", | |||
method: "frappe.templates.pages.print.get_html_and_style", | |||
args: { | |||
doc: this.frm.doc, | |||
print_format: this.selected_format(), | |||
@@ -181,5 +181,8 @@ frappe.ui.form.PrintPreview = Class.extend({ | |||
}, | |||
with_letterhead: function() { | |||
return this.print_letterhead.is(":checked") ? 1 : 0; | |||
}, | |||
set_style: function(style) { | |||
frappe.dom.set_style(style || frappe.boot.print_css, "print-style"); | |||
} | |||
}) |
@@ -1,7 +1,7 @@ | |||
{% set doc = frappe.get_doc(doc) %} | |||
{% set subject = doc.get(meta.title_field or "name") %} | |||
{% set route = ((is_web_form is defined and is_web_form and "{0}?name={1}".format(pathname, doc.name)) | |||
or (doc.get("get_route") and doc.get_route()) | |||
or (doc.get_route and doc.get_route()) | |||
or "{0}/{1}".format(pathname or doc.doctype, doc.name)) %} | |||
<div class="web-list-item"> | |||
<a class="no-decoration" href="/{{ route }}" no-pjax> | |||
@@ -34,12 +34,11 @@ def get_context(context): | |||
return { | |||
"body": get_html(doc, print_format = frappe.form_dict.format, | |||
meta=meta, trigger_print = frappe.form_dict.trigger_print, no_letterhead=frappe.form_dict.no_letterhead), | |||
"css": get_print_style(frappe.form_dict.style), | |||
"css": get_print_style(frappe.form_dict.style, frappe.form_dict.format), | |||
"comment": frappe.session.user, | |||
"title": doc.get(meta.title_field) if meta.title_field else doc.name | |||
} | |||
@frappe.whitelist() | |||
def get_html(doc, name=None, print_format=None, meta=None, | |||
no_letterhead=None, trigger_print=False): | |||
@@ -108,6 +107,15 @@ def get_html(doc, name=None, print_format=None, meta=None, | |||
return html | |||
@frappe.whitelist() | |||
def get_html_and_style(doc, name=None, print_format=None, meta=None, | |||
no_letterhead=None, trigger_print=False): | |||
return { | |||
"html": get_html(doc, name=name, print_format=print_format, meta=meta, | |||
no_letterhead=no_letterhead, trigger_print=trigger_print), | |||
"style": get_print_style(print_format=print_format) | |||
} | |||
@frappe.whitelist() | |||
def download_pdf(doctype, name, format=None): | |||
html = frappe.get_print(doctype, name, format) | |||
@@ -241,13 +249,17 @@ def has_value(df, doc): | |||
return True | |||
def get_print_style(style=None): | |||
def get_print_style(style=None, print_format=None, for_legacy=False): | |||
print_settings = frappe.get_doc("Print Settings") | |||
if not style: | |||
style = print_settings.print_style or "Standard" | |||
context = {"print_settings": print_settings, "print_style": style} | |||
context = { | |||
"print_settings": print_settings, | |||
"print_style": style, | |||
"font": get_font(print_settings, print_format, for_legacy) | |||
} | |||
css = frappe.get_template("templates/styles/standard.css").render(context) | |||
@@ -265,6 +277,26 @@ def get_print_style(style=None): | |||
return css | |||
def get_font(print_settings, print_format=None, for_legacy=False): | |||
default = '"Helvetica Neue", Helvetica, Arial, "Open Sans", sans-serif' | |||
if for_legacy: | |||
return default | |||
font = None | |||
if print_format and print_format not in ("Standard", standard_format): | |||
print_format = frappe.get_doc("Print Format", print_format) | |||
if print_format.font and print_format.font!="Default": | |||
font = '{0}, sans-serif'.format(print_format.font) | |||
if not font: | |||
if print_settings.font and print_settings.font!="Default": | |||
font = '{0}, sans-serif'.format(print_settings.font) | |||
else: | |||
font = default | |||
return font | |||
def get_visible_columns(data, table_meta, df): | |||
"""Returns list of visible columns based on print_hide and if all columns have value.""" | |||
columns = [] | |||
@@ -39,8 +39,8 @@ | |||
} | |||
.print-format { | |||
font-size: 9pt; | |||
font-family: "Helvetica Neue", Helvetica, Arial, "Open Sans", sans-serif; | |||
font-size: {{ print_settings.font_size|flt or 9 }}pt; | |||
font-family: {{ font }}; | |||
-webkit-print-color-adjust:exact; | |||
} | |||
@@ -85,7 +85,3 @@ table.no-border, table.no-border td { | |||
.print-format p { | |||
margin: 3px 0px 3px; | |||
} | |||
.print-format { | |||
font-size: {{ print_settings.font_size|flt or 9 }}pt; | |||
} |