- 既知のすべての実装クラス:
SimpleDoc
Doc
は、印刷ジョブのために1つの印刷データを供給するオブジェクトのインタフェースを指定します。 「Doc」は、印刷データの一部を意味する、短く発音しやすい用語です。 クライアントは、インタフェースDoc
を実装しているオブジェクトをプリント・ジョブに渡します。プリント・ジョブは、そのオブジェクトのメソッドを呼び出して、プリント・データを取得します。 Doc
インタフェースを使用すると、印刷ジョブを実行できます:
- 印刷データが利用可能な形式または「docフレーバ」(
DocFlavor
クラス)を判別する。 docフレーバは、印刷データ形式(MIMEタイプ)および印刷データの送信元オブジェクトの表現クラスを指す。 - docフレーバの表現クラスのインスタンスである、印刷データの表現オブジェクトを取得する。 取得後に、Print Jobは、表現オブジェクトから実印刷データを取得できる。
- docの追加特性を指定する、またはdocに適用する処理命令を指定する印刷属性を取得する。 印刷属性は、パッケージ
javax.print.attribute
内で定義される。 docは、javax.print.attribute.DocAttributeSet
内に格納された出力属性を返す。
Doc
の実装における各メソッドは、メソッドが呼び出されるたびに常に同じオブジェクトを返すことができます。 これは、Print Jobまたはdocオブジェクトの他の呼出し側の場合、呼出し側が印刷データを取得する際、その印刷データ表現オブジェクトが、ストリームである印刷データ表現オブジェクトなどの印刷データを「消費する」ことを示します。 Print JobがgetPrintData()
を呼び出してストリームを取得した後でgetPrintData()
を呼び出すと、すでに読込み中の同じストリーム・オブジェクトが返されます。印刷データをもう一度最初から読み込む新規ストリーム・オブジェクトが返されることはありません。 このような動作を実行するdocオブジェクトを指定すると、docオブジェクトの実装を簡略化できます。これは、特定のdocが1つのPrint Job (複数の異なるPrint Jobではなく)に印刷データを送信することを考えると、理にかなっています。 (同一の印刷データを複数の異なるPrint Jobに送信する場合は、1つの印刷データ・ソースの最上位に複数の異なるdocオブジェクトを作成する必要があります)。
インタフェースDoc
は、かなりの実装の柔軟性を提供します。 docオブジェクトの構築時には、印刷データがすでに存在している場合があります。 この場合、docのメソッドにより返されるオブジェクトをdocのコンストラクタに提供し、前もってdoc内に格納しておくことで、呼出し時にそのまま返すだけで済みます。 また、docオブジェクトの構築時に印刷データがまだ存在していない場合もあります。 この場合、docオブジェクトは「レイジー」実装を提供できます。Print JobがgetPrintData()
メソッドを呼び出した場合のみ、「レイジー」実装は印刷データ表現オブジェクト(や印刷データ)を生成します。
1つのdocに同時アクセス可能なクライアント・スレッド数に制限はありません。 したがって、インタフェースDoc
のすべての実装は、複数のスレッド・セーフであるように設計する必要があります。
ただし、Doc
から取得した印刷データの消費者は1人だけです。
印刷データがストリームとしてクライアントから取得される場合、Doc
のgetReaderForText()
またはgetStreamForBytes()
メソッドをコールすることによって、または印刷データ・ソースがすでにInputStream
またはReader
であるため、印刷サービスは、すべてのジョブ完了条件でクライアントに対してこれらのストリームを常にクローズする必要があります。 次の点に注意してください。 印刷データ自体がストリームの場合、サービスは常に印刷データを閉じます。 印刷データが別の方法でストリームとして要求可能で、終了前にストリームを取得済みの場合、サービスはストリームを閉じるだけです。 つまり、プリント・サービスがストリームとしてデータをリクエストしているとは限らないため、サービスに依存しているDoc
実装者がサービスからのリクエストにレスポンスしてそのようなストリームを作成する必要があるという意味で、。
-
メソッドのサマリー
修飾子と型メソッド説明このdocオブジェクトの印刷属性セットを取得します。このdocオブジェクトが印刷データの一部を提供するdocフレーバを判別します。このdocオブジェクトの印刷データの一部を含む印刷データ表現オブジェクトを、サポートするdocフレーバに対応する形式で取得します。このdocから文字印刷データを抽出するためのリーダーを取得します。このdocからバイト印刷データを抽出するための入力ストリームを取得します。
-
メソッドの詳細
-
getDocFlavor
-
getPrintData
Object getPrintData() throws IOExceptionこのdocオブジェクトの印刷データの一部を含む印刷データ表現オブジェクトを、サポートするdocフレーバに対応する形式で取得します。getPrintData()
メソッドは、getDocFlavor()
によって名前が指定された表現クラスのインスタンスを返します。getRepresentationClassName()
は、戻り値をクラスObject
からその表現クラスにキャストできます。- 戻り値:
- 印刷データ表現オブジェクト
- 例外:
IOException
- 表現クラスがストリームであり、ストリームの構成中にI/Oエラーが発生した場合
-
getAttributes
DocAttributeSet getAttributes()このdocオブジェクトの印刷属性セットを取得します。 返される属性セットに特定の属性Xのインスタンスが含まれる場合、プリンタはその属性値をこのdocに使用して、ジョブの属性セット内の属性Xの値をすべてオーバーライドする必要があります。 返された属性セットに特定の属性Xのインスタンスが含まれていない場合、またはnull
が返された場合、プリンタはジョブの属性セットを参照して属性「バツ、」の値を取得する必要があり、見つからない場合、プリンタは実装に依存するデフォルト値を使用する必要があります。 返された属性セットは変更できません。- 戻り値:
- このドキュメントの印刷属性の変更不可セット、またはジョブの属性セットからすべての属性値を取得する
null
-
getReaderForText
Reader getReaderForText() throws IOExceptionこのdocから文字印刷データを抽出するためのリーダーを取得します。DocFlavor
が次の印刷データ表現クラスのどれかを保持する場合、Doc
実装がこのメソッドをサポートする必要があります。保持しない場合、null
が返されます。- char[]
- java.lang.String
- java.io.Reader
Reader
を構築して返します。 ただし、印刷データ表現オブジェクト自体がReader
,の場合、印刷データ表現オブジェクトが返されるだけです。- 戻り値:
- この文書から印刷データ文字を読み取るリーダー。 このdocが上記の基準を満たさないためにリーダーを使用できない場合、
null
が返される。 - 例外:
IOException
- リーダーの作成時に入出力エラーが発生した場合
-
getStreamForBytes
InputStream getStreamForBytes() throws IOExceptionこのdocからバイト印刷データを抽出するための入力ストリームを取得します。DocFlavor
が次の印刷データ表現クラスのどれかを保持する場合、Doc
実装がこのメソッドをサポートする必要があります。保持しない場合、null
が返されます。- byte[]
- java.io.InputStream
- 戻り値:
- このドキュメントから印刷データ・バイトを読み込むための入力ストリーム。 このdocが上記の基準を満たさないために入力ストリームを使用できない場合、
null
が返される。 - 例外:
IOException
- 入力ストリームの作成中に入出力エラーが発生した場合
-