JavaTM 2
Platform
Std. Ed. v1.4.0

javax.print
クラス DocFlavor

java.lang.Object
  |
  +--javax.print.DocFlavor
すべての実装インタフェース:
Cloneable, Serializable
直系の既知のサブクラス:
DocFlavor.BYTE_ARRAY, DocFlavor.CHAR_ARRAY, DocFlavor.INPUT_STREAM, DocFlavor.READER, DocFlavor.SERVICE_FORMATTED, DocFlavor.STRING, DocFlavor.URL

public class DocFlavor
extends Object
implements Serializable, Cloneable

DocFlavor クラスは、印刷データの DocPrintJob への提供形式を指定するオブジェクトをカプセル化します。「Doc」は、印刷データの一部を意味する、短く発音しやすい用語です。印刷データ形式である「doc フレーバ」は、以下の 2 つで構成されます。

DocPrintJob は、Doc インタフェースを使用して印刷データを取得します。DocPrintJob は、Doc オブジェクトを使用して、クライアントが提供可能な doc フレーバを判別できます。また、DocPrintJob は、Doc オブジェクトを使用して、doc フレーバの表現クラスのインスタンスを取得することもできます。DocPrintJob は、このインスタンスから実印刷データを取得します。


クライアント形式の印刷データ

印刷データは、クライアント形式の印刷データとサービス形式の印刷データの 2 つのカテゴリに大きく分けることができます。

クライアント形式の印刷データの場合、クライアントは印刷データ形式を認識または判別します。たとえば、クライアントは、JPEG でエンコードされたイメージ、HTML コードの URL、またはどれかのエンコーディングのプレーンテキストファイルを含むディスクファイルを (外部ソースから取得するなどして) 保持することができ、印刷サービスにデータ形式を記述する手段を必要とします。

doc フレーバの表現クラスは、JPS DocPrintJob のコンジットです。この表現クラスを使用して、クライアントから文字またはバイトシーケンスを取得できます。doc フレーバの MIME タイプは、文字またはバイトシーケンスの解釈方法を指定する、どれかの標準メディアタイプです。標準メディアタイプのリストについては、Internet Assigned Numbers Authority (IANA) の 「Media Types Directory」 を参照してください。インタフェース Doc は、Doc オブジェクトのクライアントがクライアント形式の印刷データを抽出する際に利用可能な 2 つのユーティリティ操作、getReaderForText および getStreamForBytes() を提供します。

通常、クライアント形式の印刷データは、次のどれかの印刷データ表現クラスになります (他の表現クラスも使用可能)。


デフォルトおよびプラットフォームのエンコーディング

doc フレーバの MIME タイプに charset パラメータが含まれないバイト印刷データの場合、Java Print Service インスタンスは、US-ASCII 文字セットがデフォルトで設定されているものと判断します。これは、デフォルト文字セットを US-ASCII とするという、RFC 2046 に基づく動作です。US-ASCII は UTF-8 のサブセットであるため、将来 RFC により UTF-8 がデフォルトとして承認された場合、US-ASCII が互換性を維持しつつ拡張される可能性があります。

また、これは、バイトストリームをテキストデータとして解釈する場合の Java 実行時の動作とは異なる場合があります。この場合には、ユーザのロケールのデフォルトエンコーディングと判断されるためです。このため、ローカルエンコーディングのファイルを Java Print Service にスプールする場合には、エンコーディングを正確に指定することが重要です。特に、英語ロケールで作業を行う開発者は、自らのプラットフォームエンコーディングがデフォルト MIME 文字セットに対応しているので、この点を意識する必要があります。場合によっては、プラットフォームデータのエンコーディングを指定しなくても動作することがあるためです。

Java 仮想マシンの各インスタンスは、仮想マシンの起動時に決定されるデフォルト文字セットを保持します。また、通常、基本オペレーティングシステムが使用するロケールおよび文字セットに依存します。分散環境では、2 つの VM が同じデフォルトエンコーディングを共有することは保証されません。このため、プラットフォームで符号化されたテキストデータを、ホストプラットフォームから Java Print Service インスタンスにストリーム処理するクライアントは、文字セットを明示的に宣言して、デフォルトに依存しないようにする必要があります。

