Java 印刷サービス API に組み込まれている javax.print.PrintServiceLookup クラスは、アプリケーションがプリンタを検索するために使用する static メソッドを提供します。
アプリケーションは、DocFlavor と AttrbuteSet を指定して PrintServiceLookup の lookupPrintServices メソッドを呼び出します。
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT; PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(MediaSizeName.ISO_A4); aset.add(new Copies(2)); PrintService[] service = PrintServiceLookup.lookupPrintServices(flavor, aset);このメソッドは、属性セットで指定された機能を持ち、かつドキュメントフレーバで指定されたデータ書式を印刷できるプリンタを表す印刷サービスの配列を返します。DocFlavor の選択および AttributeSet の作成の詳細は、「属性」の章および「ドキュメントの種類の指定」の章を参照してください。
lookupPrintServices メソッドから返されるプリンタの基本セットは、プラットフォームによって返されるプリンタのセットと同じです。たとえば、Windows NT を使用しているときは、Windows のコントロールパネルの中の「プリンタ」に表示されるプリンタセットと同じです。同様に、Solaris を使用しているときは、System V Unix の「lpstat」コマンドが列挙するプリンタと同じです。ただし、Sun 以外のベンダーはプリンタセットを拡張できるため、JINI プリンタなどの追加プリンタが返されることもあります。
適切な PrintService を取得したら、アプリケーションは、属性カテゴリに対してサポートされている値を判定するために、その多数の照会メソッドにアクセスできます。PrintService から印刷ジョブを取得する方法については、「印刷ジョブの取得」のセクションを参照してください。
StreamPrintServiceFactory クラスには、ストリーム印刷サービスを検索するための lookupStreamPrintServiceFactories メソッドが組み込まれています。このメソッドには、PrintServiceLookup の lookupPrintServices メソッドと同様に、入力ドキュメントの種類を表現する DocFlavor を引数として指定します。この例では、DocFlavor.INPUT_STREAM.GIF です。ただし、lookupPrintServices と異なり、このメソッドには MIME タイプの引数も指定できます。MIME タイプによって、出力の書式を指定します。この例では、GIF を Postscript に変換するため、MIME タイプは「application/postscript」です。DocFlavor クラスには、DocFlavor の MIME タイプを返す getMimeType メソッドが組み込まれています。lookupStreamPrintServicesFactories メソッドを実行すると、StreamPrintServiceFactory オブジェクトの配列が返されます。このオブジェクトは、StreamPrintService インスタンスのファクトリです。次のコード例では、StreamPrintServiceFactory オブジェクトの配列を取得しています。このオブジェクトを使用して、GIF イメージを PostScript に変換できる StreamPrintService オブジェクトを取得できます。
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType(); StreamPrintServiceFactory[] psfactories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories( flavor, psMimeType);StreamPrintServiceFactory オブジェクトには、getPrintService と呼ばれるインスタンスメソッドが組み込まれています。このメソッドは OutputStream パラメータを取り、そのストリームに書き込む StreamPrintService インスタンスを作成します。
FileOutputStream fos = new FileOutputStream(filename); StreamPrintService psService = psfactories[0].getPrintService(fos);JDK V1.4 には、Pageable や Printable などのインタフェースによるグラフィックス呼び出しから Postscript をエクスポートできる 1 つのストリーム印刷サービスが組み込まれています。このサービスが使用できるかどうかを確認するには、StreamPrintServiceFactory クラスを使用してサービスを検索します。2D グラフィックスのストリーム配信については、「2D グラフィックスの印刷とストリーム配信」の章を参照してください。
StreamPrintService には、PrintService が実装されています。つまり、PrintService を使用できる場合は、常に StreamPrintService を使用できます。ジョブがストリームに印刷されたら、アプリケーションから出力ストリームを閉じます。ストリームを閉じると、StreamPrintService インスタンスは使用できなくなります。