就目前而言,您正在使用的类(PrintDocument)不理解打印机的母语(EPL - 我认为!)。即使您的标签设计很简单,PrintDocument 也无法生成 EPL,因此它只是创建一个与整个标签大小相同的图像并将该图像发送到 Zebra 打印机驱动程序。由于驾驶员只是收到一张图像,它并不“知道”您实际上只是在打印文本和一两个框。相反,它将整个标签发送到打印机进行打印。因此,现在不仅发送一些轻量级的 EPL 文本命令,还发送将整个标签区域表示为图像的数据。这意味着您发送的是千字节数据而不是字节数据。此外,驱动程序必须将图像数据转换为大型 EPL 图形命令。
我看到一个明显的替代方案,具体取决于您使用的连接。它要求您阅读一点 EPL 手册,并整理出适合您的标签设计。您可以在此处查看示例 EPL 标签:https: //support.zebra.com/cpws/docs/eltron/common/epl2_samp.htm,以及此处的 EPL 手册:https: //support.zebra.com/cpws/docs /eltron/epl2/EPL2_Prog.pdf。
如果使用 USB:
使用 RawPrinterHelper 通过驱动程序向打印机发送纯 EPL 命令:
http://support.microsoft.com/kb/322091
string printerName = "Your_Printer_Driver_Name";
string eplCommand = "N\r\nA50,0,0,1,1,1,N,\"Example 1\"\r\nP1\r\n";
RawPrinterHelper.SendStringToPrinter(printerName , eplCommand );
如果您使用 TCP(以太网):
你的工作更简单。你甚至不需要司机。只需通过 TCP 连接将 EPL 发送到打印机:
string eplString = "N\r\nA50,0,0,1,1,1,N,\"Example 1\"\r\nP1\r\n";
// Open connection
System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient();
client.Connect(ipAddress, port);
// Write EPL String to connection
System.IO.StreamWriter writer = new System.IO.StreamWriter(client.GetStream());
writer.Write(eplString );
writer.Flush();
// Close Connection
writer.Close();
client.Close();