優先される形式は、エンコーディングの正式な IANA プライマリ名です。テキストデータをストリーム処理するアプリケーションは、文字セットを常に MIME タイプで指定する必要があります。このため、ホストプラットフォームのエンコーディングで保存されたデータ (ファイルなど) に関する、プラットフォームのエンコーディングを取得する必要があります。これに対応し、DocFlavor の MIME タイプでの使用に適した CharSet は、DocFlavor.hostEncoding から取得できます。これは、常にプライマリ IANA 名というわけではありませんが、確実にこの仮想マシンにより理解されます。一般的なフレーバの場合、定義済みの *HOST DocFlavors を使用できます。

Java プラットフォームでサポートされる文字セットの詳細は、「文字セット」 を参照してください。


推奨される DocFlavor

Java Print Service API は、強制的にサポートされる DocFlavor を定義しません。ただし、Java Print Service インスタンスが、クライアント形式の印刷データでサポート可能な MIME タイプの例をいくつか示します。DocFlavor クラス内部で入れ子になっているクラスは、これらのサンプル doc フレーバに対して、事前定義された static 定数 DocFlavor オブジェクトを宣言します。DocFlavor クラスのコンストラクタは、任意の doc フレーバの作成に使用できます。


サービス形式の印刷データ

サービス形式の印刷データの場合、Java Print Service インスタンスが印刷データ形式を判別します。doc フレーバの表現クラスが示すインタフェース (描画可能なイメージインタフェースや Java 2 で印刷可能なインタフェースなど) のメソッドが、DocPrintJob により呼び出され、印刷する内容が決定されます。doc フレーバの MIME タイプは、特殊な値 "application/x-java-jvm-local-objectref" になります。この値は、表現クラスとして命名されたインタフェースを実装するクライアントが Java オブジェクトへの参照を提供することを表します。この MIME タイプは単なるプレースホルダであり、重要なのは印刷データ表現クラスです。

サービス形式の印刷データの場合、印刷データ表現クラスは (他の表現クラスを利用可能な場合でも) 通常次のどれかになります。DocFlavor クラス内部で入れ子になったクラスは、これらのサンプル doc フレーバの場合、定義済みの static 定数 DocFlavor オブジェクトを宣言します。DocFlavor クラスのコンストラクタを使用して、任意の doc フレーバを作成できます。



定義済みの doc フレーバ

Java Print Service インスタンスには、次の印刷データ形式および印刷データ表現クラスをサポートすることは要求されていません。実際、このクラスを使用する開発者は、これらの定義済み doc フレーバに対応するドキュメントタイプを特定の印刷サービスがサポートしているとは絶対に想定しないでください。常に印刷サービスに照会を行って、サポートする doc フレーバを判別してください。ただし、これらの doc フレーバをサポートする印刷サービスを保持する開発者は、ここで作成された定義済みの単独インスタンスを参照することをお勧めします。

Java Print Service インスタンスは、上記の必須 doc フレーバに加え、任意の doc フレーバをサポート可能です (必須の doc フレーバだけに限定することも可)。

上記の doc フレーバのサポートが推奨されているため、印刷を行うクライアントは、プリンタがサポートする doc フレーバに関係なく、任意の JPS プリンタに印刷可能であると判断して差し支えありません。プリンタがクライアントの優先 doc フレーバをサポートしない場合、クライアントは少なくともプレーンテキストは印刷できます。また、データを描画可能なイメージに変換してからイメージを印刷することも可能です。

各 Java Print Service インスタンスは、次に示すプレーンテキスト印刷データの処理要件も満たす必要があります。

クライアントは、上記の要件に含まれない、すべてのプレーンテキスト印刷データの書式設定を実行する必要があります。

設計の根拠

