参照: 説明
| インタフェース | 説明 |
|---|---|
| Attribute |
Attributeインタフェースは、クラスが印刷属性を表すことを示すために、任意およびすべての印刷属性クラスによって実装される基本インタフェースです。
|
| AttributeSet |
AttributeSetインタフェースは、印刷属性セットのインタフェースを指定します。
|
| DocAttribute |
DocAttributeインタフェースは、属性がドキュメントの設定を表示することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。
|
| DocAttributeSet |
DocAttributeSetインタフェースは、ドキュメントの属性のセットに対するインタフェースを指定します。
|
| PrintJobAttribute |
PrintJobAttributeは、属性がPrint Jobの状態またはPrint Jobのその他の特性を記述することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。
|
| PrintJobAttributeSet |
PrintJobAttributeSetインタフェースは、印刷ジョブ属性のセットに対するインタフェースを指定します。
|
| PrintRequestAttribute |
PrintRequestAttributeインタフェースは、属性が必要な印刷ジョブの設定を表示することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。
|
| PrintRequestAttributeSet |
PrintRequestAttributeSetインタフェースは、印刷要求属性のセットに対するインタフェースを指定します。
|
| PrintServiceAttribute |
PrintServiceAttributeインタフェースは、属性がPrint Serviceの状態またはPrint Serviceのその他の特性を記述することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。
|
| PrintServiceAttributeSet |
PrintServiceAttributeSetインタフェースは、印刷ジョブ属性のセットに対するインタフェースを指定します。
|
| SupportedValuesAttribute |
SupportedValuesAttributeインタフェースは、属性がほかの属性でサポートされる値を記述することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。
|
| クラス | 説明 |
|---|---|
| AttributeSetUtilities |
AttributeSetUtilitiesクラスは、AttributeSetsを操作する次のstaticメソッドを提供します。
|
| DateTimeSyntax |
DateTimeSyntaxクラスは、日付と時刻を値とするすべての属性の一般的な実装を行う抽象基底クラスです。
|
| EnumSyntax |
EnumSyntaxクラスは、すべての「型保証された列挙」オブジェクトの一般的な実装を提供する抽象基底クラスです。
|
| HashAttributeSet |
HashAttributeSetクラスは、ハッシュ・マップの特性を持つ
AttributeSet実装を提供します。 |
| HashDocAttributeSet |
HashDocAttributeSetクラスは、その実装を
HashAttributeSetクラスから継承し、DocAttributeSetインタフェースの意味上の制限を適用する属性セットを提供します。 |
| HashPrintJobAttributeSet |
HashPrintJobAttributeSetクラスは、その実装を
HashAttributeSetクラスから継承し、PrintJobAttributeSetインタフェースの意味上の制限を適用する属性セットを提供します。 |
| HashPrintRequestAttributeSet |
HashPrintRequestAttributeSetクラスは、その実装を
HashAttributeSetクラスから継承し、PrintRequestAttributeSetインタフェースの意味上の制限を適用します。 |
| HashPrintServiceAttributeSet |
HashPrintServiceAttributeSetクラスは、その実装を
HashAttributeSetクラスから継承し、PrintServiceAttributeSetインタフェースの意味上の制限を適用する属性セットを提供します。 |
| IntegerSyntax |
IntegerSyntaxクラスは、整数値を持つすべての属性の一般的な実装を提供する抽象基底クラスです。
|
| ResolutionSyntax |
ResolutionSyntaxクラスは、プリンタの解像度を示すすべての属性の一般的な実装を提供する抽象基底クラスです。
|
| SetOfIntegerSyntax |
SetOfIntegerSyntaxクラスは、負以外の整数値を持つすべての属性の一般的な実装を提供する抽象基底クラスです。
|
| Size2DSyntax |
Size2DSyntaxクラスは、2次元のサイズを示すすべての属性の一般的な実装を提供する抽象基底クラスです。
|
| TextSyntax |
TextSyntaxクラスは、値が文字列であるすべての属性の一般的な実装を提供する抽象基底クラスです。
|
| URISyntax |
URISyntaxクラスは、値がURI (Uniform Resource Identifier)であるすべての属性の一般的な実装を提供する抽象基底クラスです。
|
| 例外 | 説明 |
|---|---|
| UnmodifiableSetException |
このセットが変更できないので要求されたオペレーションが実行できないことを示すためにスローされます。
|
印刷データと処理命令は別個のエンティティです。これは次のことを意味します。
処理命令は、印刷ジョブが要求を処理する方法を指定しません。各処理命令は、印刷ジョブの結果の説明のみを行います。印刷ジョブは、処理命令により指定された結果を実現する方法を確定します。処理命令の項目を説明的に表現することにより、印刷ジョブの実装により多くの柔軟性が得られます。
Java Print Service APIでは、属性カテゴリは、Attributeインタフェースを実装するJavaクラスによって表されます。属性値は、このようなクラスまたはそのサブクラスの1つのインスタンスです。たとえば、印刷部数を指定するために、アプリケーションは希望する印刷部数を持つCopiesクラスのインスタンスを構築し、印刷要求の一部としてこのCopiesインスタンスを使用します。この場合、Copiesクラスは属性カテゴリを表し、Copiesインスタンスは属性値を表します。
プリンタが印刷ジョブの処理を開始すると、ジョブの状態(完了したジョブ、待機中のジョブなど)や印刷済みのページ数など、さまざまなジョブ情報を取得できます。このような情報も属性です。属性は、プリンタ名、プリンタの位置、および待機するジョブの数などプリンタ自体の情報も記述できます。
Java Print Service APIはAttributeの5つのサブインタフェースを持つ異なる種類の属性を定義します。次にそれらを説明します。
DocAttributeとして1つの印刷ジョブの1つのドキュメントに適用することも、PrintRequestAttributeとして印刷ジョブ全体に適用することもできます。低レベルの属性の中には、単独で使用されず、常に高レベルの属性に統合されるものもあります。これらの低レベルの属性クラスは、Attributeインタフェースだけを実装し、タグ機能サブインタフェースを実装することはありません。
Java Print Service APIは、Internet Printing Protocol (IPP)バージョン1.1の属性にモデル化されている標準属性クラスのグループを定義します。標準属性クラスは、実際の属性クラスを保持するために、パッケージjavax.print.attributeに定義されたジェネリック機能とは概念的に区別されるサブパッケージjavax.print.attribute.standardにあります。
AttributeSetインタフェースはMapインタフェースに似ています。これは値に対するキーのマッピングを提供します。ここで、各キーは一意であり、複数の値を保持できません。ただし、AttributeSetインタフェースは、Java Print Service APIの要件に対応するためのインタフェースです。AttributeSetの要件は次のとおりです。
AttributeSetの各キーはカテゴリに対応し、キーの値はキーによって表されるカテゴリに属する属性値の1つのみをとることができる。このため、Mapと異なり、AttributeSetはキーの使用可能な値を制限する。つまり、属性カテゴリはそのカテゴリに属さない属性値を設定できない。
Attributeインタフェースを実装する属性だけがセットに追加できる。
javax.print.attributeパッケージには、属性セットのインタフェースの具象実装としてHashAttributeSetが含まれます。HashAttributeSetはハッシュ・マップに基づく属性セットを提供します。この実装を使用するか、またはAttributeSetインタフェースの独自の実装を提供することができます。
Java Print Service APIは、「属性の役割」セクションで説明されているとおり、4種類の属性の1つだけを保持するように制限されている属性セットの次の4つの特殊化を提供します。
ここでは4種類の属性セットだけがリストされていますが、5種類の属性があることに注意してください。SupportedValuesAttributeインタフェースは、別の属性でサポートする値を提供する属性を表示します。サポートする値の属性は属性セットには統合されないため、これらを定義する属性セットのサブインタフェースはありません。
一部のコンテキストでは、属性セットは読込み専用の場合がありますが、これはクライアントが属性セットの内容を検査することはできるが変更できないことを意味します。別のコンテキストでは、属性セットが読み込み、書込み可能の場合がありますが、これはクライアントが属性セットの内容の検査と変更の両方を行うことができることを意味します。読込み専用属性セットの場合、変更オペレーションの呼出しはUnmodifiableSetExceptionをスローします。
javax.print.attributeパッケージには、次の各属性セットのサブインタフェースの具象実装の1つが含まれます。
Copiesクラス、Sidesクラス、およびPrinterResolutionクラスなどのクラスとして定義します。各属性クラスは、属性の値を保持する1つ以上の基本データ項目をラップします。属性セットの操作は、属性を追加するとき、同じカテゴリ内に既存の属性を検出するとき、およびそのカテゴリに付与された属性を検索するときに、頻繁に属性カテゴリのオブジェクト間の比較を行います。属性カテゴリはクラスによって表されるので、属性値の速い比較はClass.equalsメソッドによって行えます。
Java Print Service APIには多数の属性カテゴリが含まれますが、属性値の異なる型はほんの少ししかありません。ほとんどの属性は、整数値、整数型の範囲、テキスト、整数値の列挙など少数のデータ型によって表せます。カテゴリが受け入れる属性値の型は、属性の抽象構文と呼ばれます。一貫性を提供し、コードの重複を減らすために、Java Print Service APIは抽象構文クラスを定義して各抽象構文を表し、可能な場合には、これらのクラスは標準属性の親としていつでも使用できます。抽象構文クラスは次のとおりです。
各属性クラスは、直接的または間接的にAttributeインタフェースを実装し、それを印刷属性としてマークします。また、特定のコンテキストで、制限された属性セットに表示される属性クラスは、1つ以上のAttributeのサブインタフェースを実装します。また、ほとんどの属性クラスは、適切な抽象構文クラスを拡張して実装を取得します。Sides属性クラスを次のように考えてください。
public class Sides
extends EnumSyntax
implements DocAttribute, PrintRequestAttribute, PrintJobAttribute
{
public final Object getCategory()
{
return Sides.class;
}
...
}
すべての属性クラスはAttributeを実装するので、すべての属性クラスは、属性カテゴリを返すgetCategoryメソッドの実装を提供する必要があります。Sidesの場合、getCategoryメソッドはSides.classを返します。getCategoryメソッドは、最終的に標準属性クラスの任意のベンダー定義サブクラスが同じカテゴリに表示されるようにします。すべての属性オブジェクトはいったん構築されると不変であり、このため属性オブジェクトの参照を自由に渡すことができます。異なる属性値を取得するには、異なる属性オブジェクトを構築してください。
EnumSyntaxの抽象構文クラスを使用する列挙属性は、コンパイル時に使用可能なすべての属性値を、属性クラスの単独インスタンスとして指定します。これは、新しい列挙値を実行時に構築できないことを意味します。標準列挙属性に対してベンダー固有の新しい値を定義する場合、ベンダーは新しい単独インスタンスを指定する新しい属性クラスを定義する必要があります。新しい属性値が標準属性値と同じカテゴリの中に入るようにするには、新しい属性クラスを標準属性クラスのサブクラスにしなければいけません。
新しい属性カテゴリを定義する場合、ベンダーは新しい属性クラスを定義します。この属性クラスは、標準属性クラスと同じように、Attributeまたはそのサブインタフェースの1つを実装し、抽象構文クラスを拡張します。ベンダーは既存の抽象構文クラスを使用することも、新しい抽象構文クラスを定義することもできます。ベンダーが定義した新しい属性は、AttributeSetなどのようなAttributeが使用されるところではどこでも使用できます。
PrintRequestAttributeSetを使用します。次の例は、印刷要求属性の属性セットを作成し、指定された属性によってドキュメントを印刷できるプリンタの検出を示しています。
FileInputStream psStream;
try {
psstream = new FileInputStream("file.ps");
} catch (FileNotFoundException ffne) {
}
if (psstream == null) {
return;
}
//Set the document type. See the DocFlavor documentation for
//more information.
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
Doc myDoc = new SimpleDoc(pstream, psInFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
aset.add(MediaSize.A4);
aset.add(Sides.DUPLEX);
PrintService[] services =
PrintServiceLookup.lookupPrintServices(psInFormat, aset);
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try {
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
注: javax.print APIでは、メソッドへのnull参照パラメータ指定は、ドキュメントに意味が明記されている場合を除いては不正であることに注意してください。これに反する使用は無効なコーディングであり、すぐにまたはあとで実行時の例外が生ずる結果になります。IllegalArgumentExceptionおよびNullPointerExceptionは、このような場合の典型的で許容できる実行時の例外の事例です。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.