我使用Java Printer API进行打印。我的打印机需要通过电线连接。因此,当未连接该电缆(到我的电脑)时,应抛出PrinterException。当我第一次运行程序时,抛出异常。但是第二次,异常没有被抛出,程序正常结束。重新启动操作系统后,首次运行会抛出异常。
我的想法是看起来打印机作业正在等待打印机连接。连接打印机时,会自动打印以前的数据。
我想知道每当打印机断开连接时我应该添加什么来抛出PrinterException。现在它只在第一次运行时抛出,我需要重新启动操作系统来测试行为。
这是我的代码:
PrintService ps = PrinterService.getPrintService(
printer.getValue());
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(OrientationRequested.PORTRAIT);
aset.add(new JobName(" - Document", null));
aset.add(MediaSizeName.ISO_DESIGNATED_LONG);
DocPrintJob printjob = ps.createPrintJob();
Doc doc = new SimpleDoc(new PrintableReceipt(mydata),
DocFlavor.SERVICE_FORMATTED.PRINTABLE, null);
try
{
printjob.print(doc, aset);
Thread.sleep(2000);
}
catch (PrintException printerException)
{
// printjob.removePrintJobListener(this);
printStatus.put("printStatus", false);
return addCORS(Response.serverError().entity(
JSON.encode(printStatus)).build());
}
答案 0 :(得分:0)
当没有连接电缆(到我的电脑)时,应该抛出PrinterException
这不是它在Javadoc中所说的内容。 做什么说的是:
当打印方法返回时,打印可能尚未完成,因为打印可能是异步发生的,可能是在不同的线程中。想要监控成功或失败的应用程序客户端应该注册
PrintJobListener.
这样做。
答案 1 :(得分:0)
现在,据我所知,这是因为Java版本不同。当我们将Java版本从1.8.0_20更改为1.8.0_51时,就会发生这种情况。在早期版本中,我们可以设置为队列并可以捕获异常。但是在1.8.0_51,队列成为默认值,无法修改行为。