2014-11-14 20 views
6

Java kullanarak bir PDF yazdırmak için bir sorunum var. Java'nın baskı PDF'yi desteklemediğini biliyorum çünkü java'nın bir PDF oluşturucuya sahip olmaması neden oluyor. Bu yüzden onunla baskı için bir örnek bir PDFRenderer kitaplığı kullanarak ve burada yaşıyorum bu sorunu çözmek için:PDF YazıcıJob iş durumu

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(); 

Düzgün çalışır, ama benim yazıcı işin durumunu almak için bir yol gerekir. Yazıcımın ne zaman bitirileceğini bilip bilmem gerek. Java API, DocPrintJob ve PrintJobListener ile iyi bir çözüme sahiptir, ancak PDF yazdırma için PrinterJob kullanmam gerekiyor. Öyleyse, PrinterHob'daki iş durumunu DocPrintJob'da nasıl dinleyebilirim?

+0

PrintServic.addPrintServiceAttributeListener'ı kullanabilirsiniz. PrintJobListener kadar yararlı değil ama sanırım sorununuzu çözebilirsiniz. – Jayan

+0

@Jayan Sorun bir PrintService.addPrintServiceAttributeListener kullanıyorum. Bazı nedenlerden dolayı bir PrinterState alamıyorum, IT ALWAYS IS sıfır (myPrintService.getAttribute (PrinterState.class)) – whizzzkey

cevap

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

Bu javafx.print, eski java değil. awt.print. Bir pdf'nin nasıl javafx.print olduğunu biliyor musunuz? – whizzzkey