试图在热敏打印机的JAVA应用程序(Bixolon SRP350 plus)中实现自动切割功能时的奇怪行为
我有一个java应用程序,可以使用热敏打印机打印和自动剪切收据(Bixolon srp 350 plus) 起初,我在自动剪切收据方面遇到了问题,但经过多次尝试和谷歌搜索,我终于设法自动剪切了收据。但问题是,当我在我的测试机器中部署war应用程序时,它打印得很好,但最后没有切纸。我甚至将war文件部署到我的开发机器的tomcat中,它可以自动剪切 开发机器和测试机器都使用Windows7-ultimate、相同的apache-tomcat-6.0.18和JDK6/JRE6 最初,试验机安装了jre6,自动切割后未成功。我在开发机器中安装了jdk6,但没有成功 这两台机器的品牌不同,硬件配置也不同。 谁能帮我一下吗?这是否与以前安装的JRE6有关,并且没有从windows注册表中正确删除 我正在使用Grails1.3.7和mysql 5.5 我的代码如下:试图在热敏打印机的JAVA应用程序(Bixolon SRP350 plus)中实现自动切割功能时的奇怪行为,java,windows-7,thermal-printer,bixolon-printer,Java,Windows 7,Thermal Printer,Bixolon Printer,我有一个java应用程序,可以使用热敏打印机打印和自动剪切收据(Bixolon srp 350 plus) 起初,我在自动剪切收据方面遇到了问题,但经过多次尝试和谷歌搜索,我终于设法自动剪切了收据。但问题是,当我在我的测试机器中部署war应用程序时,它打印得很好,但最后没有切纸。我甚至将war文件部署到我的开发机器的tomcat中,它可以自动剪切 开发机器和测试机器都使用Windows7-ultimate、相同的apache-tomcat-6.0.18和JDK6/JRE6 最初,试验机安装了jr
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();
}
}
public void printBill(字符串printData)引发异常{
PrintRequestAttributeSet pras=新的HashPrintRequestAttributeSet();
审慎监管局增加(新副本(5));
pras.add(新的PrinterResolution(180180,PrinterResolution.DPI));
PrintService pss[]=PrintServiceLookup.lookupPrintServices(null,pras);
如果(pss.length==0){
抛出新的RuntimeException(“没有可用的打印机服务”);
}
if(printData==null){
抛出新异常(“无需打印”);
}
PrintService ps=pss[0];
DocPrintJob job=ps.createPrintJob();
DocAttributeSet das=新的HashDocAttributeSet();
添加(新的PrinterResolution(180180,PrinterResolution.DPI));
byte[]desc=printData.getBytes();
Doc Doc=new SimpleDoc(desc,DocFlavor.BYTE_ARRAY.AUTOSENSE,das);
试一试{
作业打印(文档、pras);
剪纸();
}捕获(例外e){
e、 printStackTrace();
}
}
/*
*要改进自动削减账单,需要找到适当的方式削减
*/
私有void cutPaper()引发异常{
TempPageCutter pageCutter=新餐厅餐厅餐厅()。新TempPageCutter();
pagecuter.cutReceipt();
}
私有类TempPageCutter实现可打印{
@凌驾
公共整型打印(图形、页面格式、页面格式、整型页面索引)
抛出PrinterException{
如果(页面索引>0)
不返回此类页面;
系统输出打印(“切割”);
图形.抽绳(“”,0,0);
返回页面_存在;
}
public void cutreceive()引发PrinterException{
系统输出打印项次(“剪切收据”);
PrintService[]PrintService=PrinterJob.lookupPrintServices();
if(printService==null | | printService.length<1){
返回;
}
PrinterJob job=PrinterJob.getPrinterJob();
作业。可设置打印(此);
job.print();
}
}
如果有人能帮助我更好地实现自动剪切功能,那将是一个很大的帮助。我能够通过在windows 7打印机设置页面中将bixolon srp 350 plus打印机设置为默认打印机来解决自动剪切问题。还是有点奇怪。如果有人能帮助我更好地实现自动切割功能,这仍然是一个很大的帮助。干杯 你需要一个jar文件来使用bixolon打印机打印吗?我有一个,想用java打印到它…没有必要。但是,如果您使用web浏览器打印,我使用QZ打印,它非常好。但是,如果您想从java应用程序打印,那么您必须将细节与打印大小对齐,并且只需调用java api即可。我将PrintService与DocPrintJob和其他Java类一起使用。您是如何剪纸的?我使用的是D420,打印似乎正常,但纸张只是不断进纸,进纸大约1米,然后错误地停止。我想我需要强制剪切,如果你有一个例子,那就太好了。我使用上面的代码来剪切纸张,但正如我所说的,我在剪切时遇到了一些问题,但通过将打印机设置为默认打印机,我能够解决它。我以前从未使用过使用JAVA的Bixolon打印机。你能给我一个开胃酒吗?一个简单的例子如何使用JAVA打印。