Java print API отправляет команды на принтер

У меня есть несколько принтеров, которые хорошо установлены на моем компьютере (Windows 7) и хорошо отображаются на панели управления.

Я хотел бы отправить некоторые специальные команды, такие как: команда вырезания или команды печати штрих-кода (команды ESC / POS).

Возможно ли это сделать с помощью Java Print API? или Java Print API выполняет только услуги печати?

Заранее спасибо.

API печати Java полагается на базовые драйверы системы. Если lookupPrintServices возвращает непустой массив для любого из PLAIN_TEXT DocFlavors (например, DocFlavor.STRING.TEXT_PLAIN), вы можете встроить эти управляющие последовательности в обычный текст.

VGR 21.08.2018 01:22

Ах, отлично, да, lookupPrintServices возвращает массив всех моих принтеров ... есть хороший учебник для этой цели? ... например, какие функции использовать и т. д.?

Mssm 21.08.2018 08:47

пакетная документация дает хорошее резюме. Также есть спецификация JPS и краткое руководство.

VGR 21.08.2018 14:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
1 341
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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");
    }


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