目次||

PrinterJobを使用したグラフィックスの印刷またはストリーム配信

java.awt.printのAPIは、次のPrinterJobメソッドで構成されています。 printDialogおよびpageDialogメソッドは属性セットをとるため、ユーザーは、これらのダイアログから属性の初期設定を編集できます。

アプリケーションは、PrinterJobを使用して、2Dグラフィックスをプリンタまたは出力ストリームに印刷できます。lookupPrintServicesメソッドは、PrintServiceオブジェクトの配列を返します。各オブジェクトは、2Dグラフィックスを印刷できるプリンタを表現します。lookupStreamPrintServicesメソッドは、StreamPrintServiceFactoryオブジェクトの配列を返します。各オブジェクトは、StreamPrintServiceを返すことができます。アプリケーションからStreamPrintServiceを使用すると、印刷データが出力ストリームに送信されます。StreamPrintServiceでは、ドキュメントを印刷する以外に、2Dグラフィックスを他の書式にも変換できます。このセクションでは、PrinterJobを使用して、2Dグラフィックスをプリンタまたは出力ストリームに送信する方法について説明します。


2Dグラフィックスの印刷

pageDialog、printDialog、および印刷メソッドを使用すると、次のコード例に示すように、アプリケーションは印刷設定を初期化し、これらの設定をダイアログに渡すことができます。これにより、ユーザーは、印刷要求を送信する前にこれらの設定を更新できるようになります。

// Step 1: Set up initial print settings.
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
// Step 2: Obtain a print job.
PrinterJob pj = PrinterJob.getPrinterJob();
// Step 3: Find print services.
PrintService []services = PrinterJob.lookupPrintServices();
if (services.length > 0) {
        System.out.println("selected printer: " + services[0]);
        try {
        pj.setPrintService(service[0]); 
        // Step 2: Pass the settings to a page dialog and print dialog.
        pj.pageDialog(aset);
        if (pj.printDialog(aset)) {
                // Step 4: Update the settings made by the user in the dialogs.
                // Step 5: Pass the final settings into the print request.
                pj.print(aset);
        }
        } catch (PrinterException(pe)) {
                System.err.println(pe):
        }
} 

アプリケーション全体については、「例: Print2DPrinterJob.java」を参照してください。

このコード例のステップ4は、どの特定のコード行にも対応していないように見えます。実際には、ダイアログ内で印刷設定を更新し、更新した値が「PrintRequestAttributeSet, aset」に保存されます。

Java 2DとJava印刷サービスを一緒に使用した場合の1つの問題として、印刷部数などの一部の属性が両方のAPIで定義されることがあります。このような属性をPrintRequestAttributeSetに定義した場合は、PrinterJobに指定した同じ属性が優先されます。ユーザーが印刷ダイアログ内で印刷部数を更新した場合は、PrinterJobが自動的に更新および反映されます。このとき、既存の動作の再確認をユーザーに要求します。

PageFormatの仕様もまた、Java印刷サービスのMedia、MediaPrintableArea、およびOrientationRequested属性と重複しています。アプリケーションからPrintableインタフェースとprint(PrintRequestAttributeSet)メソッドを使用すると、属性セットに含まれる媒体、印刷方向、および描画可能領域の属性が、新しいPageFormatに追加されます。PageFormatは、Printableオブジェクトの印刷メソッドに渡されます。アプリケーションでPageableインタフェースを使用した場合は、PageFormatは変更されません。


2Dグラフィックスのストリーム配信

アプリケーションはまた、PrinterJobとStreamPrintServiceを使用して、印刷データを出力ストリームに送信することもできます。次の例は前のセクションの例と似ていますが、PrintServiceの代わりにStreamPrintServiceが使用されています。

PrinterJob job = PrinterJob.getPrinterJob();
String psMimeType = "application/postscript";
FileOutputStream outstream; 
StreamPrintService psPrinter; 
StreamPrintServiceFactory []spsFactories =
        PrinterJob.lookupStreamPrintServices(psMimeType);
if (factories.length > 0) { 
        try { 
                outstream = new File("out.ps"); 
                psPrinter = factories[0].getPrintService(fos); 
                // psPrinter can now be set as the service on a PrinterJob 
        } catch (FileNotFoundException e) { } 
} 
job.setPrintService(service[0]); // if app wants to specify this printer.
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(2));
job.print(aset);
} 


目次||

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.