Frage

Ich arbeite an einer .NET WinForms-Anwendung, die ein FEDEXversenden Etikett drucken muss. Im Rahmen des 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 an den Drucker senden müssen es nur ohne Fenster Ausmisten es auf.

War es hilfreich?

Lösung

C # unterstützt keine rohen Druck, werden Sie die win32-Spooler verwenden müssen, wie in diesem KB-Artikel detailliert Wie mithilfe von Visual C # .NET Rohdaten an einen Drucker senden.

Hope, das hilft.

-Adam

Andere Tipps

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

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

Zebra-Drucker nicht mit einem Spooler, ist es nicht roh druckt. Es ist eine Auszeichnungs genannt ZPL. Es ist textbasiert, nicht binär.

Ich habe eine Zeit lang mit einem Drucker und ZPL arbeite jetzt, aber mit einem Ruby-App. Senden des ZPL aus an den Drucker über die Buchse funktioniert.

Um zu überprüfen, dass es funktioniert, ich telnet oft an den Drucker und den Typ ^XA^PH^XZ ein einzelnes Etikett zu füttern. Hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top