# 原生打印
直接以打印机的原生语言发送一串命令给打印机被称为原生打印。
许多热敏打印机需要发送这些原始命令才能执行如条码打印、收据打印、标签打印等功能。原生打印在大多数情况下绕过了打印机的驱动程序,使它们非常快速且可靠。原生打印还能够执行一些高级功能,如切断收据纸、弹出收银抽屉等。
# 1. 在ERPNext中设置原生打印
# 1.1 在客户端计算机上安装QZ Tray应用程序
在连接了您的热敏打印机的计算机上下载并安装QZ Tray应用程序。这个应用程序可以在其官方网站上找到。目前,QZ Tray支持Windows、macOS和Linux。在安装过程中,如果尚未安装Java,系统会提示您安装Java以完成安装。
有关安装QZ Tray应用程序的进一步说明可以在这里找到。
# 1.2 创建原生命令打印格式
为了能够向打印机发送原生命令,您需要首先在原生命令中创建一个打印格式。原生命令中使用的是和HTML自定义打印格式一样的Jinja模板语言。
创建原生打印的新打印格式:
- 转到打印格式列表:首页 > 设置 > 打印 > 打印格式
- 点击新建。
- 选择相关的DocType。
- 勾选自定义格式和原生打印选项。
- 在原生命令字段中填写要发送给打印机的所需原生命令。
- 点击保存。

目前,任何基于字符串的打印机语言都可以在打印格式的原生命令字段中使用。编写原生命令需要了解打印机制造商提供的打印机原生语言。请参阅打印机制造商提供的开发者手册,了解如何编写他们的原生命令。
# 1.3 在打印设置中启用原生打印
要启用原生打印:
- 转到:首页 > 设置 > 打印 > 打印设置 > 原生打印。
- 勾选启用原生打印选项。
- 保存。
# 2. 在ERPNext中使用原生打印的方法
有两种方法可以向打印机发送原生打印命令。
# 2.1 点击打印视图页面上的打印
从文档打印视图打印原生命令打印格式:
选择适当的打印格式。对于原生命令的打印格式,“没有可用的预览”消息会显示在打印预览的位置。
点击打印按钮。
请允许QZ Tray的连接提示,这是您发起的操作(快捷键:Alt + A)。
您可能被要求选择“打印格式 - 打印机映射”。
- 这个映射用于将打印命令发送到适当的打印机。
- 打印机需要安装在您的计算机上才能将其映射到打印格式。

- 这个映射存储在同一台计算机上,并且需要在每台客户端机器上设置。
- 您也可以通过点击打印机设置按钮来编辑这个。

# 2.2 从客户端脚本调用原生打印函数
通常要求在某个事件(如提交、保存、修改等)上发出打印命令。您可以编写一个客户端脚本来为您执行此操作。
以下是相关的原生打印函数:
- 函数:
frappe.ui.form.qz_connect- 一个连接包装器,用于与QZ Tray应用程序建立连接。
- 返回一个承诺,成功建立连接时解决。
- 允许活动和非活动连接解决。因此,每次发送命令之前都可以调用它。
- 使用示例:
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);
});
2
3
4
5
6
7
8
这里,qz是由qz-tray.js库提供的全局对象。
函数:
frappe.ui.form.qz_get_printer_list- 提供QZ Tray应用程序可用的打印机列表
- 返回一个承诺,解决为打印机列表
使用示例:
frappe.ui.form.qz_get_printer_list().then(
// 获取打印机列表后所需的操作。
// 注意:打印机列表是一个字符串数组。
);
2
3
4
函数:
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。
- 打印设置
- 打印格式
- 打印样式
