我有一个 java 应用程序,可以使用热敏打印机(Bixolon srp 350 plus)打印和自动剪切收据
最初我在自动切割收据时遇到问题,但经过多次试验和谷歌搜索,我设法自动切割收据。但问题是,当我在我的测试机器上部署 war 应用程序时,它打印得很好,但最后并没有剪纸。我什至将war文件部署到我的开发机器的tomcat中,它可以自动切割。
开发机和测试机都使用windows 7-ultimate,同样的apache-tomcat-6.0.18,JDK6/JRE6。
最初测试机器安装了jre6,自动切割后不成功。我安装了我在开发机器中使用的 jdk6,但没有成功。
两台机器不同品牌,硬件配置不同。谁能帮我解决这个问题?这是否与以前安装的 JRE6 和未从 Windows 注册表中正确删除有关?
我正在使用 grails 1.3.7 和 mysql 5.5。
我的代码如下:
public void printBill(String printData) throws Exception {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
pras.add(new Copies(5));
pras.add(new PrinterResolution(180,180,PrinterResolution.DPI));
PrintService pss[] = PrintServiceLookup.lookupPrintServices(null,pras);
if (pss.length == 0) {
throw new RuntimeException("No printer services available.");
}
if(printData == null) {
throw new Exception("nothing to print");
}
PrintService ps = pss[0];
DocPrintJob job = ps.createPrintJob();
DocAttributeSet das = new HashDocAttributeSet();
das.add(new PrinterResolution(180,180,PrinterResolution.DPI));
byte[] desc = printData.getBytes();
Doc doc = new SimpleDoc(desc, DocFlavor.BYTE_ARRAY.AUTOSENSE, das);
try {
job.print(doc, pras);
cutPaper();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* TODO improvision to auto cut bill, need to find a proper way to cut
*/
private void cutPaper() throws Exception{
TempPageCutter pageCutter = new RestaurantPrinter().new TempPageCutter();
pageCutter.cutReceipt();
}
private class TempPageCutter implements Printable {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if(pageIndex > 0)
return NO_SUCH_PAGE;
System.out.println("Cutting");
graphics.drawString("", 0, 0);
return PAGE_EXISTS;
}
public void cutReceipt() throws PrinterException {
System.out.println("cutReceipt");
PrintService[] printService = PrinterJob.lookupPrintServices();
if(printService == null || printService.length < 1) {
return;
}
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
job.print();
}
}
如果有人可以帮助我以更好的方式实现自动切割功能,那将是一个很大的帮助。