Pergunta

Eu estou trabalhando em um .NET WinForms app que precisa imprimir uma etiqueta de envio FEDEX. Como parte do api FedEx, posso obter dados da etiqueta brutos para a impressora.

Eu só não sei como enviar os dados para a impressora por meio do .NET (estou usando C #). Para ser claro, os dados já é pré formatado em ZPL (Zebra linguagem de impressora) Eu só preciso enviá-lo para a impressora sem janelas sujando-o.

Foi útil?

Solução

C # não suporta a impressão cru, você vai ter que usar o spooler win32, conforme detalhado neste artigo KB Como enviar dados brutos para uma impressora usando o Visual C # .NET .

Espero que isso ajude.

-Adam

Outras dicas

Eu acho que você só quer enviar o ZPL (emprego abaixo) diretamente para a impressora.

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

Um pouco tarde, mas você pode usar este projeto CodePlex para impressão ZPL fácil http://sharpzebra.codeplex.com/

impressoras

A zebra não usar um spooler, não é a impressão cru. É uma marcação chamada ZPL. É do texto base, não binário.

Eu tenho trabalhado com uma impressora e ZPL por um tempo agora, mas com um aplicativo Ruby. Enviando a ZPL para a impressora através da tomada fina funciona.

Para verificar se ele funciona, muitas vezes eu telnet para o ^XA^PH^XZ impressora e tipo para alimentar uma única etiqueta. Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top