目次 | 前の項目 | 次の項目 | JavaTM 印刷サービス API ユーザーガイド |
新しい API injava.awt.print は、次の新しい PrinterJob メソッドから構成されます。
- 2D グラフィックスの描画に対応した印刷サービスを検索する static メソッド。印刷サービスは、メソッドに応じて、PrintService または StreamPrintServiceFactory オブジェクトの配列として返される。
- PrinterJob の PrintService を設定および取得するメソッド。
- pageDialog メソッド。PrintRequestAttributeSet パラメータを指定する
- printDialog メソッド。PrintRequestAttributeSet パラメータを指定する
- print メソッド。PrintRequestAttributeSet パラメータを指定する
新しい printDialog および pageDialog メソッドには属性セットを指定できるため、ユーザーはダイアログから属性の初期設定を変更できます。アプリケーションから PrinterJob を使用すれば、2D グラフィックスをプリンタまたは出力ストリームに印刷できます。lookupPrintServices メソッドは、PrintService オブジェクトの配列を返します。各オブジェクトは、2D グラフィックスを印刷できるプリンタを表現します。lookupStreamPrintServices メソッドは、StreamPrintServiceFactory オブジェクトの配列を返します。各オブジェクトは、StreamPrintService を返すことができます。アプリケーションから StreamPrintService を使用すると、印刷データが出力ストリームに送信されます。StreamPrintService では、ドキュメントを印刷する以外に、2D グラフィックスを他の書式に変換することができます。ここでは、PrinterJob を使用して、2D グラフィックスをプリンタまたは出力ストリームに送信する方法について説明します。
新しい pageDialog、printDialog、および pring メソッドを使用すれば、アプリケーションから印刷設定を初期化してダイアログに渡すことができます。ユーザーは、印刷の設定値を更新してから、印刷要求を送信することができます。コード例を挙げます。アプリケーション全体については、「例: Print2DPrinterJob.java」を参照してください。// 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): } }上のコード例の「Step 4」は、特定のコード行に対応していません。実際には、ダイアログ内で印刷設定を更新し、更新した値が「PrintRequestAttributeSet, aset」に保存されます。
ここで、Java 2D と Java 印刷サービスを使用するときに、印刷部数などの属性を両方の API に定義した場合を想定します。このような属性を PrintRequestAttributeSet に定義した場合は、PrinterJob に指定した同じ属性が優先されます。ユーザーが印刷ダイアログ内で印刷部数を更新した場合は、PrinterJob が自動的に更新および反映されます。このとき、既存の動作の再確認をユーザーに要求します。
また、PageFormat の仕様も、Java 印刷サービスの Media、MediaPrintableArea、および OrientationRequested 属性と重複しています。アプリケーションから Printable インタフェースと print(PrintRequestAttributeSet) メソッドを使用すると、属性セットに含まれる媒体、印刷方向、およびイメージング可能領域の属性が、新しい PageFormat に追加されます。 PageFormat は、Printable オブジェクトの印刷メソッドに渡されます。アプリケーションで Pageable インタフェースを使用した場合は、PageFormat は変更されません。
アプリケーションでは、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); }