javax.print.data パッケージ内の DocFlavor クラスは、DataFlavor クラスに類似しています。Java Print Service (JPS) API では、DataFlavor クラスは次の 3 つの理由で使用されません。これらの理由はどれも、JSP API を共有可能な他の印刷サービス API が、Java 2 Standard Edition のすべてを含まない Java プロファイル上で実行される場合があることに由来しています。

  1. JPS API は、AWT をサポートしない Java プロファイルで使用するよう設計されている

  2. java.awt.datatransfer.DataFlavor クラスの実装は、等価なデータフレーバが同じ直列化表現を保持することを保証しない。DocFlavor をサービスで使用することで、等価なデータフレーバが同じ直列化表現を保持することが保証される

  3. java.awt.datatransfer.DataFlavor クラスの実装には、判読可能な名前が直列化表現の一部に含まれる。これは、サービス一致制約の一部としては不適切である

DocFlavor クラスの直列化表現は、次に示す正規の形式の MIME タイプ文字列を使用します。このため、同一ではなく等価 (正規形式が同じ) の MIME タイプを保持する 2 つの doc フレーバは、等しいと見なすことができます。

DocFlavor クラスの直列化表現には、表現クラス (Class オブジェクト) ではなく表現クラス (String オブジェクト) の完全修飾クラス名も含まれます。クライアントは、このクラス名を利用することで、表現クラスをロードすることなく、Java Print Service インスタンスがサポートする doc フレーバを検証できます。クライアントの使用可能なリソースが限られている場合、表現クラスのロードで問題が発生する場合が多いため、これは有用な方法です。

関連項目:
直列化された形式

入れ子クラスの概要
static class DocFlavor.BYTE_ARRAY
          DocFlavor.BYTE_ARRAY クラスは、事前定義された static 定数 DocFlavor オブジェクトを提供します。
static class DocFlavor.CHAR_ARRAY
          DocFlavor.CHAR_ARRAY クラスは、事前定義された static 定数 DocFlavor オブジェクトを提供します。
static class DocFlavor.INPUT_STREAM
          DocFlavor.INPUT_STREAM クラスは、事前定義された static 定数 DocFlavor オブジェクトを提供します。
static class DocFlavor.READER
          DocFlavor.READER クラスは、事前定義された static 定数 DocFlavor オブジェクトを提供します。
static class DocFlavor.SERVICE_FORMATTED
          DocFlavor.SERVICE_FORMATTED クラスは、定義済みの static 定数 DocFlavor オブジェクト (例、サービス形式の印刷データ用 doc フレーバ) を提供します。
static class DocFlavor.STRING
          DocFlavor.STRING クラスは、定義済みの static 定数 DocFlavor オブジェクトを提供します。
static class DocFlavor.URL
          DocFlavor.URL クラスは、事前定義された static 定数 DocFlavor オブジェクトを提供します。
 
フィールドの概要
static String hostEncoding
          ホストオペレーティングシステムのエンコーディングを表す文字列です。
 
コンストラクタの概要
DocFlavor(String mimeType, String className)
          指定された MIME タイプおよび表現クラス名から新規 doc フレーバオブジェクトを構築します。
 
メソッドの概要
 boolean equals(Object obj)
          この doc フレーバオブジェクトが指定されたオブジェクトに等しいかどうかを判別します。
 String getMediaSubtype()
          この doc フレーバオブジェクトのメディアサブタイプを (MIME タイプから) 返します。
 String getMediaType()
          この doc フレーバオブジェクトのメディアタイプを (MIME タイプから) 返します。
 String getMimeType()
          この doc フレーバオブジェクトの MIME タイプ文字列を、正規の形式で返します。
 String getParameter(String paramName)
          MIME パラメータを表す String を返します。
 String getRepresentationClassName()
          この doc フレーバオブジェクトの表現クラスの名前が返されます。
 int hashCode()
          この doc フレーバオブジェクトのハッシュコードを返します。
 String toString()
          この DocFlavor を文字列に変換します。
 
クラス java.lang.Object から継承したメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

hostEncoding

