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");
    }


Другие вопросы по тегам