Java:收据打印机自动剪切

Java:收据打印机自动剪切,java,printing,Java,Printing,我正在使用Java打印服务API打印到收据打印机。它可以很好地打印,但完成后不会自动剪切。如何告诉打印机自动剪切 下面是我用来打印的代码: String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName(); System.out.println("Default printer: " + defaultPrinter)

我正在使用Java打印服务API打印到收据打印机。它可以很好地打印,但完成后不会自动剪切。如何告诉打印机自动剪切

下面是我用来打印的代码:

       String defaultPrinter = 
                  PrintServiceLookup.lookupDefaultPrintService().getName();
                System.out.println("Default printer: " + defaultPrinter);
                PrintService service = PrintServiceLookup.lookupDefaultPrintService();

                InputStream is=null;
                try {
                    printString+="\f";
                    System.out.println(printString);
                    is = new ByteArrayInputStream(printString.getBytes("UTF8"));                    
                } catch (UnsupportedEncodingException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

                PrintRequestAttributeSet  pras = new HashPrintRequestAttributeSet();
                pras.add(new Copies(1));


                DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

                Doc doc = new SimpleDoc(is, flavor, null);

                DocPrintJob job = service.createPrintJob();

                PrintJobWatcher pjw = new PrintJobWatcher(job);
                try {
                    job.print(doc, pras);
                } catch (PrintException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                pjw.waitForDone();
                try {
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

我可以想象有一个专有命令(以字节序列的形式)需要发送到打印机进行剪切

对于TSP100,似乎暗示27100和3是您需要的字节

无论是哪种型号,当您找到字节序列形式的命令时,您应该能够使用与上面类似的方法发送它:

DocPrintJob job = PrintServiceLookup.lookupDefaultPrintService().createPrintJob();  
byte[] bytes = {27, 100, 3};
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(bytes, flavor, null);
job.print(doc, null);

我的打印机是Star TSP100打印机,但此命令似乎没有任何作用。您是说您尝试了上面的代码(因为它们适用于不同的型号,所以无法工作)还是您的打印机的代码?从这个链接()中,您希望在字节数组中的条目显示为
27100,3
。真的行吗?行了!非常感谢你帮我找到这个@berry120我也有同样的问题,但我不知道应该打印的内容去了哪里?我在哪里指定需要打印的字节?@leonardoborges在上面的示例中,字节放入字节数组中-在本例中为27、100和3(十进制),但您可以将这些值换成您想要的任何值。