public static final String hostEncoding
ホストオペレーティングシステムのエンコーディングを表す文字列です。これは RFC 2278: IANA Charset Registration Procedures」に記載された規則に従います。ただし、Java プラットフォームの以前のバージョンとの互換性を維持するため、履歴名が返される点が異なります。メソッドから返される値は、値を返す仮想マシンおよび DocFlavor で使用する場合だけに有効です。これは、実行する VM 内の、"HOST" が定義済みの DocFlavor すべてに対応する文字セットです。

コンストラクタの詳細

DocFlavor

public DocFlavor(String mimeType,
                 String className)
指定された MIME タイプおよび表現クラス名から新規 doc フレーバオブジェクトを構築します。指定された MIME タイプは、正規の形式に変換され、内部に格納されます。

パラメータ:
mimeType - MIME メディアタイプ文字列
className - 完全指定の表現クラス名
例外:
NullPointerException - (チェックされない例外) mimeType または className が null の場合にスローされる@exception IllegalArgumentException (チェックされない例外) mimeType が MIME メディアタイプ文字列の構文に従わない場合にスローされる
メソッドの詳細

getMimeType

public String getMimeType()
この doc フレーバオブジェクトの MIME タイプ文字列を、正規の形式で返します。各パラメータ値は引用符で囲まれます。

戻り値:
MIME タイプ

getMediaType

public String getMediaType()
この doc フレーバオブジェクトのメディアタイプを (MIME タイプから) 返します。

戻り値:
メディアタイプ

getMediaSubtype

public String getMediaSubtype()
この doc フレーバオブジェクトのメディアサブタイプを (MIME タイプから) 返します。

戻り値:
メディアサブタイプ

getParameter

public String getParameter(String paramName)
MIME パラメータを表す String を返します。MIME タイプには、通常オプションのパラメータを含めることができます。テキストタイプの文字セットは、サンプルとしてよく使用されます。このメソッドは、指定されたパラメータの値がこのフレーバの MIME タイプ内に指定されている場合に、その値を返します。

パラメータ:
paramName - パラメータ名。マッチングの実行前に、この名前は内部で正規の小文字形式に変換される
戻り値:
MIME パラメータを表す文字列、または、パラメータが MIME タイプ文字列に存在しない場合は null
例外:
throws - paramName が null の場合に NullPointerException がスローされる

getRepresentationClassName

public String getRepresentationClassName()
この doc フレーバオブジェクトの表現クラスの名前が返されます。

戻り値:
表現クラスの名前

toString

public String toString()
この DocFlavor を文字列に変換します。

オーバーライド:
クラス Object 内の toString
戻り値:
正規の形式に基づく MIME タイプ文字列。各パラメータ値は、引用符で囲まれる。表現クラス名であることを示すため、"class=" パラメータが MIME タイプ文字列に追加される

hashCode

public int hashCode()
この doc フレーバオブジェクトのハッシュコードを返します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
この doc フレーバオブジェクトが指定されたオブジェクトに等しいかどうかを判別します。指定されたオブジェクトが null ではなく、DocFlavor のインスタンスであり、この doc フレーバオブジェクトの MIME タイプと等価な MIME タイプを保持する (つまり、MIME タイプが同じメディアタイプ、メディアサブタイプ、およびパラメータを保持する) 場合、およびこの doc フレーバオブジェクトと同じ表現クラス名を保持する場合、2 つのオブジェクトは等しくなります。このため、2 つの doc フレーバオブジェクトの MIME タイプがコメントを除き同一の場合、これらは等しいと見なされます。ただし、MIME タイプ "text/plain" および "text/plain; charset=US-ASCII" を保持する 2 つの doc フレーバオブジェクトは、同じメディアタイプを表す場合でも、等しいとは見なされません (プレーンテキストのデフォルト文字セットが US-ASCII であるため)。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - 判定されるオブジェクト
戻り値:
この doc フレーバオブジェクトが obj に等しい場合は true、そうでない場合は false
関連項目:
Object.hashCode(), Hashtable

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.