打印
HWD POS 中打印的工作原理(CUPS、Chrome/Chromium 和 hwpos-print 服务)以及如何配置。
打印功能默认安装(WITH_PRINTING=yes)。在不需要打印的服务器上(例如仅作数据库的服务器),使用 WITH_PRINTING=no 跳过。
组件
| 组件 | 用途 | 缺失时 |
|---|---|---|
| CUPS | 在 A4 打印机(喷墨/激光)上以及通过 IPP/AirPrint 的网络打印机上打印。 | 热敏打印机(ESC/POS,80 mm 和 58 mm)仍可正常工作:它们不经过 CUPS。 |
| Google Chrome(或 Chromium) | 以无界面(headless)方式将完整的 A4 单据(带版式的发票和报价单)转换为 PDF。 | 小票式打印仍可正常工作;无法生成带设计版式的 A4 单据。 |
hwpos-print 服务 | 逐一打印系统放入队列的单据。 | 什么都无法打印。 |
hwpos-plugins 服务 | 运行插件的后台任务(例如在服务器端向客户发送邮件,使销售人员无需等待)。 | 插件的后台任务不会运行。 |
两个服务都必须处于运行中(active)并已启用(enabled,开机自启)状态。安装程序的最终摘要会检查它们。
检查打印服务
sudo systemctl status hwpos-print
sudo systemctl status hwpos-plugins实时查看打印活动:
sudo journalctl -u hwpos-print -f也可以在 hwdpanel 中启动、停止和重启打印 worker(选项 4–6)、查看日志(选项 18)或重新安装后台服务(选项 16)。
服务用户权限
Web 服务器用户(Ubuntu/Debian 上为 www-data)必须属于以下用户组:
lp,用于访问 USB 打印机;lpadmin,用于管理 IPP 队列。
安装程序会自动完成此设置。
添加打印机
在 HWD POS 中,进入 «Sistema → Impresoras»(系统 → 打印机):
- 添加每台打印机。
- 选择其纸张:80 mm 或 58 mm 热敏纸,或 «documento A4»(A4 单据)。
- 在同一界面中执行 «prueba de impresión»(测试打印)。
如果 A4 单据打印出乱码,说明该 A4 打印机被设置成了热敏打印机。请将其纸张改为 «documento A4»。
A4 PDF 单据生成失败
在 Ubuntu/Debian(amd64)上,安装程序会通过官方 .deb 软件包安装 Google Chrome。Ubuntu 的 chromium-browser 只是一个重定向到 Snap 的占位程序,没有 snapd 时,即使命令存在也无法工作。安装程序摘要和 check.sh 会以 Web 服务器用户身份实际运行它(--version)进行验证,而不仅仅检查命令是否存在。
如果 A4 单据的 PDF 生成或打印失败:
检查浏览器:
sudo -u www-data google-chrome-stable --version如果没有响应,请安装它:
curl -fsSLO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt-get install -y ./google-chrome-stable_current_amd64.deb也可以使用 check.sh 中的 Chrome/Chromium 选项。
如果使用其他浏览器,请在 HWD POS 中打开 «Ajustes»(设置),并在 chrome_path 中设置其路径。
虚拟化服务器(Proxmox)
- 虚拟机(KVM)与 LXC 容器:LXC 容器更轻量,但要将 USB 打印机直通给它,需要特权容器并绑定挂载(bind mount)
/dev/usb/lp0。在虚拟机中,请使用 Proxmox 的 USB 直通(Hardware → Add → USB Device)。 - 最简单的方案:网络(IP)打印机。 完全避免 USB 直通。worker 通过 9100 端口套接字(热敏)或 IPP/AirPrint 队列(A4)打印。推荐用于虚拟化环境。
- 门店的典型资源配置:2 个 vCPU、2–4 GB 内存、20 GB 磁盘。
- 为虚拟机或容器在局域网中分配一个固定 IP,以便终端和平板连接。