Ho un problema per stampare un PDF usando java. So che Java non supporta la stampa in formato PDF perché java non ha un renderer PDF. Quindi, per risolvere questo problema che sto usando una biblioteca PDFRenderer e qui è un esempio per la stampa con esso:PDF PrinterJob get Job status
File f = new File("myfile.pdf");
FileInputStream fis = new FileInputStream(f);
FileChannel fc = fis.getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0,
fc.size());
PDFFile pdfFile = new PDFFile(bb);
PDFPrintPage pages = new PDFPrintPage(pdfFile);
PrinterJob pjob = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
pjob.setJobName(f.getName());
pjob.setPrintService(mPrintService);
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
pjob.print();
Funziona bene, ma ho bisogno di un modo per ottenere lo stato del mio lavoro di stampa. Ho bisogno di sapere quando il mio lavoro di stampa è finito che posso iniziare un altro. L'API Java ha una buona soluzione con DocPrintJob e PrintJobListener, ma ho bisogno di usare PrinterJob per la mia stampa PDF. Quindi, come posso ascoltare lo stato del lavoro dal mio PrinterJob come fa in DocPrintJob?
È possibile utilizzare in modo appropriato PrintServic.addPrintServiceAttributeListener. Non è utile come PrintJobListener, ma credo che risolva il problema. – Jayan
@Jayan Il problema è anche io uso un PrintService.addPrintServiceAttributeListener Non riesco a ottenere un PrinterState, per alcuni motivi ESSO SEMPRE È nullo (myPrintService.getAttribute (PrinterState.class)) – whizzzkey