【问题标题】:Java print API send commands to printerJava 打印 API 向打印机发送命令
【发布时间】:2019-01-27 02:11:28
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

标签: java printing command pos java-print


【解决方案1】:

问题已解决: 感谢 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();
        }
    }

【讨论】:

    【解决方案2】:

    不确定你是否能够解决它,但这里有一个例子

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2014-08-15
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 2020-04-04
      • 2011-02-19
      相关资源
      最近更新 更多