我编写了一个将 ZPLII 数据打印到 Zebra 打印机的函数,如下所示
var
St : string;
StartDocument(DocName);
StartPage;
Try
For I:=0 to DataToPrint.Count-1 do
Begin
St:=FormatPrintLine(I);
Try
Escape(PrinterHandle,PASSTHROUGH,Length(St),PAnsiChar(St),Nil);
Except on E:Exception do
begin
GetWin32ApiErrorMessage(FErrorCode,FErrorText);
Raise EPrinter.CreateFmt('Printer Write Error %d'+#13+
'While Printing To '+PrinterName+#13+
ErrorText,[ErrorCode]);
end;
End;
end;
Finally
EndPage;
EndDocument;
我已经通过使用命令提示符从文本文件中打印标签数据来测试标签数据,并且标签打印正确,但我无法从我的应用程序中打印它。如果我暂停打印机,我可以看到作业被发送到打印机并且作业的大小是 2.12Kb,大致是标签应该的大小,但没有打印出来。Zebra 打印机上的数据指示灯亮起,但不会打印任何内容。我已经用我们拥有的两台 Zebra 打印机进行了尝试,所以这不是打印机问题。我在这一点上的猜测是,也许程序没有将整个标签数据发送到打印机并且永远不会收到结尾,但是当我跟踪发送请求时,一切都被正确发送。打印机还显示该作业的标签页数为 0/0,但我不明白为什么它不发送标签。除了 ^XZ 终止字符之外,标签数据的末尾是否还有一些特殊的内容?如果有帮助,我也在使用 Delphi XE3。