Как напечатать строку из java на Zebra kr203?

Я полный новичок в киоск-принтерах.

Мне нужно отправить строку из java-приложения на киоск-принтер zebra kr203.

Машина подключена к ПК с Windows 7 и установлены его драйверы. Печать тестовых страниц работает нормально.

Я также установил утилиты настройки для принтера, и они позволяют отправлять на него команды через язык EPL2. Опять же, я полностью новичок в EPL2, но я попробовал несколько примеров команд, и ничего не получилось.

Может кто-нибудь написать базовый код Java для отправки короткой строки на принтер?

Никакому графическому интерфейсу не требовалось только простое приложение командной строки.

РЕДАКТИРОВАТЬ: я нашел код в Google, который получает правильный printService, но он все равно ничего не распечатывает.

ИЗМЕНИТЬ № 2: В итоге я использовал Zebra SDK, представленный на их веб-сайте. Там хранятся примеры кода, которые вы можете легко найти, погуглив. Я отредактировал старый код, так как он бесполезен.

Используя SDK и примеры, я понял, что принтер на самом деле использует ZPL2 вместо EPL, как я изначально думал.

В SDK есть свой API для отправки команд, у меня он работает достаточно плавно.


person isaric    schedule 05.04.2015    source источник
comment
Привет, как вы могли распечатать билет с помощью zebra kr203 с помощью java, не могли бы вы поделиться со мной своим кодом?   -  person Rastalovely    schedule 18.12.2017
comment
Привет, я использую принтер zebra KR203, используя это руководство zebra.com/content/dam/zebra/manuals/en-us/printer/, но синтаксис другой.   -  person Rastalovely    schedule 09.01.2018


Ответы (2)


Вот что я в итоге использовал:

String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
com.zebra.sdk.comm.Connection myconnection = new com.zebra.sdk.comm.DriverPrinterConnection(defaultPrinter,1000,1000);
myconnection.open();
com.zebra.sdk.printer.ZebraPrinter myprinter = ZebraPrinterFactory.getInstance(myconnection);
String command = "^XA\n" +
                    "^FO50,50\n" +
                    "^A@N,20,20,E:TT0003M_.FNT\n" +
                    "^FDUplatili ste XXXX na račun XXXXXXXXXX^FS\n" +
                    "^FO50,150\n" +
                    "^A0,32,25\n" +
                    "^FD"+ date.toString()+ "^FS\n" +
                    "^FO50,250\n" +
                    "^A0,32,25^FDSlavnoska Avenija 19, 10000 Zagreb^FS\n" +
                    "^XZ";
myprinter.sendCommand(command);
myconnection.close();
person isaric    schedule 09.04.2015
comment
Я скопировал и вставил ваш код, но я получаю эту ошибку Error en la con com.zebra.sdk.comm.UsbNativeCodeConnectionException: DLL с собственным кодом не загружена. Не могли бы вы мне помочь?? - person Rastalovely; 09.01.2018

У вас есть несколько принтеров на выбор... или только один принтер?

    private void printLabel() {
        try{
            FileOutputStream fos = new FileOutputStream("\\Your Printer Here");
            PrintStream ps = new PrintStream(fos);

            //try with the EPL commands or take a look at the ZPL programming guide
            String commands = "N\n" +
                    "A50,50,0,2,2,2,N,\"" + label + "\"\n" +
                    "B50,100,0,1,2,2,170,B,\"" + label + "\"\n" +
                    "A50,310,0,3,1,1,N,\"" + czas + "\"\n" +
                    "P1\n";

            ps.println(commands);
            ps.print("\f");
            ps.flush();
            ps.close();

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

} `

person born2bmild    schedule 07.04.2015
comment
У меня есть несколько принтеров с зеброй, установленной по умолчанию. Кроме того, System.out.println (принтер по умолчанию: + defaultPrinter); возвращает Зебра. - person isaric; 07.04.2015
comment
@user3779674 user3779674 Просто любопытно - я написал программу, которая использовала ZPL, но мне нужно было использовать только один принтер, поэтому я жестко закодировал путь в FileOutputStream. Если хотите, опубликую это, но, вероятно, это вам бесполезно. Я также мог бы немного помочь с ZPL .. не так много с EPL (извините) - person born2bmild; 07.04.2015
comment
@born2bmild Принтер должен поддерживать ZPL. Пожалуйста, опубликуйте свой код, и я попробую. Я могу удалить все остальные принтеры, чтобы попробовать. Это просто офисный тест, ничего критичного. - person isaric; 07.04.2015
comment
@user3779674 user3779674 Надеюсь, это сработает для вас. Вы можете поиграться с координатами x, y и dpi. Это то, что мне пришлось сделать с ZPL, когда я сменил принтеры ... Это все, что у меня есть, пока намного позже - person born2bmild; 07.04.2015
comment
@born2bmild что такое czas? - person isaric; 08.04.2015