如何在Frappe自定义打印格式中从API获取图片并重写打印类?
自定义打印类实现外部Base64图片加载
- 完全可以通过自定义打印处理逻辑实现需求,无需修改框架核心文件,建议在项目代码中封装专属的打印类来统筹图片获取与模板渲染。
- 核心实现思路:
- 预加载图片数据:在渲染Jinja模板前,调用API拉取所有需要的Base64图片数据,将其注入模板上下文。模板中直接使用
<img src="data:image/png;base64,{{ image_base64 }}">格式渲染图片即可。 - 自定义打印类文件:根据项目结构自行命名,比如
print_service.py、print_handler.py,在这个类中封装打印触发时的全流程逻辑:表单数据整合、图片API请求、Jinja模板渲染。
- 预加载图片数据:在渲染Jinja模板前,调用API拉取所有需要的Base64图片数据,将其注入模板上下文。模板中直接使用
- 相比localStorage方案,后端预获取图片再渲染模板的方式更稳定,能避免前端跨域、API请求延迟等问题,确保打印页面加载完整。
内容的提问来源于stack exchange,提问作者Naqib007
相关产品推荐
相关产品推荐

