Java Print Service APIに含まれるjavax.print.PrintServiceLookupクラスは、アプリケーションがプリンタの検索に使用する静的メソッドを提供します。
アプリケーションは、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で指定されたデータ形式を出力できるプリンタを表す印刷サービスの配列を返します。 DocFlavorの選択およびAttributeSetの作成の詳細は、「属性」の章および「文書タイプの指定」の章を参照してください。
lookupPrintServicesメソッドから返されるプリンタのベース・セットは、プラットフォームから返されるプリンタのセットと同じです。 たとえば、Windows NTを使用しているときは、Windowsのコントロール・パネルの中の「プリンタ」に表示されるプリンタ・セットと同じです。 同様に、Solarisを使用する場合、返されるプリンタはSystem V UNIXのlpstatコマンドで列挙されたプリンタと同じです。 ただし、サード・パーティがこれらのセットを拡張できるため、JINIプリンタなどの追加プリンタを返すことができます。
適切なPrintServiceを取得した後、アプリケーションは多数の問合せメソッドにアクセスして、属性カテゴリでサポートされる値を決定できます。 「印刷ジョブの取得」セクションでは、PrintServiceから印刷ジョブを取得する方法について説明します。
StreamPrintServiceを使用してGIFドキュメントをPostscriptに変換する方法を示します。
StreamPrintServiceFactoryクラスには、ストリーム出力サービスを見つけるためのlookupStreamPrintServiceFactoriesメソッドがあります。 このメソッドは、PrintServiceLookupのlookupPrintServicesメソッドと同様に、入力ドキュメントの型を表すDocFlavor(この場合はDocFlavor.INPUT_STREAM.GIF)を取ります。 lookupPrintServicesとは異なり、このメソッドはMIMEタイプも取ります。 MIMEタイプによって、出力の書式を指定します。 この例では、GIFをpostscriptに変換するため、MIMEタイプは"application/postscript"です。 DocFlavorクラスには、DocFlavorからMIMEタイプを戻すためのgetMimeTypeメソッドがあります。 lookupStreamPrintServicesFactoriesメソッドは、StreamPrintServiceFactoryオブジェクトの配列(StreamPrintServiceインスタンスのファクトリ)を返します。 このコード・サンプルでは、GIFイメージをPostScriptに変換できるStreamPrintServiceオブジェクトを返すことができるStreamPrintServiceFactoryオブジェクトの配列を取得する方法を示します:
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;
String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();
StreamPrintServiceFactory[] psfactories =
StreamPrintServiceFactory.lookupStreamPrintServiceFactories(
flavor, psMimeType);
StreamPrintServiceFactoryオブジェクトには、OutputStreamパラメータを取得し、そのストリームに書き込むStreamPrintServiceインスタンスを作成するgetPrintServiceというインスタンス・メソッドがあります:
FileOutputStream fos = new FileOutputStream(filename); StreamPrintService psService = psfactories[0].getPrintService(fos);JDK V1.4には、
PageableインタフェースやPrintableインタフェースなどのグラフィック・コールからPostscriptをエクスポートできるストリーム印刷サービスが1つ含まれています。 このサービスの可用性を検証するには、StreamPrintServiceFactoryクラスを使用してサービスの検索を試行します。 2Dグラフィックスのストリーム配信については、「2Dグラフィックスの印刷とストリーム配信」の章を参照してください。
StreamPrintService implements PrintService, which means you can use a StreamPrintService wherever you can use a PrintService. ジョブがストリームに出力されたら、アプリケーションから出力ストリームを閉じます。 ストリームがクローズされると、StreamPrintServiceインスタンスは使用できなくなります。