Java:收据打印机自动切割

时间:2013-05-16 15:16:56

标签: java printing

我正在使用Java Print Service 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();
                }

1 个答案:

答案 0 :(得分:7)

我认为有一个专有命令(以字节序列的形式),你需要发送到打印机来剪切它。

对于TSP100,this page似乎暗示27,100和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);