我是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
进行开发。