我是java新手,在java中遇到打印服务问题 . 我正在尝试用Java创建一个桌面应用程序,它安装在系统中,调用api,返回结果并打印 .
仅当我们从api获得结果时才调用打印服务 . 所以我的问题是,当我在我的Windows机器上尝试这个应用程序时,它完全按照我想要的方式使用虚拟打印机,当我将它作为默认打印机时,但是对于我的真实打印机不起作用,即使它是默认的打印机 .
我们是否需要添加一些配置或端口号才能在真正的打印机中工作?这是源代码
try {
HttpEntity entity = orderRes.getEntity();
if (entity != null){
//String retSrc = EntityUtils.toString(entity, "UTF-8");
byte[] byteSRC = Base64.decodeBase64(EntityUtils.toByteArray(entity));
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
System.out.println(service);
DocPrintJob printJob = service.createPrintJob();
printJob.addPrintJobListener(new ClientApiPrintTask.JobCompleteMonitor());
if(byteSRC != null) {
Doc doc = new SimpleDoc(byteSRC, flavor, null);
printJob.print(doc, null);
Thread.sleep(3000);
}
}
//System.out.println("Exiting app");
} catch (PrintException ex) {
Logger.getLogger(ClientApiPrintTask.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(ClientApiPrintTask.class.getName()).log(Level.SEVERE, null, ex);
} finally {
res.close();
}
我添加了一个打印作业监听器来查找问题,我可以找到的是调用PrintJobEvent printDataTransferCompleted 和 printJobNoMoreEvents 但不是 printJobCompleted 或 printJobFailed . 我正在使用 JDK version 1.7.0_65 进行开发 .