6

Javaを使用してPDFを印刷する際に問題があります。Java は印刷 PDF をネイティブにサポートしていないため、Java には PDF レンダラーがないことがわかっています。この問題を解決するために、私は PDFRenderer ライブラリを使用しています。これを使用して印刷する例を次に示します。

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

正常に動作しますが、プリンター ジョブのステータスを取得する方法が必要です。プリンターのジョブがいつ終了したかを知り、別のジョブを開始できるようにする必要があります。Java API には DocPrintJob と PrintJobListener を使用した優れたソリューションがありますが、PDF 印刷には PrinterJob を使用する必要があります。では、DocPrintJob の場合のように、PrinterJob からジョブ ステータスをリッスンするにはどうすればよいでしょうか。

4

2 に答える 2

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);
于 2014-11-20T14:50:13.870 に答える