zebra 3842 - 使用.net进行慢速标签打印

时间:2013-10-24 21:13:42

标签: .net performance printing label

我遇到斑马3842标签打印机工作缓慢的问题。

我使用标准的.net打印框架。 (System.Drawing.Printing.PrintDocument) 在我调用PrintDocument的Print()函数后,打印机会等待几秒钟并打印第一个标签。然后再等一下,然后拉回标签并打印出来。过程就是这样。

您可以通过以下视频查看情况:(单打印,3页) http://www.youtube.com/watch?v=DeIoO6qT0kE

我尝试使用Microsoft Word应用程序打印3页。 (同样的情况也存在) 但是,如果我使用Zebra的软件打印标签,它可以正常工作而没有延迟。

我还安装了最新的驱动程序。

我是标签印刷的新手,所以我向有经验的人提供帮助。 可能是什么问题?我应该先检查一下?

提前致谢。

1 个答案:

答案 0 :(得分:0)

就目前而言,您正在使用的类(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();