如何从java代码向打印机发送包含ESC/POS命令的.text文件

ALM*_*MEK 4 java printing

到目前为止我所拥有的是以下代码:

 FileInputStream fin =new FileInputStream(filename);
 DocFlavor df = DocFlavor.INPUT_STREAM.AUTOSENSE;                    
 Doc d = new SimpleDoc(fin, df, null);   
 PrintService P = PrintServiceLookup.lookupDefaultPrintService();

  if (P != null) {              
     DocPrintJob job = P.createPrintJob();  
     job.print(d, null);  
            }
    fin.close;
Run Code Online (Sandbox Code Playgroud)

代码工作正常,但如果包含命令的文件打印机不解释命令,它会继续打印文件的确切字符串内容.那么如何向爱普生收据打印机发送命令?

ALM*_*MEK 6

由于已经想通了,命令可能直接不ESC/POS格式发送,但你需要解释的代码为十六进制在你的Java代码,并从一个文件或字符串发送到打印机,因为我张贴的方式,无论是.例如,而不是通过以下方式初始化Epson收据打印机:

  PRINT #1, CHR$(&H1B);"@";
Run Code Online (Sandbox Code Playgroud)

并在收据打印机中剪切纸张代码可能是:

  PRINT #1, CHR$(&H1D);"V";CHR$(1);
Run Code Online (Sandbox Code Playgroud)

所以这就是它对我有用的方式.

    char[] initEP = new char[]{0x1b, '@'};
    char[] cutP = new char[]{0x1d,'V',1};
    String Ptxt=  new String(initEP)+ " text data \n \n \n"+ new String(cutP);
Run Code Online (Sandbox Code Playgroud)

代替

    Doc d = new SimpleDoc(new FileInputStream(filename), df, null);  
Run Code Online (Sandbox Code Playgroud)

使用

    InputStream pis = new ByteArrayInputStream(Ptxt.getBytes());
    Doc d = new SimpleDoc(pis, df, null);
Run Code Online (Sandbox Code Playgroud)

然而,它可能是一种发送代码作为其命令格式的方法,但到目前为止绝对不能这样做.并且不确定它是否可以从java完成.