PrintJobEvents上的printJobCompleted在java中不起作用

PrintJobEvents上的printJobCompleted在java中不起作用,java,printing,Java,Printing,我目前正在使用物理打印机打印pdf文档。打印操作成功,但未在PrintJobEvents上完成PrintJob的执行。我想知道为什么printDataTransferCompleted和printJobNoMoreEvents工作时它不工作 这是我的代码: PdfBook pdfBook = new PdfBook(decodePdf, printingDevice, attributeSet); SimpleDoc doc = new SimpleDoc(pdfBook, Do

我目前正在使用物理打印机打印pdf文档。打印操作成功,但未在PrintJobEvents上完成PrintJob的执行。我想知道为什么printDataTransferCompleted和printJobNoMoreEvents工作时它不工作

这是我的代码:

    PdfBook pdfBook = new PdfBook(decodePdf, printingDevice, attributeSet);
    SimpleDoc doc = new SimpleDoc(pdfBook, DocFlavor.SERVICE_FORMATTED.PAGEABLE, null);
    DocPrintJob printJob = printingDevice.createPrintJob();
    //ADD A LISTENER
   printJob.addPrintJobListener(new PrintJobAdapter() {
        @Override
        public void printDataTransferCompleted(PrintJobEvent event) {
        System.out.println("Data transfer is complete");
        String itwillout = "Destined";
        System.out.println(itwillout);
    }
        @Override
        public void printJobCompleted(PrintJobEvent event) {
        System.out.println("Data transfer is complete");
        String verify = "This means that the print job is complete!";
        System.out.println(verify);
        variablez = "abc";
    }
        @Override
        public void printJobNoMoreEvents(PrintJobEvent event) {
        System.out.println("No more events will be received");
    }
    });
 try {
      printJob.print(doc, attributeSet);


    } catch (PrintException e) {
        LogWriter.writeLog("Exception " + e + " printing");
    }

    decodePdf.closePdfFile();  

//I placed this to verify if the job is completed

    while(variablez != "abc"){
        System.out.println("The printer is not yet finished in printing!");
                try {
                    Thread.sleep(7000);                 //1000 milliseconds is one second.
                } catch(InterruptedException ex) {
                    Thread.currentThread().interrupt();
                }
       if (variablez == "abc"){
                    break;
                }
    }
    if (done == true){
    System.out.println("Exiting printing process"); 

}
是问题上面的代码,还是我正在使用的打印机?或者我遗漏了上面代码中的某些内容

我的目标是:while循环将持续运行,直到满足特定条件。如果variablez等于字符串“abc”,那么它将退出循环并执行其余的命令或代码


注意:我声明字符串variablez=null;在类的最上面部分

仅对我而言
printDataTransferCompleted
printJobNoMoreEvents
调用了名称,无法获得任何其他事件。同样由于某些原因,每一个都会被连续调用两次。。。仍然在寻找这个问题的答案。