2014-11-14 13 views
6

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?

+0

È possibile utilizzare in modo appropriato PrintServic.addPrintServiceAttributeListener. Non è utile come PrintJobListener, ma credo che risolva il problema. – Jayan

+0

@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

risposta

2
javafx.print 
Enum PrinterJob.JobStatus 

java.lang.Object 
java.lang.Enum<PrinterJob.JobStatus> 
javafx.print.PrinterJob.JobStatus 


public static PrinterJob.JobStatus[] values() 
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows: 
for (PrinterJob.JobStatus c : PrinterJob.JobStatus.values()) 
    System.out.println(c); 
+0

È javafx.print, non il vecchio java. awt.print. Sai come javafx.print un pdf? – whizzzkey