В 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){
}
}
недавно я сам сталкивался с такой проблемой вот ссылка и решил таким путем
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 коды могут быть другие...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок