Отправка необработанных данных на принтер FedEx Label - PullRequest
4 голосов
/ 23 сентября 2008

Я работаю над приложением .NET WinForms, которое должно напечатать отгрузочную этикетку FEDEX. Как часть API FedEx, я могу получить необработанные данные этикетки для принтера.

Я просто не знаю, как отправить эти данные на принтер через .NET (я использую C #). Чтобы было ясно, данные уже предварительно отформатированы в ZPL (язык принтера Zebra). Мне просто нужно отправить их на принтер без использования Windows.

Ответы [ 6 ]

10 голосов
/ 23 сентября 2008

C # не поддерживает необработанную печать, вам придется использовать спулер win32, как подробно описано в этой статье базы знаний. Как отправлять необработанные данные на принтер с помощью Visual C # .NET .

Надеюсь, это поможет.

-Adam

2 голосов
/ 23 сентября 2008
1 голос
/ 23 сентября 2008

Я думаю, вы просто хотите отправить 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();
    }
}
0 голосов
/ 28 февраля 2012

Принтеры Zebra не используют спулер, это не необработанная печать. Это разметка под названием ZPL. Текстовый, а не двоичный.

0 голосов
/ 03 августа 2009

Немного поздно, но вы можете использовать этот проект CodePlex для простой печати ZPL http://sharpzebra.codeplex.com/

0 голосов
/ 21 июля 2009

Я уже некоторое время работаю с принтером и ZPL, но с приложением Ruby. Отправка ZPL на принтер через разъем работает нормально.

Чтобы убедиться, что это работает, я часто подключаюсь к принтеру и набираю ^XA^PH^XZ, чтобы подать одну этикетку. Надеюсь, это поможет.

...