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