2008-09-23 97 views
4

我正在研究需要打印FEDEX運輸標籤的.NET WinForms應用程序。作爲FedEx api的一部分,我可以獲得打印機的原始標籤數據。將原始數據發送到FedEx標籤打印機

我只是不知道如何通過.NET發送數據到打印機(我正在使用C#)。清楚的是,這些數據已經預先格式化爲ZPL(Zebra打印機語言),我只需要將它發送給打印機即可,而不需要打開窗口。

回答

1

我覺得你只是想送ZPL(以下工作)直接連接到您的打印機。

private void SendPrintJob(string job) 
{ 
    TcpClient client = null; 
    NetworkStream ns = null; 
    byte[] bytes; 
    int bytesRead; 

    IPEndPoint remoteIP; 
    Socket sock = null; 

    try 
    { 
     remoteIP = new IPEndPoint(IPAddress.Parse(hostName), portNum); 
     sock = new Socket(AddressFamily.InterNetwork, 
      SocketType.Stream, 
      ProtocolType.Tcp); 
     sock.Connect(remoteIP); 


     ns = new NetworkStream(sock); 

     if (ns.DataAvailable) 
     { 
      bytes = new byte[client.ReceiveBufferSize]; 
      bytesRead = ns.Read(bytes, 0, bytes.Length); 
     } 

     byte[] toSend = Encoding.ASCII.GetBytes(job); 
     ns.Write(toSend, 0, toSend.Length); 

     if (ns.DataAvailable) 
     { 
      bytes = new byte[client.ReceiveBufferSize]; 
      bytesRead = ns.Read(bytes, 0, bytes.Length); 
     } 
    } 
    finally 
    {   
     if(ns != null)    
      ns.Close(); 

     if(sock != null && sock.Connected) 
      sock.Close(); 

     if (client != null) 
      client.Close(); 
    } 
} 
0

我一直使用的打印機和ZPL有一段時間了,但有一個Ruby應用程序。通過套接字將ZPL發送到打印機可以正常工作。

要檢查它的工作原理,我經常telnet到打印機並鍵入^XA^PH^XZ來提供一個標籤。希望有所幫助。

0

Zebra打印機不使用後臺處理程序,它不是原始的印刷。這是一個名爲ZPL的標記。這是基於文本的,而不是二進制。

相關問題