# 打印机设置

打印机设置位于 POS 的 **设置 > 打印机** 中。每台设备都会管理自己的打印机配置——打印机会存储在本地，不会在设备之间同步。

要打印到不在此设备上的打印机？

本页介绍通过 USB、Bluetooth 或本地网络连接到收银台的打印机。对于位于其他房间或地点的打印机，或希望所有设备共享的打印机，请参阅[云打印](/zh-CN/receipts/cloud-printing.md)。

## 各平台支持的打印机[​](#supported-printers-by-platform "直接链接到 各平台支持的打印机")

**添加打印机**表单会根据正在使用的应用进行调整——每个平台只会显示其实际可用的连接方式和选项。

| 平台             | 支持的打印机                           | 连接方式             |
| ---------------- | -------------------------------------- | -------------------- |
| **Web 应用**     | 内置 Web 服务器的 Epson 和 Star 打印机 | 网络 (HTTP)          |
| **桌面应用**     | 任何网络收据打印机                     | 网络 (raw TCP)       |
| **iOS 应用**     | Epson 和 Star                          | 网络、Bluetooth      |
| **Android 应用** | Epson 和 Star                          | 网络、Bluetooth、USB |

为什么 Web 上仅支持 Epson 和 Star？

Web 浏览器无法打开原始 TCP 连接。Epson 和 Star 收据打印机内置 Web 服务器，可通过 HTTP 接收打印作业——这是从浏览器发送 ESC/POS 命令的唯一方式。桌面应用没有此限制，因为它可以直接通过 TCP 连接。

在**移动应用**上，Bluetooth 和 USB 打印通过 Epson 与 Star 的官方 SDK 进行，因此这些连接也需要 Epson 或 Star 打印机。通用打印机仅可通过网络使用。

## 添加打印机[​](#adding-a-printer "直接链接到 添加打印机")

1

#### 打开打印机设置

在 POS 中前往**设置 > 打印机**。如果尚未配置任何打印机，会看到一个空状态页面，其中有一个**添加打印机**按钮。每台打印机都有一个**打印机名称**——只是一个标签，会自动填入为“收据打印机”（然后是“收据打印机 2”，依此类推）——可将其改为任意便于区分打印机的名称。

2

#### 选择打印机连接方式

此步骤会因平台而异：

* **Web 应用** — 选择 **供应商**：Epson 或 Star。这是 Web 上的首选，因为浏览器只能访问这两个品牌的内置 Web 服务器。
* **桌面应用** — 打印机通过网络连接；这里无需额外选择。
* **移动应用** — 选择 **连接类型**: **网络**, **蓝牙**，或 **USB** （USB 仅适用于 Android）。下方字段会根据你的选择相应变化。

3

#### 识别打印机

**网络打印机** — 输入 **IP 地址**（例如 `192.168.1.100`）。WCPOS 会探测该地址，以检测它是 Epson 还是 Star 设备，并自动填充端口、命令语言和供应商。检测完成后，你会看到“已检测到：Epson”或“已检测到：Star”标签。在 Web 应用上，它还会显示将要连接的确切端点 URL。

**蓝牙或 USB 打印机**（移动端）— 从已发现设备列表中选择你的打印机。选择设备后会自动填充其名称和供应商。如果你的打印机尚未列出，请点按 **扫描打印机**（蓝牙）或 **刷新**（USB）。

如果自动检测未能完全正确，可在 **高级设置** 下调整所有相关选项。

4

#### 保存并测试

点击 **保存**。WCPOS 会先发送一次 **测试打印**，只有成功后才会保存该打印机。

测试打印是一份简短诊断内容，包括编号列标尺、居中的普通字号和双倍字号文本、左右对齐行，以及切纸。它用于确认纸张宽度、对齐、字号和切纸都已正确配置，而不仅仅是确认打印机可以访问。

如果测试失败，你会看到错误信息，并可使用 **不测试直接保存** 选项仍然保存该配置文件。

## 连接类型（移动应用）[​](#connection-types-mobile-apps "直接链接到 连接类型（移动应用）")

