打印作业提交给打印机,使用虚拟打印机但不是真正的打印机。 Java的

时间:2015-08-07 09:23:22

标签: java printing

我是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 printDataTransferCompletedprintJobNoMoreEvents被调用但不是printJobCompletedprintJobFailed。我正在使用JDK version 1.7.0_65进行开发。

0 个答案:

没有答案