문제

FedEx 배송 레이블을 인쇄 해야하는 .NET WinForms 앱에서 작업하고 있습니다. FedEx API의 일환으로 프린터의 원시 레이블 데이터를 얻을 수 있습니다.

.NET을 통해 해당 데이터를 프린터로 전송하는 방법을 모르겠습니다 (C#을 사용하고 있습니다). 명확하게 말하면, 데이터는 이미 zpl (zebra printer language)으로 사전 포맷되어 있습니다.

도움이 되었습니까?

해결책

C#은 원시 인쇄를 지원하지 않으므로이 KB 기사에 자세히 설명 된대로 Win32 Spooler를 사용해야합니다. Visual C# .net을 사용하여 원시 데이터를 프린터로 보내는 방법.

도움이 되었기를 바랍니다.

-아담

다른 팁

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

조금 늦었지만이 CodePlex 프로젝트를 사용하여 쉬운 ZPL 인쇄를 사용할 수 있습니다.http://sharpzebra.codeplex.com/

얼룩말 프린터는 스풀러를 사용하지 않으며 원시 인쇄가 아닙니다. ZPL이라는 마크 업입니다. 이진이 아닌 텍스트 기반입니다.

나는 한동안 프린터와 ZPL과 함께 일해 왔지만 루비 앱으로 작업 해 왔습니다. 소켓을 통해 ZPL을 프린터로 보내는 것이 잘 작동합니다.

그것이 작동하는지 확인하기 위해 종종 프린터와 유형에 텔넷 ^XA^PH^XZ 단일 레이블을 먹이기 위해. 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top