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 からジョブ ステータスをリッスンするにはどうすればよいでしょうか。