Печать ZPL в Windows 7 с подключенным через USB принтером Zebra

Я пытаюсь отправить некоторый код ZPL на Zebra TLP 2824, подключенный через USB, из приложения Java в Windows 7. Я пробовал разные подходы, но пока не смог распечатать. В настройках драйвера я активировал сквозной режим и попытался установить принтер с помощью универсального / текстового драйвера, но ничего не получилось.

Я всегда получаю неуказанные ошибки Windows в очереди печати.

Это мой код:

        try {

           PrintService psZebra = null;
           String sPrinterName = null;
           PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);

           for (int i = 0; i < services.length; i++) {

               PrintServiceAttribute attr = services[i].getAttribute(PrinterName.class);
               sPrinterName = ((PrinterName) attr).getValue();

               if (sPrinterName.toLowerCase().indexOf("generic") >= 0) {
                   psZebra = services[i];
                   System.out.println(psZebra);
                   break;
               }
           }

           if (psZebra == null) {
               System.out.println("Zebra printer not found.");
               return;
           }
           DocPrintJob job = psZebra.createPrintJob();

           String s = "${^XA^FO100,100^BY7^BCN,100,Y,N,N^FD123456^FS^XZ}$";

           byte[] by = s.getBytes();
           DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
           Doc doc = new SimpleDoc(by, flavor, null);
           job.print(doc, null);

       } catch (PrintException e) {
           e.printStackTrace();
       }   

person Chromos    schedule 28.01.2013    source источник


Ответы (1)


Кажется, я был очень близок. Мой принтер просто не поддерживает ZPL, и мне пришлось использовать код EPL2. Еще одна вещь заключалась в том, чтобы использовать InputStream вместо byteArrays.

Вот что изменилось:

DocPrintJob job = psZebra.createPrintJob();

String s =  "N"+"\n"+
        "q305"+"\n"+
        "Q203,26"+"\n"+
        "B55,26,0,1,2,2,152,B,\""+code+"\""+"\n"+
        "P1,1";

InputStream is = new ByteArrayInputStream(s.getBytes());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(is, flavor, null);

job.print(doc, null);
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
} 
person Chromos    schedule 10.02.2013