Question

Je travaille sur une application .NET WinForms qui doit imprimer une étiquette d'expédition FEDEX. Dans le cadre de l’API FedEx, je peux obtenir des données d’étiquette brutes pour l’imprimante.

Je ne sais tout simplement pas comment envoyer ces données à l'imprimante via .NET (j'utilise C #). Pour être clair, les données sont déjà pré-formatées en ZPL (langage d’impression Zebra), il me suffit de les envoyer à l’imprimante sans que Windows ne les écrase.

Était-ce utile?

La solution

C # ne supporte pas l'impression brute, vous devrez utiliser le spouleur win32, comme indiqué dans cet article de la base de connaissances Comment envoyer des données brutes à une imprimante à l’aide de Visual C # .NET .

J'espère que cela vous aidera.

-Adam

Autres conseils

Je pense que vous souhaitez simplement envoyer le fichier ZPL (tâche ci-dessous) directement à votre imprimante.

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

Un peu en retard, mais vous pouvez utiliser ce projet CodePlex pour imprimer facilement en ZPL http://sharpzebra.codeplex.com/

Les imprimantes Zebra n’utilisent pas de spouleur, ce n’est pas une impression brute. C'est un balisage appelé ZPL. C'est basé sur le texte, pas binaire.

Je travaille depuis un moment avec une imprimante et ZPL, mais avec une application Ruby. L’envoi du fichier ZPL à l’imprimante par le biais du socket fonctionne bien.

Pour vérifier que cela fonctionne, je contacte souvent l'imprimante par telnet et saisis ^ XA ^ PH ^ XZ pour alimenter une seule étiquette. J'espère que ça aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top