Hello, everyone.
I added a text field to Sales Invoice with a generated base64 image of the barcode (the barcode is a requirement of Electronic Invoice in my country), then I created a Custom Print Format and added a section with the following HTML:
<img src="data:image/png;base64, {{ doc.barcode }}">
When tried to save, I get the following error:
Traceback (most recent call last):
File "/home/erp/erpnext/apps/frappe/frappe/app.py", line 56, in application
response = frappe.handler.handle()
File "/home/erp/erpnext/apps/frappe/frappe/handler.py", line 21, in handle
data = execute_cmd(cmd)
File "/home/erp/erpnext/apps/frappe/frappe/handler.py", line 52, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "/home/erp/erpnext/apps/frappe/frappe/__init__.py", line 922, in call
return fn(*args, **newargs)
File "/home/erp/erpnext/apps/frappe/frappe/client.py", line 107, in set_value
doc.save()
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 230, in save
return self._save(*args, **kwargs)
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 263, in _save
self.run_before_save_methods()
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 772, in run_before_save_methods
self.run_method("validate")
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 666, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 887, in composer
return composed(self, method, *args, **kwargs)
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 870, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File "/home/erp/erpnext/apps/frappe/frappe/model/document.py", line 660, in <lambda>
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File "/home/erp/erpnext/apps/frappe/frappe/printing/doctype/print_format/print_format.py", line 25, in validate
self.extract_images()
File "/home/erp/erpnext/apps/frappe/frappe/printing/doctype/print_format/print_format.py", line 39, in extract_images
df['options'] = extract_images_from_html(self, df['options'])
File "/home/erp/erpnext/apps/frappe/frappe/utils/file_manager.py", line 134, in extract_images_from_html
content = re.sub('<img[^>]*src\s*=\s*["\'](?=data:)(.*?)["\']', _save_file, content)
File "/home/erp/erpnext/env/lib/python2.7/re.py", line 155, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/home/erp/erpnext/apps/frappe/frappe/utils/file_manager.py", line 127, in _save_file
file_url = save_file(filename, content, doctype, name, decode=True).get("file_url")
File "/home/erp/erpnext/apps/frappe/frappe/utils/file_manager.py", line 155, in save_file
content = base64.b64decode(content)
File "/usr/lib/python2.7/base64.py", line 78, in b64decode
raise TypeError(msg)
TypeError: Incorrect padding
Watching the code it seems isn’t possibly add a dynamic image in this way, only works for static content.
Thanks