目次 | 前へ | 次へ

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

新しい API injava.awt.print は、次の新しい 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, 2013, Oracle and/or its affiliates. All rights reserved.
連絡先