Как убрать окно подтверждения печати на термопринтере?

174
20 сентября 2018, 18:00

В java разбираюсь, но с принтерами вожусь впервые.

У меня термопринтер ocmo OCPP-808. Подключен к компьютеру через ЮСБ. Хотел напечатать что-то из JAVA.

Нашел на исходник гитхабе. Работает отлично, но не устраивает то, что при запуске открывается окошко и я должен нажать на кнопку принт, чтобы печатать чек.

Можно ли как то убрать это окошко, чтобы чек печатался при запуске приложения?

class Main {
public static String contentTicket = "Label Илхом";
public static void main(String[] args) {
    PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
    DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
    byte[] bytes = contentTicket.getBytes(StandardCharsets.UTF_8);
    System.out.print(bytes);
    PrinterJob pjob = PrinterJob.getPrinterJob();
    Doc doc = new SimpleDoc(bytes, flavor, null);
    PrintService service = PrintServiceLookup.lookupDefaultPrintService();
    Book book = new Book();
    PageFormat landscape = pjob.defaultPage();
    DocPrintJob job = service.createPrintJob();
    landscape.setOrientation(PageFormat.LANDSCAPE);
    book.append(new Printable1(), landscape);
    PageFormat portrait = pjob.defaultPage();
    portrait.setOrientation(PageFormat.PORTRAIT);
    book.append(new Printable2(), portrait, 0);
    pjob.setPageable(book);
    try {
        job.print(doc,pras);
        pjob.print();
    } catch (PrinterException e) {
    } catch (PrintException e) {
        e.printStackTrace();
    }
}
}
class Printable1 implements Printable {
public int print(Graphics g, PageFormat pf, int pageIndex) {
    drawGraphics(g, pf);
    return Printable.PAGE_EXISTS;
}
public void drawGraphics(Graphics g, PageFormat pf){
}
}
class Printable2 implements Printable {
public int print(Graphics g, PageFormat pf, int pageIndex) {
    drawGraphics(g, pf);
    return Printable.PAGE_EXISTS;
}
public void drawGraphics(Graphics g, PageFormat pf){
}
}
Answer 1

недавно я сам сталкивался с такой проблемой вот ссылка и решил таким путем

ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write(27); // ESC
out.write(116); // t
out.write(17); // 866 codepage
out.write(text.getBytes("CP866"));
byte[] bytes;
bytes = out.toByteArray();

а кстати вы должны ещё посмотреть мануал по вашему принтеру т.к. там ESC коды могут быть другие...

READ ALSO
Xpath для чекбоксов

Xpath для чекбоксов

Есть страничка, в которой есть чек боксы:

148
Расшифровка пароля

Расшифровка пароля

В общем появилась у меня проблема с расшифровкой пароляЕсть два метода:

187