JavaTM 2 Platform
Standard Ed. 5.0

javax.print
クラス DocFlavor

java.lang.Object
  上位を拡張 javax.print.DocFlavor
すべての実装されたインタフェース:
Serializable, Cloneable
直系の既知のサブクラス:
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 フレーバの作成に使用できます。