2008-09-23 100 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的标记。这是基于文本的,而不是二进制。

相关问题