Senden Rohdaten an FedEx Etikettendrucker


4

ich auf einem .NET WinForms app bin arbeiten, die ein FEDEXversenden Etikett drucken muss. Als Teil der FedEx API kann ich rohe Etikettendaten für den Drucker erhalten.

Ich weiß nur nicht, wie diese Daten an den Drucker über .NET zu senden (I C# bin mit). Um klar zu sein, werden die Daten bereits in ZPL (Zebra-Druckersprache) formatiert pre Ich brauche nur an den Drucker zu senden, ohne Fenster, die es mucking.

10

C# unterstützt kein Raw-Drucken, Sie müssen den win32-Spooler verwenden, wie in diesem KB-Artikel How to send raw data to a printer by using Visual C# .NET beschrieben.

Hoffe, das hilft.

-Adam


1

Ich glaube, Sie einfach den ZPL (Job unten) direkt an den Drucker senden möchten.

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(); 
    } 
} 

2

Raw printing helper class from MSDN


0

Ich habe eine Zeit lang mit einem Drucker und ZPL arbeite jetzt, aber mit einem Ruby-App. Das Senden der ZPL über den Socket an den Drucker funktioniert einwandfrei.

Um zu überprüfen, dass es funktioniert, ich an den Drucker Telnet oft und gebe ^XA^PH^XZ ein einzelnes Etikett zu füttern. Ich hoffe, das hilft.


0

ein wenig spät, aber Sie dieses CodePlex-Projekt für eine einfache ZPL können Drucken http://sharpzebra.codeplex.com/


0

Zebra-Drucker nicht mit einem Spooler, ist es nicht roh Druck. Es ist ein Markup namens ZPL. Es ist textbasiert, nicht binär.