目次 | 前の項目 | 次の項目 | JavaTM 印刷サービス API ユーザガイド |
通常、クライアントから印刷ジョブを送信するときは、複数の処理命令を渡す必要があります。たとえば、A4 媒体を使用し、横方向に印刷することを指定します。クライアントでは、複数の処理命令をプリンタに送信するために、それらの情報を表す属性を収集して 1 つの属性セットにまとめます。Java 印刷サービス API では、属性セットは AttributeSet インタフェースとして表現されます。AttributeSet インタフェースは、java.util.Map インタフェースと似ています。つまり、値およびキーの対応関係を指定し、各キーは一意で、1 つの値しか指定できません。ただし、AttributeSet インタフェースは、Java 印刷サービス API の要件に対応するためのインタフェースです。AttributeSet の要件は次のとおりです。
- AttributeSet 内の各キーは特定のカテゴリに対応し、キーの値は、そのキーが表現するカテゴリに属している属性値のうちのいずれかとする。したがって Map と異なり、AttributeSet のキーには、指定できる値が制限される。つまり、属性カテゴリには、そのカテゴリに属してない属性値を設定することができない
- 属性セットには、Attribute インタフェースを実装している属性だけを追加できる
- AttributeSet には、特定のカテゴリの特定の属性だけを含めることができる。たとえば、特定の属性セットに Media 属性がすでに含まれているとする。この属性セットに別の Media 属性を追加すると、元の Media 属性は上書きされる
属性セットには、単一属性と同様に、機能が割り当てられます。この機能は、AttributeSet のサブインタフェースによって定義されます。AttributeSet のサブインタフェースは、Attribute のサブインタフェースに似ています。「属性の機能」を参照してください。AttributeSet のサブインタフェースは、PrintRequestAttributeSet、PrintJobAttributeSet、DocAttributeSet、および PrintServiceAttributeSet で構成されます。属性セットの機能によって、構成される属性の種類が決まります。たとえば、印刷要求の属性セットを、印刷要求の属性だけで構成できます。Java 印刷サービス API には、AttributeSet インタフェースの固定実装として HashAttributeSet が組み込まれていますが、開発者が独自の実装を組み込むこともできます。多くのアプリケーションでは、HashAttributeSet を直接使用せずに、HashAttributeSet のサブクラス (HashPrintRequestAttributeSet、HashPrintJobAttributeSet、HashDocumentAttributeSet、および HashPrintServiceAttributeSet) を使用します。これらのサブクラスには、AttributeSet の対応するサブインタフェースが実装されます。たとえば、PrintRequestAttributeSet は AttributeSet を継承し、PrintRequestAttributeSet の固定実装は HashPrintRequestAttributeSet になります。属性セットを作成するときに、HashPrintRequestAttributeSet、または PrintRequestAttributeSet の任意の実装を使用したときは、要求属性だけを含めることができます。
PrintRequestAttributeSet のサブクラスと異なり、HashAttributeSet には任意の種類の属性を含めることができます。複数の種類の属性を属性セットに含めるときは、HashAttributeSet をアプリケーションから直接使用します。たとえば、PrintService の getUnsupportedAttributes メソッドから返される属性セットを挙げることができます。サポートされない属性が返されたときに、その属性は複数の属性機能に属している可能性があります。
多くのアプリケーションでは、単一属性を使用する場合と同様に、要求属性セットを作成します。印刷要求の指定は、印刷アプリケーションの主要な機能であるためです。要求属性セットを作成するときは、HashPrintRequestAttributeSet クラスのいずれかのコンストラクタを使用します。
次の節では、属性セットに追加できる属性のうち、使用頻度の高いものについて説明します。PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();