Как использовать команду ESC/POS Java
Я пытаюсь распечатать на принтере POS для билетов. Это EPSON TMU220PD. Я могу печатать, но я не знаю, как я могу запрограммировать принтер для печати шрифтом большего размера и как я могу сделать это для автоматической резки бумаги. Я много читаю, и есть страница, где говорят, что я могу использовать команды ESC/POS, но я понятия не имею, как это работает. У меня есть мужской класс со следующим кодом:
public static void main(String[] args) {
JavaApplication14 java = new JavaApplication14();
try {
FileWriter file = new FileWriter("/dev/usb/lp2");
BufferedWriter buffer = new BufferedWriter(file);
PrintWriter ps = new PrintWriter(buffer);
java.setFormato(5, ps);
java.cortar(ps);
}
И метод для "вырезать" это
private void cortar(PrintWriter ps) {
try {
char[] ESC_CUT_PAPER = new char[]{0x1B, 'm'};
ps.write(ESC_CUT_PAPER);
} catch (Exception e) {
System.out.print(e);
}
}
Когда я собираюсь печатать, принтер работает нормально для печати текста, но при этом не обрезает бумагу. Мне тоже нужно увеличить размер текста, но я не знаю, как я могу это сделать и как я могу использовать команды ESC/POS на Java.
1 ответ
Можете ли вы попробовать либо
byte[] bCut = new byte[4];
bCut[0] = GS;
bCut[1] = 86;
bCut[2] = 65;
bCut[3] = 0;
String sCut = new String (bCut);
ps.write(bCut);
или же
char[] cutOff = new char[]
{ 29, 'V', 65, 0 };
ps.write(cutOff);
и дайте мне знать, если это работает?
String text_to_print = "Hello world!";
PrintService foundService = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob dpj = foundService.createPrintJob();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
/// your legacy commands ini
// initialize printer
outputStream.write(27); // ESC
outputStream.write('@');
// print text
outputStream.write(text_to_print.getBytes());
// feed 5 lines
outputStream.write(27); // ESC
outputStream.write('d');
outputStream.write(5);
// cut paper
outputStream.write(29); // GS
outputStream.write('V');
outputStream.write(48);
Вы можете увидеть полный код здесь