Java 中的 Linux 打印

标签 linux printing java

我使用的是热敏打印机,它会在打印前后将抽屉踢出。但我想阻止它,我正在发送十六进制代码以在需要时取消平局。我使用的顺序是但是打印机驱动程序说“处理文档‘Java Printing’时出现问题”。这是怎么回事 ?我认为代码与代码有关,因此它在所有平台上运行良好。我使用的代码如下所示:

public OpenCashDrawer() {
    PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
    System.out.println("printservice"+pservice);
    try {
        DocPrintJob job = pservice.createPrintJob();
        String openDrawerCommand = ((char)0x1B70111)+"";
        //
        openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045";
        byte by[] = openDrawerCommand.getBytes();
        //char[] printdata = "hello world\n".toCharArray();
        // System.out.println(by[1]);
        DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
        //PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
        //DocPrintJob pjob = pservice.createPrintJob();
        //DocFlavor flavor = DocFlavor.CHAR_ARRAY.TEXT_PLAIN;
        Doc doc = new SimpleDoc(by, flavor, null);
        job.print(doc, null);
    } catch (Exception e) {
        System.out.println("Whoa bro. The printer is balls. Check it:");
        e.printStackTrace();
    }
}

最佳答案

我通过以下代码实现了这一点。

public OpenCashDrawer() {
    SwingWorker worker = new SwingWorker<String, Void>() {

        public String doInBackground() {
            try {
                String sql = "INSERT INTO pos_cashdraw SET user_id='"+global_variables.user_id+"', message='Opened For Sale'";
                mysql_query.update_mysql(variables.con.conn, sql);
                String out = "";
                do {
                    out = "";
                    //System.out.println("opened cashdraw");
                    //String openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045";
                    String openDrawerCommand2 = "\u0017";
                    //String cmd = "echo -e " + openDrawerCommand2 + " > /dev/usblp0";
                    String cmd = "echo -e " + openDrawerCommand2 + " > /dev/ttyS0";
                    ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);

                    pb.redirectErrorStream(true);
                    if (pb != null) {
                        Process shell = pb.start();
                        InputStream shellin = shell.getInputStream();
                        int c;
                        while ((c = shellin.read()) != -1) {
                            System.out.write(c);
                            out += (char) c;
                        }
                        shellin.close();
                    }
                } while (out.contains("busy"));
            } catch (IOException ex) {
                System.err.println("Not supported in your operating system");
            }
            return "Opened";
        }
    };
    worker.execute();
}

关于Java 中的 Linux 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228055/

相关文章:

linux - 如何在Ubuntu 14.04中找回丢失的文件sources.list?

java - 打印方法是 SDK 中的标准方法还是仅是 toString?

java - 从 OracleJDBC 调用存储过程出现异常

java - 如何在缓存的分页结果中添加新的或更新的对象

linux - 在 Plesk 11 的 shellscript cron 作业中找不到命令错误

linux - grep : get matching string before certain string

ios - 如何将 PDF 作为输入传递给打印机

java - LZW压缩算法实现

linux - 无法在 ubuntu 14.04 中安装 .Net 核心

javascript - 如何横向打印网页(firefox IE11)?