Отправка необработанного ZPL на принтер Zebra через PrintServer не работает

проблема

Я пытаюсь отправить zpl RAW на сервер печати. Есть принтер Zebra ZM400. Я мог бы получить объекты PrintServer, PrintQueue. Также я мог бы добавить работу и написать в ее JobStream.

Я проверил очередь печати (в Windows), и документ был отправлен. Индикатор данных принтера мигает в течение 1/2 секунды.

Прогресс

Вот мой код для печати на сервер печати:

        PrintServer ps = new PrintServer(@"\\192.168.1.1");
        PrintQueue pq = ps.GetPrintQueue("Printer 01");

        Byte[] myByteBuffer = Encoding.ASCII.GetBytes(
        @"^XA^MMP^PW300^LS0^LT0^FT10,60^APN,30,30^FH\^FDSAMPLE TEXT^FS^XZ");

        PrintSystemJobInfo psji = pq.AddJob();
        psji.JobStream.Write(myByteBuffer, 0, myByteBuffer.Length);
        psji.JobStream.Flush();
        psji.JobStream.Close();

вопрос

Когда я проверяю очередь печати (в Windows), документ имеет 0 байтов. А затем принтер ничего не печатает.

Мне не хватает какого-то специального символа? Или я отправляю неверные необработанные данные?

2 ответа

В моем приложении я использую следующий код, который отлично работает:

ZPLString = @"^XA^MMP^PW300^LS0^LT0^FT10,60^APN,30,30^FH\^FDSAMPLE TEXT^FS^XZ";
// Open connection
System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient();
client.Connect("10.10.5.85", 9100);

// Write ZPL String to connection
System.IO.StreamWriter writer = new System.IO.StreamWriter(client.GetStream());
writer.Write(ZPLString);
writer.Flush();

// Close Connection
writer.Close();
client.Close();

edit: * порт 6101 по умолчанию для принтеров Zebra, 9100 альтернативный порт

Сочетание вопроса ОП и ответа Johan дает вам действительный документ с использованием PrintServer:

        LocalPrintServer localPrintServer = new LocalPrintServer();

        // List the print server's queues
        PrintQueue pq = localPrintServer.GetPrintQueue(@"Boca FGL 200 DPI");
        PrintSystemJobInfo job = pq.AddJob();  
        System.IO.StreamWriter writer = new System.IO.StreamWriter(job.JobStream);
        writer.Write(@"hello world<p>");
        writer.Flush();
Другие вопросы по тегам