プリンターからステータスを取得するには、印刷ルーチンのリスナーを実装する必要があります。PrinterJob を使用していますが、リスナーの PrintServiceAttributeListener では十分ではありません。代わりに DocPrintJob のリスナーを実装したいと思います。DocPrintJob に変換するにはどうすればよいですか?
これが私の元のコードです:
public void print(int bufWidth, int bufHeight, BufferedImage bufImage, String printerName, String doPrint)
{
try
{
image = bufImage;
if (doPrint.toUpperCase().equals("YES"))
{
PrinterJob printerJob = getPrinterJob(printerName);
PrintService printService = printerJob.getPrintService();
//printService.addPrintServiceAttributeListener(this);
//printerJob.addPrintJobListener(new PrintJobMonitor());
int width = bufImage.getWidth();
int height = bufImage.getHeight();
PageFormat pf = printerJob.defaultPage();
Paper paper = pf.getPaper();
paper.setSize(width, height);
double imageableX = fromCMToPPI(0.1);
double imageableY = fromCMToPPI(0.1);
double imageableWidth = width - fromCMToPPI(0.1);
double imageableHeight = height - fromCMToPPI(0.1);
paper.setImageableArea(imageableX, imageableY, imageableWidth, imageableHeight);
pf.setOrientation(PageFormat.LANDSCAPE);
pf.setPaper(paper);
PageFormat validatePage = printerJob.validatePage(pf);
printerJob.setPrintable(new MyPrintable(), validatePage);
printerJob.print();
}
}
catch (Exception ex)
{
}
}