Windows 打印后台打印驱动程序 - 状态请求发送不正确



我的 WinForms c# 应用程序广泛使用 Zebra 标签打印机,我们同时使用 EPL 和 ZPL 打印模式。 经过大量测试,我们发现当Windows打印后台处理程序向打印机发送命令时,它会在打印后立即向同一打印机发送状态命令。 它以某种方式从驱动程序或打印机本身知道状态命令是什么,即"^HS"。

问题是当我们将打印机切换到 EPL 模式时,会发送状态命令,但它是 ZPL 格式,打印机没有响应。 这种缺少响应会导致 Windows 打印后台处理程序在等待响应时出现明显延迟。

我正在使用以下链接中的标准代码进行打印。

https://github.com/andyyou/SendToPrinter/blob/master/Printer/RawPrinterHelper.cs

当我们使用 Zebra 直连 SDK 时,我们可以直接与打印机通信,忽略 Windows 打印后台处理程序,并且不会发送此类状态命令。 这是我们想要的行为,但 Zebra SDK 不适合我们的目的。

有人知道我们如何改变窗口后台处理程序的这种行为吗?

示例代码,使用上面链接中的 RawPrinterHelper:

//Standard Zebra SGD to set ZPL language
string SetZPL = "! U1 setvar "device.languages" "zpl"n";
//Standard Zebra SGD to set EPL language
string SetEPL = "! U1 setvar "device.languages" "epl"n";
//Push to ensure printer is in ZPL mode
RawPrinterHelper.SendStringToPrinter(printerName, SetZPL);
//Set printer into EPL mode - This is where the delay occurs
RawPrinterHelper.SendStringToPrinter(printerName, SetEPL);

过去当我使用 ZPL 作为打印解决方案时,我的字符串必须以

^XA

并以

^XZ

有一个在线编辑器,您可以在其中实时使用ZPL代码。我相信当你使用这段代码时,它只是直接写向打印机。不过我对 EPL 不太熟悉,我不确定为什么这会更慢。

很难知道为什么会有延迟,或者 EPL 是否

本质上更慢

最新更新