在 iOS 和 Android 应用上，打印机可通过三种方式连接。在添加打印机表单顶部选择 **连接类型**，连接字段会相应更新。

### 网络[​](#network "直接链接到 网络")

打印机与你的设备位于同一个 Wi-Fi 网络。请输入其 IP 地址 — 请参阅[查找打印机的 IP 地址](#finding-your-printers-ip-address)。网络打印机可以是 Epson、Star 或通用打印机。

### 蓝牙[​](#bluetooth "直接链接到 蓝牙")

打印机已通过蓝牙与你的设备配对。点按**扫描打印机**，然后从列表中选择你的打印机 — 其名称和厂商会自动填入。蓝牙打印使用 Epson 和 Star 的原生 SDK，因此打印机必须是 **Epson 或 Star** 型号。

### USB（仅限 Android）[​](#usb-android-only "直接链接到 USB（仅限 Android）")

打印机通过 USB 线缆连接。点按**刷新**，然后从已连接设备列表中选择它。与蓝牙一样，USB 打印需要 **Epson 或 Star** 打印机。iOS 不提供通用 USB 外设支持，因此此选项仅在 Android 上显示。

注意

**端口**设置仅适用于网络打印机 — 对蓝牙和 USB 连接会隐藏。

## 高级设置[​](#advanced-settings "直接链接到 高级设置")

展开**高级设置**以微调打印机配置。知道厂商后，大多数设置会自动填入。

| 设置                 | 选项                                                              | 描述                                                                                                                                                                        |
| -------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **厂商**             | Epson、Star、通用                                                 | 打印机制造商。在**网页版应用**中，厂商是表单顶部的主要选择（仅 Epson 或 Star），而不是高级设置。通用选项适用于桌面和移动应用中的**网络**打印机，但不适用于蓝牙或 USB 连接。 |
| **端口**             | 自动填充                                                          | 打印机的网络端口。仅适用于网络连接，Bluetooth 和 USB 时隐藏。                                                                                                               |
| **语言**             | ESC/POS, StarPRNT, Star Line Mode                                 | 打印机使用的命令协议。根据检测到的供应商自动填充。                                                                                                                          |
| **打印机文本宽度**   | 58mm（32 个字符）, 80mm 标准（42 个字符）, 80mm 宽版（48 个字符） | 一行可容纳的字符数。请与纸张和打印机匹配：大多数 80mm 打印机每行 42 个字符，部分为 48 个。                                                                                  |
| **完整收据栅格图像** | 关 / 开                                                           | 将整张收据作为图像而不是文本打印。请参阅下方的[完整收据栅格图像](#full-receipt-raster)。                                                                                    |

## 打印机选项[​](#printer-options "直接链接到 打印机选项")

这些开关位于添加打印机表单的底部：

| 选项             | 描述                                                       |
| ---------------- | ---------------------------------------------------------- |
| **自动切纸**     | 每张收据打印后自动切纸                                     |
| **自动打开钱箱** | 打印后发送触发命令，打开已连接的钱箱                       |
| **设为默认**     | 将此打印机设为默认打印机，用于未路由到特定打印机的任何收据 |

正在查找“结账后自动打印”？

销售完成时自动打印收据是**购物车设置**，不是打印机设置。请在 POS 购物车设置中开启**自动打印收据**。使用*哪台*打印机由默认打印机以及按模板设置的打印机路由决定。

## 打印路由[​](#print-routing "直接链接到 打印路由")

如果使用多个模板，例如一张热敏收据**和**一张 A4 发票，打印路由会决定每个模板打印到哪台打印机。路由分为三层，并按以下顺序检查：

1. **按任务覆盖。** 在收据界面，模板切换器旁边有一个打印机下拉菜单。在这里选择打印机会覆盖该次打印任务的所有其他设置。切换模板会将其重置回**自动**。

2. **设置覆盖。** 前往**设置 → 打印路由**，为每个模板分配特定打印机。例如，将热敏收据路由到 Epson 网络打印机，将 HTML 发票路由到系统打印对话框。将模板重新设为**自动**即可移除覆盖设置。

3. **自动匹配。** 未设置覆盖时，WCPOS 会自动匹配：

   <!-- -->

   * **热敏模板**会路由到字符宽度匹配的热敏打印机。58mm 热敏模板优先使用 32 列打印机；80mm 模板优先使用 42 或 48 列打印机。
   * **HTML 模板**会路由到系统打印对话框。
   * 如果多台打印机都匹配，则使用**默认**打印机。

如果手动将模板发送到不兼容的打印机，例如将热敏模板发送到系统对话框，收据界面会显示琥珀色的**不匹配警告**。打印仍会继续，但输出可能无法正确渲染。

路由覆盖设置会**按设备**存储。每台 iPad、手机或计算机都会管理自己的路由，不会进行服务器端同步。

注意

仅在添加至少一台打印机后，打印路由设置页面才会显示。未配置打印机时，每个模板都会默认使用系统打印对话框。

## 完整收据光栅化[​](#full-receipt-raster "直接链接到 完整收据光栅化")

默认情况下，WCPOS 会将收据以**文本**形式发送到热敏打印机：速度快、体积小、清晰，并使用打印机的内置字体。问题是：热敏打印机字体只覆盖有限的字符集。打印机没有对应字体的文字体系（许多非拉丁字母、从右到左的文本、某些符号）可能会打印为空白方框或乱码。

**完整收据光栅化**可以解决此问题。启用后，WCPOS 会将整张收据渲染为图像，并将该图像发送到打印机，因此打印结果会与屏幕显示完全一致，适用于任何语言或文字体系。

在每台打印机的**高级设置**下启用。需要了解的事项：

* \*\*速度较慢。\*\*图像比一行文本大得多，因此收据发送和打印所需时间更长。
* \*\*仅在需要时使用。\*\*如果收据以文本形式打印正常，请保持关闭。
* 它适用于任何连接方式（网络、蓝牙、USB）的热敏打印机。不适用于系统打印对话框，因为系统打印对话框已经基于整页渲染进行打印。

## 发现打印机[​](#discovering-printers "直接链接到 发现打印机")

在**移动应用**中，添加打印机表单会列出附近可用于**蓝牙**（iOS 和 Android）以及 **USB**（仅 Android）连接的打印机：点击**扫描打印机**或**刷新**，然后从列表中选择你的打印机。其名称和供应商会自动填入。

对于任何平台上的**网络**打印机，请直接输入 IP 地址。请参阅下方的[查找打印机的 IP 地址](#finding-your-printers-ip-address)。Web 应用没有网络发现功能（浏览器无法扫描网络），因此始终使用手动输入 IP。

## 查找打印机的 IP 地址[​](#finding-your-printers-ip-address "直接链接到 查找打印机的 IP 地址")

大多数收据打印机都可以打印自检页，其中包含 IP 地址：

* **Epson**：开机时按住进纸按钮
* **Star**：开机状态下按住进纸按钮 5 秒

或者，查看路由器的已连接设备列表，或使用打印机的配置工具。

### 建议使用静态 IP[​](#static-ip-recommended "直接链接到 建议使用静态 IP")

收据打印机应使用**静态 IP 地址**，以防止打印机重启后地址发生变化。可通过以下任一方式配置：

* 在打印机内置的 Web 界面中（通常可通过以下地址访问 `http://<printer-ip>`）
* 在路由器的 DHCP 设置中（为打印机的 MAC 地址分配保留 IP）

## Epson 打印机[​](#epson-printers "直接链接到 Epson 打印机")

支持 ePOS 的 Epson 打印机通过 HTTP 通信。WCPOS 会向打印机内置的 Web 服务器发送 SOAP/XML 请求。

**连接详情：**

* 端口 `8008` (HTTP) 或 `8043` (HTTPS)
* 端点：`/cgi-bin/epos/service.cgi`

**已确认可用的型号：**

* Epson TM-T70-i 2（网络）
* Epson TM-m30iii（使用 Printus 中间件）

提示

请确保 Epson 打印机已在其配置中启用 ePOS。访问打印机的 Web 界面： `http://<printer-ip>` 以检查并启用 ePOS 设置。

在**移动应用**上，Epson 打印机也可以通过 Epson 原生 SDK 使用 Bluetooth 或 USB 连接，无需 IP 地址或 ePOS Web 服务器。

## Star 打印机[​](#star-printers "直接链接到 Star 打印机")

支持 WebPRNT 的 Star 打印机通过 HTTP 通信。WCPOS 会向 Star WebPRNT 端点发送命令。

**连接详情：**

* HTTPS 或 HTTP
* 端点: `/StarWebPRNT/SendMessage`

在**移动应用**中，Star 打印机还可以通过 Star 的原生 SDK 使用 Bluetooth 或 USB 连接。

## 通用打印机[​](#generic-printers "直接链接到 通用打印机")

**桌面应用**支持通过原始 TCP 连接任何网络收据打印机。输入打印机的 IP 地址和端口（通常为 `9100`）。只要打印机接受 ESC/POS 命令，无论制造商是谁，此方式都适用于大多数热敏打印机。

在**移动应用**中，也支持通用打印机，但仅限**网络**连接，不支持 Bluetooth 或 USB（这些连接需要 Epson 或 Star 打印机）。**Web 应用**完全不支持通用打印机。

## 钱箱[​](#cash-drawers "直接链接到 钱箱")

连接到收据打印机的钱箱可以在每次销售后自动触发：

1. 在打印机选项中启用**自动打开钱箱**
2. POS 会在打印后发送 ESC/POS 弹开命令

注意

现金抽屉控制需要热敏打印机配置文件，浏览器打印对话框无法触发现金抽屉。

## 故障排除[​](#troubleshooting "直接链接到 故障排除")

设置期间未检测到打印机

* 确认打印机已开机，并且与您的设备连接到同一网络
* 对于网络打印机：检查 IP 地址是否正确（打印自检页）
* 对于 Web 应用：确认打印机是支持 ePOS/WebPRNT 的 Epson 或 Star 型号
* 对于桌面应用：尝试使用端口 9100 的通用供应商选项
* 对于 Bluetooth：先在设备的 Bluetooth 设置中配对打印机，然后点击 **扫描打印机**
* 对于 USB（Android）：检查线缆；如果出现 USB 权限提示，请批准
* 检查是否有防火墙阻止连接

已检测到打印机，但没有打印内容

* 检查纸卷——可能已用完或卡纸
* 确认 **打印机文本宽度** 设置与你的纸张（58mm 或 80mm）匹配
* 尝试从打印机本身打印自检页，以确认打印机可以正常工作
* 检查命令语言是否与你的打印机匹配（Epson 使用 ESC/POS，Star 使用 StarPRNT 或 Star Line Mode）

收据乱码或字符不正确

* 命令语言设置可能不正确——请尝试在 ESC/POS、StarPRNT 和 Star Line Mode 之间切换
* 确保 **打印机文本宽度** 设置正确
* 如果收据使用非拉丁文字或从右到左的语言，请在高级设置中启用 **完整收据光栅**——它会将收据作为图像打印，因此任何语言都能正确呈现

钱箱无法打开

* 确认已在打印机选项中启用 **自动打开钱箱**
* 检查钱箱是否连接到打印机的 DK 端口（而不是单独的电源）
* 并非所有打印机都支持钱箱弹开命令——请查阅打印机文档

无法从 Web 应用连接

* Web 应用只能连接带有内置 Web 服务器的 Epson 和 Star 打印机
* Web 端不支持通用打印机和 USB 打印机——请改用桌面应用或移动应用
* 如果站点使用 HTTPS，而打印机只支持 HTTP，浏览器可能会将该连接作为混合内容拦截

蓝牙打印机无法连接（移动端）

* 在 WCPOS 中添加打印机之前，请先在设备的系统蓝牙设置中配对打印机
* 蓝牙打印仅支持 Epson 和 Star 打印机——不支持通用蓝牙打印机
* 如果打印机未显示在列表中，请再次点按**扫描打印机**，并确保打印机已开机且在连接范围内
