Java:收据打印机自动剪切
我正在使用Java打印服务API打印到收据打印机。它可以很好地打印,但完成后不会自动剪切。如何告诉打印机自动剪切 下面是我用来打印的代码:Java:收据打印机自动剪切,java,printing,Java,Printing,我正在使用Java打印服务API打印到收据打印机。它可以很好地打印,但完成后不会自动剪切。如何告诉打印机自动剪切 下面是我用来打印的代码: String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName(); System.out.println("Default printer: " + defaultPrinter)
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(十进制),但您可以将这些值换成您想要的任何值。