猿问

Java 打印 API 向打印机发送命令

我的计算机(Windows 7)上安装了一些打印机,并且在控制面板上显示良好。

我想发送一些特殊命令,例如:剪切命令或条码打印命令(ESC/POS 命令)。

是否可以使用 Java Print API 做到这一点?还是 Java Print API 只执行打印服务?

提前致谢。


阿波罗的战车
浏览 354回答 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 modefinal byte[]  PAPER_FULL_CUT = {0x1d,0x56,0x00}; // Full cut paperfinal byte[]  PAPER_PART_CUT = {0x1d,0x56,0x01}; // Partial cut paperpublic 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");    }
随时随地看视频慕课网APP

相关分类

Java
我要回答