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」を参照してください。
次のセクションでは、印刷ジョブまたはサービスに関するイベントを登録する方法について説明します。