将原始数据发送到FedEx标签打印机

时间:2020-03-06 14:37:15  来源:igfitidea点击:

我正在使用需要打印FEDEX运送标签的.NET WinForms应用程序。作为FedEx API的一部分,我可以获得打印机的原始标签数据。

我只是不知道如何通过.NET(我正在使用C#)将数据发送到打印机。需要明确的是,数据已经被预先格式化为ZPL(Zebra打印机语言),我只需要将其发送到打印机,而无需Windows对其进行处理。

解决方案

C不支持原始打印,我们必须使用win32假脱机程序,如本知识库文章如何使用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();
    }
}

来自MSDN的原始打印帮助程序类

我已经使用打印机和ZPL已有一段时间了,但是使用的是Ruby应用程序。通过套接字将ZPL发送到打印机可以正常工作。

为了检查它是否正常工作,我经常通过telnet到打印机并键入^ XA ^ PH ^ XZ来馈送单个标签。希望能有所帮助。

有点晚了,但是我们可以使用此CodePlex Project轻松进行ZPL打印
http://sharpzebra.codeplex.com/