POS UI Extensions 2026-07 引入了 Printing API(shopify.printing),使扩展程序能够通过 getPrinters() 发现硬件打印机,并通过 print() 将文档直接发送到已连接的热敏票据打印机。
Printing API 取代了现已弃用的 shopify.print。无需立即采取行动;请在采用 2026-07 时计划迁移。
变更内容
- shopify.printing.getPrinters() 返回设备可用的硬件打印机。每台打印机都包含一个 id、name 和 connected 状态。
- shopify.printing.print(src, options?) 在 src 处打印文档。如果省略 options.printer,系统将打开打印对话框。如果传入由 getPrinters() 返回的打印机,则文档将直接打印到该打印机,而不会显示对话框。
src 必须是附加到应用 application_url 的相对路径,或是同一源上的完整 URL。文档使用扩展程序的会话令牌进行获取。
热敏票据打印机可以直接渲染 HTML 和图片。PDF 需要系统打印对话框:如果当 src 指向 PDF 时传入 printer,shopify.printing.print 将抛出错误。对于 PDF,请始终省略 options.printer 并依赖系统打印对话框。
以前,shopify.print 只能打开系统打印对话框,而无法针对专用热敏票据打印机。早期版本的 POS UI Extensions API 保持不变。
注意: 硬件打印机发现功能需要 Shopify POS 版本 11.11.0 或更高版本。在更早的版本中,即使配对了热敏票据打印机,<code><span class="PreventFireFoxApplyingGapToWBR">get<wbr/>Printers()</span></code> 也会返回空数组。这不影响系统打印对话框,后者仍然可用。
始终通过回退到系统打印对话框来处理空数组的情况。这也涵盖了没有收据打印机的商户:
const printers = await shopify.printing.getPrinters(); const receiptPrinter = printers.find((printer) => printer.connected); if (receiptPrinter) { await shopify.printing.print('/print/receipt', {printer: receiptPrinter}); } else { await shopify.printing.print('/print/receipt'); }Printing API 适用于所有 POS UI 扩展目标。要验证直接打印功能,请在配备 POS 11.11.0 或更高版本及已配对热敏票据打印机的开发商店中进行测试。调用 shopify.printing.print 并传入来自 getPrinters() 的打印机;如果作业在没有对话框的情况下成功打印,则说明直接打印功能正常。
相关文档
- Printing API 参考
- Print API 参考(已弃用)

