Doc
を作成するには、Doc
インタフェースの実装を指定する必要があります。 Java Print Service APIは、SimpleDoc
というDoc
の便利な実装を提供します。 アプリケーションは、SimpleDoc
実装を使用する必要はありませんが、Doc
に準拠するために、Doc
実装は、SimpleDoc
が実装するのと同じ必須セマンティクスに従う必要があります:
Doc
実装ごとに、Doc
インタフェースの5つのメソッドをすべて実装する必要があります。Doc
実装では、複数のスレッドがDoc
オブジェクトにアクセスできるようにする必要があります。Doc
メソッドが呼び出されるたびに、同じオブジェクトを返します。 つまり、新しいストリームは返さない。 入力ストリームは1つのみであるため、Doc
のコンシューマは1つのみです。 Doc
は、リクエストされた場合、サービスのストリームを返しますDoc
は、データ型がDocFlavor
と一致するかどうかをチェックgetAttributes
から返される属性は、常にprint
メソッドに渡される属性をオーバーライドします。Doc
を作成する前に、ファイルからドキュメントをロードする必要があります。 DocFlavor
の表現クラスによって、ファイルからドキュメントをロードする方法が決まります。 この場合、表現クラスはInputStream
です:
FileInputStream fis = new FileInputStream("java2dlogo.gif");ストリームを取得したら、
DocFlavor
およびDocAttributeSet
を指定してSimpleDoc
に渡します(存在する場合)。 DocAttributeSet
がない場合は、かわりにnullを渡します:
Doc doc = new SimpleDoc(fis, flavor, null);カスタム
Doc
実装の例は、「例: PrintGIF.java」を参照してください。
次のセクションでは、印刷ジョブまたはサービスに関するイベントを登録する方法について説明します。