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」コマンドが列挙するプリンタと同じです。ただし、サード・パーティはプリンタ・セットを拡張できるため、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インスタンスは使用できなくなります。