从版本 12 开始引入
直接以打印机原生语言向打印机发送一串命令,这被称为原始打印。
许多热敏打印机需要接收这些原始命令才能执行诸如条码打印、收据打印、标签打印等功能。原始打印在大多数情况下会绕过打印机驱动程序,因此速度非常快且可靠。原始打印还能实现一些高级功能,例如切纸、弹出钱箱等。
1. 在 ERPNext 中设置原始打印
1.1 在客户端计算机上安装 QZ Tray 应用程序
在连接热敏打印机的计算机上下载并安装 QZ Tray 应用程序。此应用程序可在其官方网站找到。目前,QZ Tray 支持 Windows、macOS 和 Linux。安装过程中,如果尚未安装 Java,系统会提示您安装,请安装 Java 以完成安装。
有关安装 QZ Tray 应用程序的更多说明,请参见此处。
1.2 创建原始命令打印格式
要能够向打印机发送原始命令,您需要首先创建一个使用原始命令的打印格式。与 HTML 自定义打印格式一样,原始命令中使用 Jinja 模板语言。
要为原始打印创建新的打印格式:
- 转到打印格式列表:首页 > 设置 > 打印 > 打印格式
- 点击新建。
- 选择相关的文档类型。
- 勾选自定义格式和原始打印选项。
- 在原始命令字段中填写要发送给打印机的所需原始命令。
- 点击保存。
目前,任何基于字符串的打印机语言都可以在打印格式的 Raw Commands 字段中使用。编写原始命令需要了解打印机厂商提供的打印机原生语言。请参考打印机厂商提供的开发手册,了解如何编写其原生命令。
1.3 在打印设置中启用原始打印
要启用原始打印:
- 转到:首页 > 设置 > 打印 > 打印设置 > 原始打印。
- 勾选启用原始打印选项。
- 保存。
2. 在 ERPNext 中使用原始打印的方法
有两种方法可以将原始打印命令发送到您的打印机。
2.1 在打印预览页面点击打印
从文档打印预览页面打印原始命令打印格式:
- 选择适当的打印格式。对于使用原始命令的打印格式,打印预览位置会显示“无可用预览”消息。
- 点击打印按钮。
- 请允许 QZ Tray 针对您启动的操作弹出连接提示(键盘快捷键:Alt + A)。
- 系统可能会要求您选择“打印格式 – 打印机映射”。
- 此映射用于将打印命令发送到相应的打印机。
- 打印机需要安装在您的计算机上,才能将其映射到打印格式。
- 此映射存储在本地计算机上,并且需要在每台客户端机器上进行设置。
- 您也可以通过点击打印机设置按钮来编辑此映射。
2.2 从客户端脚本调用原始打印函数
通常需要在某个事件(如提交、保存、修订等)发生时发出打印命令。可以编写一个客户端脚本为您执行此操作。
以下是相关的原始打印函数:
- 函数:
frappe.ui.form.qz_connect
- 一个连接包装器,用于与 QZ Tray 应用程序建立连接。
- 返回一个 promise,在成功建立连接时解决。
- 允许活动和非活动连接无论如何都能解决。因此,每次发送命令前都可以调用它。
- 使用示例:
frappe.ui.form.qz_connect()
.then(function () {
return qz.print(config, data);
})
.then(frappe.ui.form.qz_success)
.catch(err => {
frappe.ui.form.qz_fail(err);
});
这里,qz 是由 qz-tray.js 库提供的全局对象。
- 函数:
frappe.ui.form.qz_get_printer_list
- 提供 QZ Tray 应用程序可用的打印机列表。
- 返回一个 promise,该 promise 解决为一个打印机列表。
使用示例:
frappe.ui.form.qz_get_printer_list().then(
// Required action on getting the printer list.
// Note: Printer list is a array of strings.
);
- 函数:
frappe.ui.form.qz_success
- 向用户显示“打印已发送到打印机!”的提示。可以在打印命令成功后调用。
- 函数:
frappe.ui.form.qz_fail
- 向用户显示错误消息。应在 QZ Tray 连接失败时调用。
您也可以通过 qz 对象直接访问 qz-tray.js 库提供的函数。点击此处查看 qz-tray.js 库文档。注意:qz 对象仅在首次调用 frappe.ui.form.qz_connect 后才初始化。如果您在此之前需要 qz 对象,可以使用 frappe.ui.form.qz_init。
3. 相关主题
- 打印设置
- 打印格式
- 打印样式