3

プリンターからステータスを取得するには、印刷ルーチンのリスナーを実装する必要があります。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)
   {
   }
}
4

1 に答える 1

-1

PrinterJob で getPrintService を呼び出すと、メソッド addPrintServiceAttributeListener を持つ javax.print.PrintService を取得できます。これにより、PrintServiceAttributeEvents をリッスンできます。

于 2013-10-04T05:15:11.993 に答える