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
インスタンスは使用できなくなります。