目次||

サービスの検索

アプリケーションは、ストリーム印刷サービスの検索とは少し異なる方法で印刷サービスを検索します。 印刷サービスの検索」のセクションでは、印刷サービスの検索について説明します。 「ストリーム印刷サービスの検出」セクションでは、ストリーム出力サービスの検索について説明します。

印刷サービスの検索

印刷ジョブをプリンタに送信する前に、アプリケーションは、その印刷ジョブを処理できるプリンタを検索する必要があります。 両面文書を印刷するには、最初に両面印刷機能を持つプリンタを見つける必要があります。

Java Print Service APIに含まれるjavax.print.PrintServiceLookupクラスは、アプリケーションがプリンタの検索に使用する静的メソッドを提供します。

アプリケーションは、DocFlavorおよびAttrbuteSetを使用してPrintServiceLookuplookupPrintServicesメソッドを呼び出します:

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メソッドがあります。 このメソッドは、PrintServiceLookuplookupPrintServicesメソッドと同様に、入力ドキュメントの型を表す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インスタンスは使用できなくなります。



目次||

Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved.