API печати Java отправляет команды на принтер
У меня на компьютере установлены некоторые принтеры (Windows 7) и они хорошо отображаются на панели управления.
Я хотел бы отправить некоторые специальные команды, такие как: команда на обрезку или команды на печать штрих-кода (команды ESC/POS).
Возможно ли это сделать с помощью Java Print API? или Java Print API выполняет только услуги печати?
Заранее спасибо.
2 ответа
Проблема решена: благодаря VGR.
Вот код, чтобы помочь любому, имеющему ту же проблему:
private PrintService printer = ...; // init this using PrintService.lookupPrintServices();
if(this.printer != null) {
String commandToSend = "Some command\n";
Doc myDoc = new SimpleDoc(commandToSend.getBytes(), DocFlavor.BYTE_ARRAY.AUTOSENSE, null);
DocPrintJob job = this.printer.createPrintJob();
try {
job.print(myDoc, null);
} catch (PrintException e) {
e.printStackTrace();
}
}
Не уверен, что вы смогли это решить, но вот пример
final byte[] VALIDATION_MODE = new byte[]{27, 'c', '0', 4}; // Print in validation mode
final byte[] PAPER_FULL_CUT = {0x1d,0x56,0x00}; // Full cut paper
final byte[] PAPER_PART_CUT = {0x1d,0x56,0x01}; // Partial cut paper
public void print(String receiptContent, String printerName) throws IOException {
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
DocPrintJob docPrintJob = selectedPrinter(printerName).createPrintJob();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(VALIDATION_MODE);
outputStream.write(receiptContent.getBytes());
outputStream.close();
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
Doc doc = new SimpleDoc(inputStream, flavor, null);
try {
docPrintJob.print(doc, null);
} catch (PrintException e) {
System.out.println("Error:" + e.getMessage());
}
System.out.println("Print Job Finished");
}