(57)【特許請求の範囲】
【請求項１】
複数のタスクを並列的に実行することによって、複数のデータに基づいて印刷データを生成する印刷データ生成装置であり、
前記複数のデータのそれぞれのアドレスを受信するアドレス受信手段と、
第１所定タスクを実行するために必要な第１所定データのアドレスに従って、外部装置から前記第１所定データに含まれる複数個の部分データを順次ダウンロードする第１所定データダウンロード手段と、
第２所定タスクを実行するために必要な第２所定データのアドレスに従って、前記外部装置から前記第２所定データをダウンロードする第２所定データダウンロード手段と、
前記第１所定データに含まれる第１の部分データがダウンロード中である場合に、そのダウンロードが終了したことを条件として、前記第２所定データの少なくとも一部の部分データをダウンロードするためのダウンロード要求指示を前記外部装置に送信するとともに、前記第２所定データの少なくとも一部の部分データがダウンロード中である場合に、そのダウンロードが終了したことを条件として、前記第１所定データに含まれる第２の部分データであって、前記第１の部分データと異なる第２の部分データをダウンロードするためのダウンロード要求指示を前記外部装置に送信する送信制御手段と
を備える印刷データ生成装置。
【請求項２】
前記第１所定データダウンロード手段は、ダウンロード要求指示を複数回にわたって外部装置に送信することにより前記第１所定データに含まれる前記複数個の部分データをダウンロードする
ことを特徴とする請求項１に記載の印刷データ生成装置。
【請求項３】
前記第２所定データダウンロード手段は、ダウンロード要求指示を複数回にわたって外部装置に送信することにより前記第２所定データに含まれる複数個の部分データを順次ダウンロードし、
前記送信制御手段は、前記第２所定データに含まれる第３の部分データがダウンロード中である場合に、そのダウンロードが終了したことを条件として、前記第１所定データに含まれる前記第２の部分データをダウンロードするためのダウンロード要求指示を前記外部装置に送信するとともに、前記第１所定データに含まれる前記第２の部分データがダウンロード中である場合に、そのダウンロードが終了したことを条件として、前記第２所定データに含まれる第４の部分データであって、前記第３の部分データと異なる第４の部分データをダウンロードするためのダウンロード要求指示を前記外部装置に送信する
ことを特徴とする請求項１または２に記載の印刷データ生成装置。
【請求項４】
前記外部装置は、ＩＰアドレスとポート番号の組合せによって特定される
ことを特徴とする請求項１から３のいずれかに記載の印刷データ生成装置。
【請求項５】
前記ＩＰアドレスとポート番号の組合せに対して、その組合せからデータがダウンロード中であるのか否かを示すダウンロード情報を対応づけて記憶するダウンロード情報記憶手段をさらに備え、
前記送信制御手段は、前記ダウンロード情報記憶手段の記憶内容に基づいて、前記外部装置からデータがダウンロード中であるのか否かを判断する
ことを特徴とする請求項４に記載の印刷データ生成装置。
【請求項６】
前記第１所定データダウンロード手段は、画像データに関する前記第１所定データに含まれる複数個の部分データのダウンロードを実行し、
前記第２所定データダウンロード手段は、画像データのレイアウトに関する前記第２所定データのダウンロードを実行し、
前記第１所定タスクは、前記第２所定タスクにより特定されるレイアウトにしたがって、前記第１所定データに含まれる少なくとも一部の部分データをラスタライズすることによって印刷データを生成する
ことを特徴とする請求項１から５のいずれかに記載の印刷データ生成装置。
【請求項７】
複数のタスクを並列的に実行することによって、複数のデータに基づいて印刷データを生成するためのコンピュータプログラムであり、
第１所定タスクを実行するために必要な第１所定データのアドレスに従って、外部装置から前記第１所定データに含まれる複数個の部分データを順次ダウンロードする第１所定データダウンロード処理と、
第２所定タスクを実行するために必要な第２所定データのアドレスに従って、前記外部装置から前記第２所定データをダウンロードする第２所定データダウンロード処理と、
前記第１所定データに含まれる第１の部分データがダウンロード中である場合に、そのダウンロードが終了したことを条件として、前記第２所定データの少なくとも一部の部分データをダウンロードするためのダウンロード要求指示を前記外部装置に送信するとともに、前記第２所定データの少なくとも一部の部分データがダウンロード中である場合に、そのダウンロードが終了したことを条件として、前記第１所定データに含まれる第２の部分データであって、前記第１の部分データと異なる第２の部分データをダウンロードするためのダウンロード要求指示を前記外部装置に送信する送信制御処理と
をコンピュータに実行させるコンピュータプログラ
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを並列的に実行することによって印刷データを生成する印刷データ生成装置に関する。
【背景技術】
【０００２】
下記の特許文献１には、印刷データを生成してその印刷データに基づいて印刷するプリンタが開示されている。このプリンタは、ＸＭＬスクリプトデータを受信する。ＸＭＬスクリプトデータには、画像データのアドレスが含まれている。プリンタは、画像データのアドレスに従って外部装置から画像データをダウンロードする。プリンタは、ダウンロードされた画像データをラスタライズすることによって印刷データを生成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３０３１９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１のように、印刷データを生成するために外部装置からデータ（上記の特許文献１では画像データ）をダウンロードすることがある。特許文献１の技術では、ＸＭＬスクリプトデータを全て受信しなければ、そのＸＭＬスクリプトデータに含まれるアドレスに従って画像データをダウンロードすることができない。従って、ＸＭＬスクリプトデータのデータ量が多い場合には、画像データのダウンロードのタイミングが遅くなり、それにより印刷処理の開始も遅くなる。このために、ユーザが印刷物を得るまでの時間も長くなってしまう。
一方、複数のタスクを並列的に実行する場合、一方のタスクに基づいて外部装置からデータをダウンロード中に、他方のタスクに基づいて同じ外部装置に対して別のデータのダウンロード要求指示を送信する事象が起こり得る。外部装置には、同時に複数の接続が可能なデバイス（いわゆるマルチコネクション対応のデバイス）と、家電製品のように同時に複数の接続を許可していないデバイス（いわゆるシングルコネクションタイプのデバイス）が存在する。シングルコネクションタイプのデバイスは、ダウンロード要求指示に従ってデータを送信している間に他のダウンロード要求指示を受信しても、それに応答してデータを送信することができない。この場合、印刷データを生成するためのデータをダウンロードすることができない事象が起こり得る。
【０００５】
本明細書では、印刷データを生成するためのデータを確実にダウンロードすることができ、かつ、ユーザに対して印刷物を提供するまでの時間を短くすることができる技術を提供する。
【課題を解決するための手段】
【０００６】
本明細書によって開示される技術は、以下のように表現することができる。この技術は、複数のタスクを並列的に実行することによって、複数のデータに基づいて印刷データを生成する印刷データ生成装置である。この印刷データ生成装置は、アドレス受信手段と第１所定データダウンロード手段と第２所定データダウンロード手段と送信制御手段とを備える。アドレス受信手段は、複数のデータのそれぞれのアドレスを受信する。第１所定データダウンロード手段は、第１所定タスクを実行するために必要な第１所定データのアドレスに従って外部装置から第１所定データをダウンロードする。第２所定データダウンロード手段は、第２所定タスクを実行するために必要な第２所定データのアドレスに従って上記の外部装置から第２所定データをダウンロードする。送信制御手段は、（１）第１所定データがダウンロード中である場合に、そのダウンロードが終了したことを条件として第２所定データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信するとともに、（２）第２所定データがダウンロード中である場合に、そのダウンロードが終了したことを条件として第１所定データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信する。
【０００７】
上記の第１及び／又は第２所定データダウンロード手段は、ダウンロード要求指示を自身が外部装置に送信することによってデータをダウンロードしてもよいし、他の手段（例えば上記の送信制御手段）に指示してデータをダウンロードさせてもよい。また、上記の第１及び／又は第２所定データダウンロード手段は、複数回に亘ってダウンロード要求指示を外部装置に送信することによってデータを少しずつダウンロードしてもよいし、１回のダウンロード要求指示によってデータの全てをダウンロードしてもよい。
【０００８】
上記の印刷データ生成装置では、外部装置から第１所定データをダウンロード中に第２所定データのダウンロード要求指示を同じ外部装置に送信することが禁止される。また、外部装置から第２所定データをダウンロード中に第１所定データのダウンロード要求指示を同じ外部装置に送信することが禁止される。このために、外部装置がマルチコネクションに対応していない場合であっても、第１所定データと第２所定データを確実にダウンロードすることができる。
【０００９】
本明細書によって開示される技術は、次のように表現することもできる。第１タスクと第２タスクとを含む複数のタスクを並列的に実行することによって印刷データを生成する印刷データ生成装置である。印刷データ生成装置という用語は、印刷データを生成するあらゆるタイプの装置を含む概念である。例えば、印刷データ生成装置は、自身が作成した印刷データを自身で印刷するもの（例えばプリンタ）であってもよいし、そうでなくてもよい。印刷データ生成装置は、第２データと、その第２データのアドレスを含む第１データとに基づいて印刷データを生成する。この印刷データ生成装置は、第１ダウンロード手段と第２ダウンロード手段と送信制御手段を備える。
【００１０】
第１ダウンロード手段は、外部装置から所定量単位で第１データをダウンロードする第
１タスクを実行する。なお、第１ダウンロード手段は、ダウンロード要求指示を自身が外部装置に送信することによって第１データをダウンロードしてもよいし、他の手段（例えば後述の送信制御手段）に指示して第１データをダウンロードさせてもよい。後者の場合も、「第１ダウンロード手段が第１データをダウンロードする」ことに等しい。また、上記の「所定量単位で第１データをダウンロードする」とは、複数回に亘ってダウンロード要求指示を外部装置に送信することによって第１データを少しずつダウンロードすることを意味する。なお、１回にダウンロードされる第１データのデータ量は、必ずしも一定である必要はない。即ち、上記の所定量は、必ずしも一定である必要はない。ダウンロード毎に第１データのデータ量が変化してもよい。
【００１１】
第２ダウンロード手段は、第１ダウンロード手段によってダウンロードされた上記の所定量の第１データの中に、第２タスクを実行するために必要な第２データのアドレスが含まれる場合に、そのアドレスに従って上記の外部装置から第２データをダウンロードする。なお、第２ダウンロード手段は、ダウンロード要求指示を自身が外部装置に送信することによって第２データをダウンロードしてもよいし、他の手段（例えば後述の送信制御手段）に指示して第２データをダウンロードさせてもよい。後者の場合も、「第２ダウンロード手段が第２データをダウンロードする」ことに等しい。なお、第２ダウンロード手段は、所定量単位で第２データをダウンロードしてもよいし（即ち第２データを少しずつダウンロードしてもよい）、１回のダウンロード要求指示によって第２データの全てをダウンロードしてもよい。
【００１２】
送信制御手段は、（１）上記の所定量の第１データがダウンロード中である場合に、そのダウンロードが終了したことを条件として第２データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信するとともに、（２）第２データがダウンロード中である場合に、そのダウンロードが終了したことを条件として上記の所定量の第１データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信する。
なお、上述したように、第１ダウンロード手段は、ダウンロード要求指示を自身が外部装置に送信することによって第１データをダウンロードしてもよい。この場合、第１ダウンロード手段が、上記の（２）を実行する送信制御手段を兼用することになる。また、上述したように、第２ダウンロード手段は、ダウンロード要求指示を自身が外部装置に送信することによって第２データをダウンロードしてもよい。この場合、第２ダウンロード手段が、上記の（１）を実行する送信制御手段を兼用することになる。一方において、送信制御手段は、第１ダウンロード手段及び／又は第２ダウンロード手段の指示に従ってデータをダウンロードしてもよい。
【００１３】
上記の印刷データ生成装置は、外部装置から第１データをダウンロード中である場合に、そのダウンロードが終了した後に第２データのダウンロード要求指示を同じ外部装置に送信する。外部装置から第１データをダウンロード中に第２データのダウンロード要求指示を同じ外部装置に送信することが禁止される。この印刷データ生成装置は、外部装置がマルチコネクションに対応しているのか否かにかかわらず、第２データを確実にダウンロードすることができる。また、上記の印刷データ生成装置は、外部装置から第２データをダウンロード中である場合に、そのダウンロードが終了した後に第１データのダウンロード要求指示を同じ外部装置に送信する。このために、外部装置から第２データをダウンロード中に第１データのダウンロード要求指示を同じ外部装置に送信することが禁止される。外部装置がマルチコネクションに対応しているのか否かにかかわらず、第１データを確実にダウンロードすることができる。この技術によると、複数タスクを並列的に実行することによって、印刷データを高速に作成し、ユーザに対して印刷物を提供するまでの時間を短くすることができる。
【００１４】
上記の印刷データ生成装置は、第１データのアドレスを含む印刷ジョブ作成指示を受信
する印刷ジョブ作成指示受信手段をさらに備えていてもよい。この場合、第１ダウンロード手段は、印刷ジョブ作成指示に含まれるアドレスに従って上記の外部装置から第１データをダウンロードしてもよい。
【００１５】
上述したように、第１ダウンロード手段と第２ダウンロード手段のそれぞれが送信制御手段を兼用してもよい。一方において、送信制御手段は、第１ダウンロード手段と第２ダウンロード手段のそれぞれからの指示に従ってデータをダウンロードしてもよい。この構成は、以下のように表現することができる。
即ち、第１ダウンロード手段は、上記の所定量の第１データをダウンロードするように送信制御手段に指示するものであってもよい。また、第２ダウンロード手段は、第２データをダウンロードするように送信制御手段に指示するものであってもよい。この場合、送信制御手段は、第１ダウンロード手段からの指示に従って上記の所定量の第１データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信してもよいし、第２ダウンロード手段からの指示に従って第２データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信してもよい。
【００１６】
上記の第２データは、画像データであってもよい。この場合、第２ダウンロード手段は、第２データをラスタライズすることによって印刷データを生成する上記の第２タスクを実行するものであってもよい。
一方において、上記の第２データは、別の種類のデータ（例えば後述のレイアウトに関するデータ）であってもよい。この場合、第２ダウンロード手段は、ラスタライズではない別の第２タスクを実行してもよい。
【００１７】
第１データは、画像データのレイアウトに関する第３データのアドレスを含んでいてもよい。この場合、印刷データ生成装置は、第１ダウンロード手段によってダウンロードされた上記の所定量の第１データの中に、第３タスクを実行するために必要な第３データのアドレスが含まれる場合に、そのアドレスに従って上記の外部装置から第３データをダウンロードする第３ダウンロード手段をさらに備えていてもよい。なお、第３ダウンロード手段は、ダウンロード要求指示を自身が外部装置に送信することによって第３データをダウンロードしてもよいし、他の手段（例えば上記の送信制御手段）に指示して第３データをダウンロードさせてもよい。後者の場合も、「第３ダウンロード手段が第３データをダウンロードする」ことに等しい。なお、第３ダウンロード手段は、所定量単位で第３データをダウンロードしてもよいし（即ち第３データを少しずつダウンロードしてもよい）、１回のダウンロード要求指示によって第３データの全てをダウンロードしてもよい。
【００１８】
上記の構成の場合、送信制御手段は、以下のように動作してもよい。即ち、送信制御手段は、上記の所定量の第１データ又は第２データがダウンロード中である場合に、そのダウンロードが終了したことを条件として第３データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信してもよいし、第３データがダウンロード中である場合に、そのダウンロードが終了したことを条件として上記の所定量の第１データ又は第２データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信してもよい。
この構成によると、外部装置から第１データ又は第２データをダウンロード中に第３データのダウンロード要求指示を同じ外部装置に送信することが禁止される。また、外部装置から第３データをダウンロード中に第１データ又は第２データのダウンロード要求指示を同じ外部装置に送信することが禁止される。このために、外部装置がマルチコネクションに対応していない場合であっても、各データを確実にダウンロードすることができる。
【００１９】
上記の構成の場合、第３ダウンロード手段は、第３データから画像データのレイアウトを特定する第３タスクを実行してもよい。なお、第３ダウンロード手段がどのようにして
レイアウトを特定するのかは、第３データの内容に依存する。例えば、レイアウトを特定するために、第３データの内容に基づいて計算を要することがある。この場合、第３ダウンロード手段は、第３データに基づいて計算することによってレイアウトを特定する。一方において、第３データを読み込むだけでレイアウトを特定することができることがある。この場合、第３ダウンロード手段は、第３データを読み込むことによってレイアウトを特定する。
なお、第３ダウンロード手段がレイアウトを特定する構成を採用する場合、第２ダウンロード手段は、第３ダウンロード手段によって特定されたレイアウトに従って画像データが配置されている印刷データを生成してもよい。
【００２０】
上記の外部装置は、ＩＰアドレスによって特定されてもよい。一方において、上記の外部装置は、ＩＰアドレスとポート番号の組合せによって特定されてもよい。この場合、１つのデバイスにおいて複数のポートが利用されると、そのデバイス内に複数の外部装置が存在することになる。
【００２１】
なお、上記の印刷データ生成装置は、ＩＰアドレスとポート番号の組合せに対して、その組合せからデータがダウンロード中であるのか否かを示すダウンロード情報を対応づけて記憶するダウンロード情報記憶手段をさらに備えていてもよい。この場合、送信制御手段は、ダウンロード情報記憶手段の記憶内容に基づいて、上記の外部装置からデータがダウンロード中であるのか否かを判断することができる。
【００２２】
また、次のコンピュータプログラムも有用である。このコンピュータプログラムは、以下の各処理をコンピュータに実行させる。
（１）第１所定タスクを実行するために必要な第１所定データのアドレスに従って外部装置から第１所定データをダウンロードする第１所定データダウンロード処理。
（２）第２所定タスクを実行するために必要な第２所定データのアドレスに従って上記の外部装置から第２所定データをダウンロードする第２所定データダウンロード処理。
（３）第１所定データがダウンロード中である場合に、そのダウンロードが終了したことを条件として第２所定データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信するとともに、第２所定データがダウンロード中である場合に、そのダウンロードが終了したことを条件として第１所定データをダウンロードするためのダウンロード要求指示を上記の外部装置に送信する送信制御処理。
このコンピュータプログラムを利用すると、第１所定データと第２所定データを確実にダウンロードすることができる印刷データ生成装置を実現することができる。
【発明の効果】
【００２３】
印刷データを生成するためのデータを確実にダウンロードすることができ、かつ、ユーザに対して印刷物を提供するまでの時間を短くすることができる。
【図面の簡単な説明】
【００２４】
【図１】プリンタシステムの構成を示す。
【図２】受信処理のフローチャートを示す。
【図３】ジョブ作成指示の一例を示す。
【図４】ＸＨＴＭＬ−Ｐｒｉｎｔデータの一例を示す。
【図５】レイアウト処理のフローチャートを示す。
【図６】スタイルシートファイルの一例を示す。
【図７】ラスタライズ処理のフローチャートを示す。
【図８】ダウンロード処理のフローチャートを示す。
【図９】図８の続きのフローチャートを示す。
【図１０】図９の続きのフローチャートを示す。
【図１１】印刷処理のフローチャートを示す。
【図１２】セッションテーブルの一例を示す。
【図１３】ハンドルテーブルの一例を示す。
【発明を実施するための形態】
【００２５】
ここでは、以下の実施例に記載の技術の特徴の一部を記載する。
（形態１）実施例に記載されている印刷データ生成装置は、次のように表現することもできる。この印刷データ生成装置は、複数のタスクを並列的に実行することによって、複数のデータファイルに基づいて印刷データを生成する。この印刷データ生成装置は、複数のデータファイルのそれぞれのアドレスを受信するアドレス受信手段を備える。また、印刷データ生成装置は、各アドレスに従って外部からデータファイルをダウンロードするとともに、同じ外部装置に対して並列的にダウンロード要求指示を送信することを禁止する送信制御手段とを備える。上記の「同じ外部装置に対して並列的にダウンロード要求指示を送信することを禁止する」とは、外部装置からデータをダウンロード中に当該外部装置にダウンロード要求指示を送信することを禁止することを意味する。
【００２６】
（形態２）画像データのレイアウトに関するデータは、当該画像データのポジションを特定するためのデータ、及び／又は、当該画像データの回転角度を特定するためのデータを含んでいる。
【００２７】
（形態３）印刷データ生成装置は、レイアウト処理部とダウンロード処理部を有する。レイアウト処理部は、外部ファイルのダウンロードが必要であるのか否かを判断する。レイアウト処理部は、外部ファイルをダウンロードするようにダウンロード処理部に指示する。この指示は、接続指示とダウンロード指示と切断指示を含む。接続指示は、ＩＰアドレスと外部ファイルのファイル名とを少なくとも含んでいる。ダウンロード処理部は、接続
指示に含まれるＩＰアドレスを第１テーブルに記憶させる。ダウンロード処理部は、接続指示に含まれるＩＰアドレスとファイル名との組合せ（以下では単に「組合せ」と呼ぶ）を第２テーブルに記憶させる。この組合せには、識別番号が付与される。ダウンロード処理部は、この識別番号をレイアウト処理部に送信する。レイアウト処理部は、この識別番号を含むダウンロード指示又は切断指示をダウンロード処理部に送信する。ダウンロード処理部は、ダウンロード指示に含まれる識別番号に対応づけて第２テーブルに記憶されている組合せに従って外部ファイルをダウンロードする。ダウンロード処理部は、切断指示に含まれる識別番号に対応づけて第２テーブルに記憶されている組合せを削除する。
【００２８】
（形態４）印刷データ生成装置は、ラスタライズ処理部とダウンロード処理部を有する。ラスタライズ処理部は、外部ファイルのダウンロードが必要であるのか否かを判断する。ラスタライズ処理部は、外部ファイルをダウンロードするようにダウンロード処理部に指示する。この指示は、接続指示とダウンロード指示と切断指示を含む。ダウンロード処理部は、上記の形態３の場合と同様に動作する。
【実施例】
【００２９】
図面を参照して実施例を説明する。図１は、本実施例のプリンタシステム２を示す。プリンタシステム２は、プリンタ１０と外部装置５０等を備える。外部装置５０は、プリンタ１０に印刷を指示することができる装置（印刷ジョブ作成コマンドを送信することができる装置）である。外部装置５０の例としては、例えば、パーソナルコンピュータ、デジタルカメラ、テレビ、ＤＶＤレコーダ等を挙げることができる。
【００３０】
（プリンタの構成）
プリンタ１０は、操作部１２と表示部１４と制御部１６と印刷部３０と記憶部３２と入出力ポート４４等を有する。操作部１２は、複数のキーによって構成される。ユーザは、操作部１２を操作することによって、様々な情報や指示をプリンタ１０に入力することができる。表示部１４は、様々な情報を表示することができる。
【００３１】
制御部１６は、ＣＰＵ等によって構成されている。制御部１６は、複数のタスクを並列的（同時的）に実行することができる。制御部１６は、１つのＣＰＵによって構成されていてもよいし、複数のＣＰＵによって構成されていてもよい。いずれの構成であっても、複数のタスクを並列的に実行することができる。制御部１６は、受信処理部１８とレイアウト処理部２０とラスタライズ処理部２２とダウンロード処理部２４と印刷処理部２６とを有する。各処理部１８〜２６がタスクを並列的に実行する。各処理部１８〜２６によって実行されるタスクの内容は、後で詳しく説明する。
【００３２】
印刷部３０は、制御部１６のラスタライズ処理部２２によって作成されたビットマップデータに基づいて印刷媒体に印刷する。印刷部３０は、制御部１６の印刷処理部２６からの指示に従って印刷媒体に印刷する。記憶部３２は、ＲＯＭ、ＥＥＰＲＯＭ、ＲＡＭ等によって構成されている。記憶部３２は、セッションテーブル記憶領域３６とハンドルテーブル記憶領域３８を有する。これらの記憶領域３６，３８に記憶される情報の内容については、後で詳しく説明する。また、記憶部３２は、制御部１６にタスクを実行させるプログラム、外部から受信されたデータ、制御部１６によって生成されるデータ等を記憶する記憶領域４２を有する。入出力ポート４４は、ＬＡＮ回線やインターネット回線に接続されている。プリンタ１０は、入出力ポート４４を介して、外部装置５０やその他のデバイス（インターネット上のデバイス等）と通信可能である。
【００３３】
（受信処理）
続いて、制御部１６の各処理部１８〜２６によって実行される処理（タスク）について説明する。図２は、受信処理のフローチャートを示す。受信処理は、制御部１６の受信処
理部１８によって実行される。
【００３４】
受信処理部１８は、ジョブ作成指示が受信されることを監視している（Ｓ１０）。例えば、図１の外部装置５０は、ジョブ作成指示をプリンタ１０に送信することができる。このジョブ作成指示は、入出力ポート４４を介してプリンタ１０によって受信される。この場合、Ｓ１０でＹＥＳと判断される。図３は、ジョブ作成指示の一例を示す。ジョブ作成指示６０は、ソースＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）６２を含んでいる。ソースＵＲＩ６２は、印刷に必要なデータ（本実施例ではＸＨＴＭＬ−Ｐｒｉｎｔデータ）のアドレスである。なお、以下では、ＸＨＴＭＬ−Ｐｒｉｎｔデータのことを簡単に「ＸＨＴＭＬデータ」と呼ぶことがある。ソースＵＲＩ６２は、ＸＨＴＭＬデータを格納しているデバイス（本実施例では図１の外部装置５０）のＩＰアドレスと、ポート番号と、ＸＨＴＭＬデータのファイル名とを含んでいる。図３では、「１９２．１６８．１．１１」がＩＰアドレスであり、「１０２５」がポート番号であり、「ａ０４５ｆ２ｅ１．ｘｈｔｍｌ」がＸＨＴＭＬデータのファイル名である。
【００３５】
次いで、受信処理部１８は、ソースＵＲＩに対して接続することを指示する情報（以下では「接続指示」と呼ぶ）をダウンロード処理部２４に送信する（Ｓ１２）。この処理では、ソースＵＲＩ６２がダウンロード処理部２４に送信される。この結果、ダウンロード処理部２４は、ソースＵＲＩ６２に含まれるＩＰアドレスに接続することを試行する（コネクションを確立することを試行する）。ダウンロード処理部２４は、接続に成功した場合、ハンドル番号を受信処理部１８に送信する。ハンドル番号については後で詳しく説明する。一方において、ダウンロード処理部２４は、接続に失敗した場合、エラーデータを受信処理部１８に送信する。受信処理部１８は、ダウンロード処理部２４からのデータ（ハンドル番号又はエラーデータ）に基づいて、接続が成功したのか否かを判断する（Ｓ１４）。ここでＮＯの場合、受信処理部１８は、エラー処理を実行する（Ｓ１６）。一方において、Ｓ１４でＹＥＳの場合、Ｓ１８に進む。
【００３６】
Ｓ１８では、受信処理部１８は、ジョブを開始する旨の情報（以下では「ジョブ開始指示」と呼ぶ）をレイアウト処理部２０に送信する。次いで、受信処理部１８は、所定バイト（本実施例ではｎバイトとする）のＸＨＴＭＬデータをダウンロードすることを指示する情報（以下では「ダウンロード指示」と呼ぶ）をダウンロード処理部２４に指示する（Ｓ２０）。このダウンロード指示には、Ｓ１２の処理の結果としてダウンロード処理部２４から送信されてきたハンドル番号が付加される。ダウンロード処理部２４は、Ｓ１２の処理の結果として接続が確立されたデバイスからＸＨＴＭＬデータをダウンロードする。図４は、ＸＨＴＭＬデータ（ＸＨＴＭＬ−Ｐｒｉｎｔデータ）の一例を示す。ＸＨＴＭＬデータ７０は、ベースアドレス７２を含んでいる。また、ＸＨＴＭＬデータ７０は、後述するスタイルシートファイルのファイル名７２ａを含んでいる。ベースアドレス７２とファイル名７２ａの組合せが、スタイルシートファイルのＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）である。また、ＸＨＴＭＬデータ７０は、画像データファイルに関するデータ７４を含んでいる。本実施例のＸＨＴＭＬデータ７０は、４つの画像データファイルを印刷することを指示するものである。このために、ＸＨＴＭＬデータ７０は、４つの画像データファイルのデータ７４を含んでいる。各データ７４は、画像データファイルのファイル名７４ａを含んでいる。上記のベースアドレス７２とファイル名７４ａの組合せが、画像データファイルのＵＲＬである。
【００３７】
ダウンロード処理部２４は、ダウンロードされたＸＨＴＭＬデータを受信処理部１８に送信する。なお、ダウンロード処理部２４は、ＸＨＴＭＬデータを正常にダウンロードすることができなかった場合に、受信処理部１８にエラーデータを送信する。受信処理部１８は、ダウンロード処理部２４からのデータ（ＸＨＴＭＬデータ又はエラーデータ）に基づいて、ダウンロードが成功したのか否かを判断する（Ｓ２２）。受信処理部１８は、ダ
ウンロード処理部２４からのデータがｎバイトのＸＨＴＭＬデータであった場合に、Ｓ２２でＹＥＳと判断する。この場合、受信処理部１８は、ＸＨＴＭＬデータをレイアウト処理部２０に送信する（Ｓ２４）。Ｓ２４を終えると、受信処理部１８は、Ｓ２０に戻って、次のｎバイトのＸＨＴＭＬデータをダウンロードするためのダウンロード指示をダウンロード処理部２４に送信する。このダウンロード指示にも上記のハンドル番号が付加される。
【００３８】
受信処理部１８は、ダウンロード処理部２４からのデータがｎバイト未満のＸＨＴＭＬデータ又はエラーデータであった場合、Ｓ２２でＮＯと判断する。受信処理部１８は、ダウンロード処理部２４からのデータがｎバイト未満のＸＨＴＭＬデータであった場合、ＸＨＴＭＬデータを最後まで受信したものと判断し、Ｓ２６でＹＥＳと判断する。この場合、受信処理部１８は、ＸＨＴＭＬデータ（ｎバイト未満のＸＨＴＭＬデータ）をレイアウト処理部２０に送信し、次いでデータ終端である旨の情報（以下では「データ終端指示」と呼ぶ）をレイアウト処理部２０に送信する（Ｓ２８）。続いて、受信処理部１８は、接続を切断すること指示する情報（以下では「切断指示」と呼ぶ）をダウンロード処理部２４に送信する（Ｓ３０）。この切断指示には、上記のハンドル番号が付加される。Ｓ３０を終えると、Ｓ１０に戻る。
【００３９】
受信処理部１８は、ダウンロード処理部２４からのデータがエラーデータであった場合、Ｓ２６でＮＯと判断する。この場合、受信処理部１８は、エラー処理を実行する（Ｓ３２）。次いで、受信処理部１８は、エラー終了である旨の情報（以下では「エラー終了指示」と呼ぶ）をレイアウト処理部２０に送信する（Ｓ３４）。次いで、受信処理部１８は、切断指示をダウンロード処理部２４に送信する（Ｓ３６）。この切断指示にも、上記のハンドル番号が付加される。Ｓ３６を終えると、Ｓ１０に戻る。
【００４０】
（レイアウト処理）
続いて、レイアウト処理について説明する。図５は、レイアウト処理のフローチャートを示す。レイアウト処理は、制御部１６のレイアウト処理部２０によって実行される。
【００４１】
レイアウト処理部２０は、受信処理部１８からのジョブ開始指示が受信されることを監視している（Ｓ５０）。このジョブ開始指示は、上記の図２のＳ１８の処理で受信処理部１８からレイアウト処理部２０に送信される。Ｓ５０でＹＥＳの場合、レイアウト処理部２０は、ジョブ開始指示をラスタライズ処理部２２に送信する（Ｓ５２）。次いで、レイアウト処理部２０は、受信処理部１８からのＸＨＴＭＬデータが受信されることを監視する（Ｓ５４）。このＸＨＴＭＬデータは、上記の図２のＳ２４の処理（最後のＸＨＴＭＬデータである場合はＳ２８の処理）で受信処理部１８からレイアウト処理部２０に送信される。Ｓ５４でＹＥＳの場合、Ｓ６４に進む。Ｓ５４でＮＯの場合、Ｓ５６に進む。
【００４２】
Ｓ５６では、レイアウト処理部２０は、受信処理部１８からのデータ終端指示が受信されることを監視する。このデータ終端指示は、上記の図２のＳ２８の処理で受信処理部１８からレイアウト処理部２０に送信される。Ｓ５６でＹＥＳの場合、レイアウト処理部２０は、データ終端指示をラスタライズ処理部２２に送信する（Ｓ５８）。Ｓ５８を終えると、Ｓ５０に戻る。一方において、Ｓ５６でＮＯの場合、レイアウト処理部２０は、受信処理部１８からのエラー終了指示が受信されることを監視する（Ｓ６０）。このエラー終了指示は、上記の図２のＳ３４の処理で受信処理部１８からレイアウト処理部２０に送信される。Ｓ６０でＹＥＳの場合、レイアウト処理部２０は、エラー終了指示をラスタライズ処理部２２に送信する（Ｓ６２）。Ｓ６２を終えると、Ｓ５０に戻る。なお、Ｓ６０でＮＯの場合、Ｓ５４に戻る。
【００４３】
Ｓ６４では、レイアウト処理部２０は、データ解析処理を実行する。レイアウト処理部
２０は、ＸＨＴＭＬデータを解析することによって、複数の画像データファイル名がツリー構造に配置されているデータをメモリ（記憶領域４２）に作成する。次いで、レイアウト処理部２０は、外部ファイルのダウンロードが必要であるのか否かを判断する（Ｓ６６）。具体的には、Ｓ５４で受信されたＸＨＴＭＬデータ７０にスタイルシートファイルのＵＲＬ７２，７２ａ（図４参照）が含まれる場合に、Ｓ６６でＹＥＳと判断される。この場合、レイアウト処理部２０は、ＵＲＬ７２，７２ａによって特定されるファイル（スタイルシートファイル）をダウンロードするようにダウンロード処理部２４に指示する（Ｓ６８）。具体的には、レイアウト処理部２０は、接続指示とダウンロード指示と切断指示をダウンロード処理部２４に送信する。接続指示には、スタイルシートファイルのＵＲＬ（ＩＰアドレス、ポート番号、ファイル名等）７２，７２ａが付加される。接続指示の結果としてダウンロード処理部２４からハンドル番号が送信されてきた場合、レイアウト処理部２０は、ダウンロード指示をダウンロード処理部２４に送信する。ダウンロード指示には、上記のハンドル番号が付加される。ダウンロード指示の結果としてダウンロード処理部２４からスタイルシートファイル又はエラーデータが送信されてきた場合、レイアウト処理部２０は、切断指示をダウンロード処理部２４に送信する。切断指示には、上記のハンドル番号が付加される。レイアウト処理部２０は、Ｓ６８の処理を実行することによって、エラーがない限り、スタイルシートファイルを取得することができる。
【００４４】
図７は、スタールシートファイルの一例を示す。スタイルシートファイル８０は、各画像データのポジションを特定するためのデータ８２を含んでいる。本実施例のＸＨＴＭＬデータ７０は、４つの画像データを印刷することを指示するものである（図４参照）。このために、データ８２は、４つの画像データのそれぞれに対応するデータを含んでいる。また、スタイルシートファイル８０は、各画像データの回転角度を特定するためのデータ８４も含んでいる。レイアウト処理部２０は、スタイルシートファイル８０を解析し、データ８２とデータ８４から各画像データのレイアウト（各画像データが配置されるべき座標）を特定する（Ｓ７０）。本実施例のデータ８２では、印刷用紙内での各画像データのポジションが詳細に記述されている。このために、レイアウト処理部２０は、データ８２を読み込むことによって、各画像データのレイアウトを特定することができる。なお、外部ファイルをダウンロードしなくてもレイアウトを特定することができるデータがＸＨＴＭＬデータ７０に含まれることがある。Ｓ６６でＮＯと判断されて実行されるＳ７０の処理では、レイアウト処理部２０は、ＸＨＴＭＬデータ７０に記述されているレイアウトに関するデータからレイアウトを特定する。
【００４５】
レイアウト処理部２０は、レイアウトが決定されたページが存在するのか否かを判断する（Ｓ７２）。ここでＹＥＳの場合、レイアウト処理部２０は、各画像データのレイアウトを含むデータをラスタライズ処理部２２に送信する（Ｓ７４）。以下では、このデータのことを「ページデータ」と呼ぶ。ページデータには、各画像データのＵＲＬ７２，７４ａ（図４参照）が含まれる。なお、Ｓ７２でＮＯの場合、Ｓ７４をスキップする。Ｓ７２でＮＯの場合、又は、Ｓ７４を終えた場合、レイアウト処理部２０は、Ｓ５４に戻って、続きのＸＨＴＭＬデータ７０が受信されることを監視する。
【００４６】
（ラスタライズ処理）
続いて、ラスタライズ処理について説明する。図７は、ラスタライズ処理のフローチャートを示す。ラスタライズ処理は、制御部１６のラスタライズ処理部２２によって実行される。
【００４７】
ラスタライズ処理部２２は、レイアウト処理部２０からのジョブ開始指示が受信されることを監視している（Ｓ９０）。このジョブ開始指示は、上記の図５のＳ５２の処理でレイアウト処理部２０からラスタライズ処理部２２に送信される。Ｓ９０でＹＥＳの場合、ラスタライズ処理部２２は、ジョブ開始指示を印刷処理部２６に送信する（Ｓ９２）。次
いで、ラスタライズ処理部２２は、レイアウト処理部２０からのページデータが受信されることを監視する（Ｓ９４）。このページデータは、上記の図５のＳ７４の処理でレイアウト処理部２０からラスタライズ処理部２２に送信される。Ｓ９４でＹＥＳの場合、Ｓ１０４に進む。なお、ラスタライズ処理部２２は、１ページ分の全てのページデータを受信してからＳ９４でＹＥＳと判断するのではなく、所定量のページデータを受信するとＳ９４でＹＥＳと判断する。従って、ラスタライズ処理部２２は、１ページ分のページデータについて、Ｓ１０４以降の処理を複数回に分けて実行することになる。なお、Ｓ９４でＮＯの場合、Ｓ９６に進む。
【００４８】
Ｓ９６では、ラスタライズ処理部２２は、レイアウト処理部２０からのデータ終端指示が受信されることを監視する。このデータ終端指示は、上記の図５のＳ５８の処理でレイアウト処理部２０からラスタライズ処理部２２に送信される。Ｓ９６でＹＥＳの場合、ラスタライズ処理部２２は、データ終端指示を印刷処理部２６に送信する（Ｓ９８）。Ｓ９８を終えると、Ｓ９０に戻る。一方において、Ｓ９６でＮＯの場合、ラスタライズ処理部２２は、レイアウト処理部２０からのエラー終了指示が受信されることを監視する（Ｓ１００）。このエラー終了指示は、上記の図５のＳ６２の処理でレイアウト処理部２０からラスタライズ処理部２２に送信される。Ｓ１００でＹＥＳの場合、ラスタライズ処理部２２は、エラー終了指示を印刷処理部２６に送信する（Ｓ１０２）。Ｓ１０２を終えると、Ｓ９０に戻る。なお、Ｓ１００でＮＯの場合、Ｓ９４に戻る。
【００４９】
Ｓ１０４では、ラスタライズ処理部２２は、外部ファイルのダウンロードが必要であるのか否かを判断する。具体的には、Ｓ９４で受信されたページデータに画像データのＵＲＬ７２，７４ａが含まれる場合に、Ｓ１０４でＹＥＳと判断される。この場合、ラスタライズ処理部２２は、ページデータに含まれるＵＲＬ７２，７４ａから特定されるファイル（画像データファイル）をダウンロードするようにダウンロード処理部２４に指示する（Ｓ１０６）。具体的には、ラスタライズ処理部２２は、接続指示とダウンロード指示と切断指示をダウンロード処理部２４に送信する。接続指示には、画像データファイルのＵＲＬ（ＩＰアドレス、ポート番号、ファイル名等）７２，７４ａが付加される。接続指示の結果としてダウンロード処理部２４からハンドル番号が送信されてきた場合、ラスタライズ処理部２２は、ダウンロード指示をダウンロード処理部２４に送信する。ダウンロード指示には、上記のハンドル番号が付加される。ダウンロード指示の結果としてダウンロード処理部２４から画像データファイル又はエラーデータが送信されてきた場合、ラスタライズ処理部２２は、切断指示をダウンロード処理部２４に送信する。切断指示には、上記のハンドル番号が付加される。ラスタライズ処理部２２は、Ｓ１０６の処理を実行することによって、エラーがない限り、画像データファイルを取得することができる。
【００５０】
ラスタライズ処理部２２は、画像データファイルを解析し、画像データファイルに含まれる画像データをラスタライズする処理を実行する（Ｓ１０８）。これにより、ビットマップデータが作成される。なお、外部ファイルをダウンロードしなくてもラスタライズされるべきデータ（例えばテキストデータ）がページデータに含まれることがある。Ｓ１０４でＮＯと判断されて実行されるＳ１０８の処理では、ラスタライズ処理部２２は、ページデータに含まれるこのようなデータのラスタライズを実行する。
【００５１】
ラスタライズ処理部２２は、１バンド分のビットマップデータが作成されたのか否かを判断する（Ｓ１１０）。本実施例では、１つのバンドのビットマップデータを作成するとともにそのビットマップデータを印刷媒体に印刷することを繰り返す手法を採用する。即ち、本実施例のプリンタ１０は、バンド単位で印刷媒体に印刷する。上記の「バンド」という単位は、例えば、インクジェットヘッドの一回の走査によって印刷することが可能である領域を意味する。Ｓ１１０でＹＥＳの場合、ラスタライズ処理部２２は、１バンド分のビットマップデータを印刷処理部２６に送信する（Ｓ１１２）。なお、Ｓ１１０でＮＯ
の場合、Ｓ１１２をスキップする。Ｓ１１０でＮＯの場合、又は、Ｓ１１２を終えた場合、ラスタライズ処理部２２は、Ｓ９４に戻って、続きのページデータが受信されることを監視する。
【００５２】
（ダウンロード処理）
続いて、ダウンロード処理について説明する。図８〜図１０は、ダウンロード処理のフローチャートを示す。ダウンロード処理は、制御部１６のダウンロード処理部２４によって実行される。後で詳しく説明するが、ダウンロード処理部２４は、各処理部１８，２０，２２からの接続指示に従って図８の処理を実行し、ダウンロード指示に従って図９の処理を実行し、切断指示に従って図１０の処理を実行する。接続指示に従って図８の処理を実行している間に別の接続指示がダウンロード処理部２４に送信されることがあり得る。この場合、ダウンロード処理部２４は、複数の接続指示に従って図８の処理を並列的に実行することができる。同様に、ダウンロード処理部２４は、複数のダウンロード指示に従って図９の処理を並列的に実行することができるとともに、複数の切断指示に従って図１０の処理を並列的に実行することができる。また、ダウンロード処理部２４は、図８と図９と図１０の３つの処理を並列的に実行することもできる。
【００５３】
ダウンロード処理部２４は、まず、セッションテーブル記憶領域３６とハンドルテーブル記憶領域３８（これらは図１参照）を初期化する（Ｓ１３０）。次いで、ダウンロード処理部２４は、接続指示が受信されることを監視する（Ｓ１３２）。この接続指示は、上記の図２のＳ１２の処理、図５のＳ６８の処理、又は、図７のＳ１０６の処理で、各処理部１８，２０，２２からダウンロード処理部２４に送信される。接続指示には、ＩＰアドレスやポート番号が含まれる（例えば図３のデータ６２参照）。Ｓ１３２でＹＥＳの場合、ダウンロード処理部２４は、接続指示に含まれるＩＰアドレスとポート番号を特定する（Ｓ１３４）。次いで、ダウンロード処理部２４は、Ｓ１３４で特定されたＩＰアドレスとポート番号の組合せがセッションテーブルに既に登録されているのか否かを判断する（Ｓ１３６）。
【００５４】
Ｓ１３６の処理を説明する前に、セッションテーブルについて説明する。図１２は、セッションテーブル記憶領域３６に記憶されるセッションテーブルの一例を示す。セッションテーブル１００は、セッション番号１０２とＩＰアドレス１０４とポート番号１０６とハンドル数１０８と状態１１０とが対応づけられたデータ１２０を記憶する、なお、以下では、データ１２０のことを「セッション組合せデータ」と呼ぶ。図１２の例では、３つのセッション組合せデータ１２０が存在する。状態１１０の欄には、ロック状態とアンロック状態のいずれかの値が書き込まれる。
【００５５】
図８のＳ１３６の処理では、ダウンロード処理部２４は、セッションテーブル１００を参照することによって、Ｓ１３４で特定されたＩＰアドレスとポート番号の組合せがセッションテーブルに既に登録されているのか否かを判断する。Ｓ１３６でＹＥＳの場合、後述するＳ１３８〜Ｓ１４４の処理をスキップしてＳ１４６に進む。一方において、Ｓ１３６でＮＯの場合、ダウンロード処理部２４は、Ｓ１３４で特定されたＩＰアドレスとポート番号に対して接続を試行する（Ｓ１３８）。即ち、ダウンロード処理部２４は、接続を確立するための信号を送信する。ダウンロード処理部２４は、上記の信号に対する返信を監視することによって、接続が成功したのか否かを判断する（Ｓ１４０）。ここでＮＯの場合、ダウンロード処理部２４は、Ｓ１３２で受信された接続指示を送信した処理部（受信処理部１８とレイアウト処理部２０とラスタライズ処理部２２のいずれか）にエラーデータを返信する（Ｓ１４２）。Ｓ１４２を終えると、Ｓ１３２に戻る。
【００５６】
一方において、Ｓ１４０でＹＥＳの場合、ダウンロード処理部２４は、Ｓ１３４で特定されたＩＰアドレスとポート番号をセッションテーブル１００に登録する（Ｓ１４４）。
これにより、新しいセッション組合せデータ１２０がセッションテーブル１００に追加されることになる。このＳ１４４で追加されるセッション組合せデータ１２０では、ハンドル数１０８として「０」が採用されるとともに、状態１１０として「アンロック状態」が採用される。次いで、ダウンロード処理部２４は、ハンドルテーブルに情報を登録する（Ｓ１４６）。
【００５７】
Ｓ１４６の処理を説明する前に、ハンドルテーブルについて説明する。図１３は、ハンドルテーブル記憶領域３８に記憶されるハンドルテーブルの一例を示す。ハンドルテーブル１３０は、ハンドル番号１３２とセッション番号１３４とＵＲＬ１３６と状態１３８とが対応づけられたデータ１４０を記憶する。なお、以下では、データ１４０のことを「ハンドル組合せデータ」と呼ぶ。図１３の例では、５つのハンドル組合せデータ１４０が存在する。状態１３８の欄には、待ち状態とダウンロード中状態のいずれかの値が書き込まれる。
【００５８】
図８のＳ１４６の処理では、ダウンロード処理部２４は、現在存在する最大のハンドル番号１３２に「１」が加えられた新しいハンドル番号をハンドルテーブル１３０に書き込む。例えば、図１３では、最大のハンドル番号１３２が「５」である。この場合、ダウンロード処理部２４は、新しいハンドル番号「６」をハンドルテーブル１３０に書き込む。また、ダウンロード処理部２４は、Ｓ１３４で特定されたＩＰアドレスとポート番号に対応づけてセッションテーブル１００に記憶されているセッション番号を特定し、特定されたセッション番号をハンドルテーブル１３０に書き込む。上記の例では、新しいハンドル番号「６」に対応づけてセッション番号が書き込まれる。また、ダウンロード処理部２４は、Ｓ１３２で受信された接続指示に含まれるＵＲＬ（ＩＰアドレスとポート番号とファイル名）をハンドルテーブル１３０に書き込む。上記の例では、新しいハンドル番号「６」に対応づけてＵＲＬが書き込まれる。なお、この段階では、状態１３８として「待ち状態」が採用される。Ｓ１４６の処理が実行されることによって、新しいハンドル組合せデータ１４０がハンドルテーブル１３０に追加されることになる。
【００５９】
次いで、ダウンロード処理部２４は、セッションテーブル１００の内容を変更する（Ｓ１４８）。具体的には、ダウンロード処理部２４は、Ｓ１４６で特定されたセッション番号（即ちＳ１３４で特定されたＩＰアドレスとポート番号に対応づけられているセッション番号）に対応づけられているハンドル数１０８に「１」を加える。続いて、ダウンロード処理部２４は、Ｓ１３２で受信された接続指示を送信した処理部（受信処理部１８とレイアウト処理部２０とラスタライズ処理部２２のいずれか）に向けて、Ｓ１４６で決定された新しいハンドル番号を返信する（Ｓ１５０）。Ｓ１５０を終えると、Ｓ１３２に戻る。
【００６０】
続いて、図８のＳ１３２でＮＯと判断された以降の処理について説明する。Ｓ１３２でＮＯの場合、図９のＳ１７０に進む。Ｓ１７０では、ダウンロード処理部２４は、ダウンロード指示が受信されることを監視する。このダウンロード指示は、上記の図２のＳ２０の処理、図５のＳ６８の処理、又は、図７のＳ１０６の処理で、各処理部１８，２０，２２からダウンロード処理部２４に送信される。ダウンロード指示には、ハンドル番号が含まれる。Ｓ１７０でＹＥＳの場合、ダウンロード処理部２４は、ダウンロード指示に含まれるハンドル番号に対応づけてハンドルテーブル１３０に記憶されているセッション番号を特定する。例えば、Ｓ１７０で受信されたハンドル番号が図１３の「３」である場合、ダウンロード処理部２４は、セッション番号「２」を特定する。次いで、ダウンロード処理部２４は、特定されたセッション番号に対応づけてセッションテーブル１００に記憶されている状態１１０を特定する。上記の例の場合、ダウンロード処理部２４は、セッション番号「２」に対応づけられている「ロック状態」を特定する（図１２参照）。「ロック状態」が特定された場合、ダウンロード処理部２４は、Ｓ１７２でＹＥＳと判断する。こ
の場合、ダウンロード処理部２４は、「ロック状態」が解消されるまで待機する。一方において、「アンロック状態」が特定された場合、ダウンロード処理部２４は、Ｓ１７２でＮＯと判断する。この場合、Ｓ１７４に進む。
【００６１】
Ｓ１７４では、ダウンロード処理部２４は、セッションテーブル１００の内容を変更する。具体的には、ダウンロード処理部２４は、Ｓ１７２で特定されたセッション番号（「アンロック状態」が対応づけられているセッション番号）に対応づけられている状態１１０を「アンロック状態」から「ロック状態」に変更する。次いで、ダウンロード処理部２４は、Ｓ１７０で受信されたハンドル番号に対応づけてハンドルテーブル１３０に記憶されているＵＲＬ１３６からファイルをダウンロードすることを試行する（Ｓ１７６）。具体的には、ダウンロード処理部２４は、ＵＲＬ１３６から特定されるデバイス（例えば図１の外部装置５０）に向けて、ＵＲＬ１３６から特定されるファイルを送信するように指示（以下では「ダウンロード要求指示」と呼ぶ）を送信する。なお、Ｓ１７６の処理では、ダウンロード処理部２４は、Ｓ１７０で受信されたハンドル番号に対応づけてハンドルテーブル１３０に記憶されている状態１３８を「待ち状態」から「ダウンロード中状態」に変更することも実行する。
【００６２】
Ｓ１７８の処理が実行されることによって、エラーがない限り、外部からデータファイル（ＸＨＴＭＬデータ、スタイルシートファイル、又は、画像データファイル）がダウンロードされることになる。ダウンロードが正常に行なわれた場合、ダウンロード処理部２４は、Ｓ１７８でＹＥＳと判断する。この場合、ダウンロード処理部２４は、Ｓ１７４で「ロック状態」に変更されたセッション組合せデータ１２０の状態１１０を「アンロック状態」に変更する（Ｓ１８０）。さらに、ダウンロード処理部２４は、Ｓ１７０で受信されたダウンロード指示を送信した処理部（受信処理部１８とレイアウト処理部２０とラスタライズ処理部２２のいずれか）に向けて、ダウンロードされたデータファイルを送信する（Ｓ１８２）。Ｓ１８２を終えると、図８のＳ１３２に戻る。
【００６３】
ダウンロードが正常に行なわれなかった場合、ダウンロード処理部２４は、Ｓ１７８でＮＯと判断する。この場合も、ダウンロード処理部２４は、Ｓ１７４で「ロック状態」に変更されたセッション組合せデータ１２０の状態１１０を「アンロック状態」に変更する（Ｓ１８４）。さらに、ダウンロード処理部２４は、Ｓ１７０で受信されたダウンロード指示を送信した処理部（受信処理部１８とレイアウト処理部２０とラスタライズ処理部２２のいずれか）に向けて、エラーデータを送信する（Ｓ１８６）。Ｓ１８６を終えると、図８のＳ１３２に戻る。
【００６４】
続いて、図９のＳ１７０でＮＯと判断された以降の処理について説明する。Ｓ１７０でＮＯの場合、図１０のＳ２００に進む。Ｓ２００では、ダウンロード処理部２４は、切断指示が受信されることを監視する。この切断指示は、上記の図２のＳ３０，Ｓ３６の処理、図５のＳ６８の処理、又は、図７のＳ１０６の処理で、各処理部１８，２０，２２からダウンロード処理部２４に送信される。切断指示には、ハンドル番号が含まれる。Ｓ２００でＮＯの場合、図８のＳ１３２に戻る。一方において、Ｓ２００でＹＥＳの場合、ダウンロード処理部２４は、切断指示に含まれるハンドル番号に対応づけてハンドルテーブル１３０に記憶されているセッション番号を特定する。次いで、ダウンロード処理部２４は、特定されたセッション番号に対応づけてセッションテーブル１００に記憶されているハンドル数１０８から「１」を減算する。例えば、図１２に例示されるセッション番号「２」のセッション組合せデータ１２０の場合、ハンドル数１０８が「３」から「２」に変更される。
【００６５】
次いで、ダウンロード処理部２４は、Ｓ２００で受信された切断指示に含まれるハンドル番号を含むハンドル組合せデータ１４０をハンドルテーブル１３０から削除する（Ｓ２
０４）。続いて、ダウンロード処理部２４は、Ｓ２０２でハンドル数が減算されたセッション組合せデータ１２０のハンドル数１０８が「０」であるのか否かを判断する（Ｓ２０６）。ここでＮＯの場合、ダウンロード処理部２４は、後述するＳ２０８とＳ２１０をスキップして、図８のＳ１３２に戻る。一方において、Ｓ２０６でＹＥＳの場合、ダウンロード処理部２４は、接続を切断する（Ｓ２０８）。具体的には、ダウンロード処理部２４は、Ｓ２０２でハンドル数が減算されたセッション組合せデータ１２０（ハンドル数が「０」であるセッション組合せデータ１２０）のＵＲＬ１０４，１０６に対して、接続を切断するための信号を送信する。次いで、ダウンロード処理部２４は、上記のセッション組合せデータ１２０（ハンドル数が「０」であるセッション組合せデータ１２０）をセッションテーブル１００から削除する（Ｓ２１０）。Ｓ２１０を終えると、図８のＳ１３２に戻る。
【００６６】
（印刷処理）
続いて、印刷処理について説明する。図１１は、印刷処理のフローチャートを示す。印刷処理は、制御部１６の印刷処理部２６によって実行される。
【００６７】
印刷処理部２６は、ラスタライズ処理部２２からのジョブ開始指示が受信されることを監視している（Ｓ２３０）。このジョブ開始指示は、上記の図７のＳ９２の処理でラスタライズ処理部２２から印刷処理部２６に送信される。Ｓ２３０でＹＥＳの場合、印刷処理部２６は、印刷前処理を実行する（Ｓ２３２）。例えば、印刷処理部２６は、給紙トレイに収容されている印刷媒体を搬送経路に沿って搬送する処理を実行する。次いで、印刷処理部２６は、ラスタライズ処理部２２からのビットマップデータが受信されることを監視する（Ｓ２３４）。このビットマップデータは、上記の図７のＳ１１２の処理でラスタライズ処理部２２から印刷処理部２６に送信される。Ｓ２３４でＹＥＳの場合、Ｓ２４４に進む。Ｓ２３４でＮＯの場合、Ｓ２３６に進む。
【００６８】
Ｓ２３６では、印刷処理部２６は、ラスタライズ処理部２２からのデータ終端指示が受信されることを監視する。このデータ終端指示は、上記の図７のＳ９８の処理でラスタライズ処理部２２から印刷処理部２６に送信される。Ｓ２３６でＹＥＳの場合、印刷処理部２６は、印刷後処理を実行する（Ｓ２３８）。例えば、印刷処理部２６は、印刷後の印刷媒体を排紙トレイに向けて搬送する処理を実行する。Ｓ２３８を終えると、Ｓ２３０に戻る。一方において、Ｓ２３６でＮＯの場合、印刷処理部２６は、ラスタライズ処理部２２からのエラー終了指示が受信されることを監視する（Ｓ２４０）。このエラー終了指示は、上記の図７のＳ１０２の処理でラスタライズ処理部２２から印刷処理部２６に送信される。Ｓ２４０でＹＥＳの場合、印刷処理部２６は、エラー処理を実行する（Ｓ２４２）。例えば、印刷処理部２６は、印刷媒体を排紙トレイに向けて搬送する処理や、エラーである旨を表示部１４（図１参照）に表示する処理を実行する。Ｓ２４２を終えると、Ｓ２３０に戻る。なお、Ｓ２４０でＮＯの場合、Ｓ２３４に戻る。
【００６９】
Ｓ２４４では、印刷処理部２６は、印刷処理を実行する。具体的には、印刷処理部２６は、Ｓ２３４で受信されたビットマップデータに基づいて印刷部３０（図１参照）を駆動する。次いで、印刷処理部２６は、１ページの印刷媒体の印刷が終了したのか否かを判断する（Ｓ２４６）。ここでＮＯの場合、後述するＳ２４８をスキップしてＳ２３４に戻る。Ｓ２４６でＹＥＳの場合、印刷処理部２６は、次のページの印刷媒体を搬送する処理を実行する（Ｓ２４８）。Ｓ２４８を終えると、Ｓ２３４に戻る。
【００７０】
本実施例のプリンタシステム２について詳しく説明した。プリンタ１０は、受信処理とレイアウト処理とラスタライズ処理とダウンロード処理と印刷処理を並列的（同時的）に実行する。即ち、プリンタ１０は、各タスクを並列的に実行する。各タスクを直列的に実行する場合と比べて、ビットマップデータを高速で作成することができる。例えば、ＸＨ
ＴＭＬデータ７０の全てを受信するタスクを終えてからレイアウトタスクやラスタライズタスクを実行したり、全てのページのレイアウトタスクを終えてからラスタライズタスクを実行したりする場合と比べて、ビットマップデータを高速で作成することができる。例えば、インクジェット式のプリンタのように、バンド単位で印刷するタイプのプリンタでは、印刷処理に時間がかかる。本実施例のように、複数のタスクを並列的に実行することで、作成できた印刷データから印刷処理を開始することができ、印刷開始のタイミングを早くすることで、ユーザが印刷指示してから印刷物を得られるまでの待ち時間が短くなる。しかも、複数のタスクを並列的に実行しているために、各タスクを実行するために必要なデータを記憶すれば十分である。したがって、印刷データを生成するために必要なすべてのデータをプリンタ１０で記憶する必要がないので、記憶容量を低減させることができる。
【００７１】
上記のプリンタ１０は、受信処理（受信タスク）によってＸＨＴＭＬデータ７０をダウンロードし、レイアウト処理（レイアウトタスク）によってスタイルシートファイル８０をダウンロードし、ラスタライズ処理（ラスタライズタスク）によって画像データファイルをダウンロードする。データのダウンロードは、同じ外部装置５０から他のデータのダウンロードが行なわれていない場合のみに許容される。即ち、外部装置５０からデータをダウンロード中に他のデータのダウンロード要求指示を同じ外部装置５０に送信することが禁止される。外部装置５０がマルチコネクションに対応していない場合であっても、各データを確実にダウンロードすることができる。また、１つのセッションによって複数のデータを取得することができるため、効率的に印刷データの生成を行なうことができる。
【００７２】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００７３】
（１）上記の実施例では、プリンタ１０がビットマップデータを作成する。しかしながら、プリンタ以外のデバイスが上記の実施例の技術を利用してビットマップデータを作成してもよい。
【００７４】
（２）図２の受信処理では、プリンタ１０は、複数回に亘ってダウンロード要求指示を送信することによってＸＨＴＭＬデータ７０をダウンロードする。即ち、ＸＨＴＭＬデータ７０が少しずつダウンロードされる。しかしながら、プリンタ１０は、１回のダウンロード要求指示を送信することによってＸＨＴＭＬデータ７０の全てをダウンロードしてもよい。また、図５のレイアウト処理では、複数回に亘ってダウンロード要求指示を送信することによってスタイルシートファイル８０をダウンロードしてもよいし、１回のダウンロード要求指示を送信することによってスタイルシートファイル８０の全てをダウンロードしてもよい。また、図７のラスタライズ処理では、複数回に亘ってダウンロード要求指示を送信することによって１つの画像データファイルをダウンロードしてもよいし、１回のダウンロード要求指示を送信することによって１つの画像データファイルの全てをダウンロードしてもよい。複数回に亘ってダウンロード要求指示を送信すると、印刷処理の開始がより早くなるために、ユーザが印刷を指示してから印刷物が得られるまでの待ち時間が短くなる。
【００７５】
（３）上記の実施例では、ｎバイト単位でＸＨＴＭＬデータ７０がダウンロードされる。即ち、ダウンロードされるデータ量が一定である。しかしながら、このデータ量は、ダウンロード毎（ダウンロード要求指示毎）に変化するものであってもよい。
【００７６】
（４）ダウンロード処理部２４が存在しなくてもよい。この場合、受信処理部１８、レイアウト処理部２０、及び、ラスタライズ処理部２２が、テーブル１００，１３０に情報を
書き込む処理や、テーブル１００，１３０の情報に従って同じ外部装置５０から並列的にダウンロードすることを禁止する処理等を実行してもよい。即ち、受信処理部１８、レイアウト処理部２０、及び、ラスタライズ処理部２２が、ダウンロード処理部２４を兼用していてもよい。
【００７７】
（５）実施例の２以上のタスクが１つのタスクに併合されてもよい。例えば、受信タスクとレイアウトタスクが併合されてもよい。また、例えば、レイアウトタスクとラスタライズタスクが併合されてもよい。一方において、上記の実施例の１つのタスクを複数のタスクに分割してもよい。例えば、図５のレイアウト処理のＳ６４の解析処理を１つのタスクとしてもよい。また、上記の実施例に記載されているタスク以外のタスクをさらに採用してもよい。
【００７８】
（６）上記の実施例では、ＩＰアドレス１０４とポート番号１０６の組合せに対して、１つのセッション組合せデータ１２０（図１２参照）が作成される。しかしながら、ＩＰアドレス１０４のみに対して、１つのセッション組合せデータ１２０が作成されるようにしてもよい。
【００７９】
（７）ＸＨＴＭＬ−Ｐｒｉｎｔデータ７０以外のデータに基づいてビットマップデータを作成する場合でも、上記の実施例の技術を採用してもよい。
【００８０】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００８１】
２：プリンタシステム、１０：プリンタ、１２：操作部、１４：表示部、１６：制御部、１８：受信処理部、２０：レイアウト処理部、２２：ラスタライズ処理部、２４：ダウンロード処理部、２６：印刷処理部、３０：印刷部、３２：記憶部、３６：セッションテーブル記憶領域、３８：ハンドルテーブル記憶領域、５０：外部装置、６０：ジョブ作成指示、７０：ＸＨＴＭＬ−Ｐｒｉｎｔデータ、８０：スタイルシートファイル、１００：セッションテーブル、１３０：ハンドルテーブル
【図１】
0005206859.tif 000002
【図２】
0005206859.tif 000003
【図３】
0005206859.tif 000004
【図４】
0005206859.tif 000005
【図５】
0005206859.tif 000006
【図６】
0005206859.tif 000007
【図７】
0005206859.tif 000008
【図８】
0005206859.tif 000009
【図９】
0005206859.tif 000010
【図１０】
0005206859.tif 000011
【図１１】
0005206859.tif 000012
【図１２】
0005206859.tif 000013
【図１３】
0005206859.tif 000014