目次 | 前の項目 | 次の項目 JavaTM 印刷サービス API ユーザガイド


サービスの検索

印刷サービスの検索およびストリーム印刷サービスの検索は、多少異なっています。「印刷サービスの検索」では、印刷サービスの検索について説明します。「ストリーム印刷サービスの検索」では、ストリーム印刷サービスの検索について説明します。


印刷サービスの検索

印刷ジョブをプリンタに送信するには、印刷データを処理できるプリンタをアプリケーションから検索する必要があります。両面印刷のドキュメントを印刷するには、両面印刷機能を持ったプリンタをまず検索する必要があります。

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 から印刷ジョブを取得する方法については、「印刷ジョブの取得」を参照してください。


ストリーム印刷サービスの検索

アプリケーションでは、ストリーム印刷サービスを使用して、印刷データを別の書式に変換できます。たとえば、特定の書式の印刷データを印刷できるプリンタがない場合に、書式を変換します。ここでは、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 インスタンスのファクトリです。次のコード例では、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 をエクスポートできます。このサービスが使用できるかどうかを確認するには、StreamPrintServiceFactory クラスを使用してサービスを検索します。2D グラフィックスのストリーム配信については、「2D グラフィックスの印刷とストリーム配信」を参照してください。

StreamPrintService には、PrintService が実装されています。つまり、PrintService を使用できるときは、StreamPrintService を常に使用できます。ジョブがストリームに印刷されたら、アプリケーションから出力ストリームを閉じます。ストリームを閉じると、StreamPrintService インスタンスは使用できなくなります。



目次 | 前の項目 | 次の項目
Copyright © 2001 Sun Microsystems, Inc. All Rights Reserved.