(57)【特許請求の範囲】
【請求項１】
サーバーに対して印刷データの送信要求を行う要求部と、
前記送信要求に応じて前記サーバーから送信された前記印刷データを受信する受信部と、
受信した前記印刷データを順次処理対象とし、前記処理対象となった前記印刷データに基づいて印刷を行う印刷処理部と、
受信した前記印刷データのうち前記印刷処理部による前記処理対象となった前記印刷データのデータ量を計測する計測部と、
を備え、
前記受信部は、受信した前記印刷データを第一記憶部に記憶させ、
前記印刷処理部は、前記第一記憶部から第二記憶部に転送された前記印刷データを処理対象として印刷前処理を行い、前記印刷前処理後のデータを第三記憶部に記憶させ、前記第三記憶部に記憶された前記印刷前処理後のデータに基づいて印刷を行い、
前記印刷データの全てが前記処理対象となる前に前記サーバーとのセッションが切断された場合に、前記印刷処理部は、前記第二記憶部に記憶された印刷データを処理対象として印刷前処理を行い、セッション切断後に再接続された場合に、前記要求部は、前記セッションの再接続後に前記計測部が計測した前記データ量に基づいて前記印刷データのうちまだ前記処理対象になっていない部分の送信要求を行う、
印刷装置。
【請求項２】
前記印刷処理部は、前記セッションの再接続後に受信した前記印刷データがまだ前記処理対象となっていない部分である場合には、当該部分を前記処理対象とし、前記セッションの再接続後に受信した前記印刷データが既に前記処理対象となった部分とまだ前記処理対象になっていない部分とを含む場合には、受信した前記印刷データから前記計測部が計測した前記データ量に基づいてまだ前記処理対象になっていない部分を抽出して前記処理対象とする、
請求項１に記載の印刷装置。
【請求項３】
前記計測部は、前記第一記憶部から前記第二記憶部に転送された前記印刷データの前記データ量を計測する、
請求項１または請求項２のいずれかに記載の印刷装置。
【請求項４】
前記要求部は、まだ前記処理対象になっていない部分の送信要求を、ＨＴＴＰのｒａｎｇｅヘッダーを用いて範囲指定することで行う、
請求項１〜請求項３のいずれかに記載の印刷装置。
【請求項５】
サーバーに対して印刷データの送信要求を行う要求工程と、
前記送信要求に応じて前記サーバーから送信された前記印刷データを受信する受信工程と、
受信した前記印刷データを順次処理対象とし、前記処理対象となった前記印刷データに基づいて印刷を行う印刷処理工程と、
受信した前記印刷データのうち前記処理対象となった前記印刷データのデータ量を計測する計測工程と、
を含み、
前記受信工程において、受信した前記印刷データを第一記憶部に記憶させ、
前記印刷処理工程において、前記第一記憶部から第二記憶部に転送された前記印刷データを処理対象として印刷前処理を行い、前記印刷前処理後のデータを第三記憶部に記憶させ、前記第三記憶部に記憶された前記印刷前処理後のデータに基づいて印刷を行い、
前記印刷データの全てが前記処理対象となる前に前記サーバーとのセッションが切断された場合に、前記印刷処理工程において、前記第二記憶部に記憶された印刷データを処理対象として印刷前処理を行い、セッション切断後に再接続された場合に、前記要求工程においては、前記セッションの再接続後に前記計測工程にて計測した前記データ量に基づいて前記印刷データのうちまだ前記処理対象になっていない部分の送信要求を行う、
印刷方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドコンピューティングシステムにおいてユーザーからサーバー経由で取得した印刷要求に応じて印刷を実行する印刷装置および印刷方法に関する。
【背景技術】
【０００２】
従来、電子メールの送信によって特定のプリンターに印刷を実行させることができるサービスを提供するクラウドコンピューティングシステムが知られている（例えば特許文献１）。このクラウドコンピューティングシステム（以下、単に印刷システムという。）は、特定の電子メールを受信すると電子メールに基づいて特定のプリンターに対応した印刷データを生成するサーバーを備え、サーバーに登録されている特定のプリンターはサーバーから印刷データを取得して印刷を実行する。したがって印刷システムの利用者は、ＰＣ（Personal Computer）、スマートフォン等の通信端末にプリンタードライバーがインストールされていない場合であっても、印刷システムに登録されているプリンターを利用することが可能になる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−７１２５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような印刷システムにおいては、ユーザーが送信した電子メールに基づいてサーバーが印刷データを生成し、プリンターに対して印刷ジョブの存在を通知し、通知を受けたプリンターはサーバーに対して印刷データの送信要求を行って印刷データを取得しながら印刷を実行している。プリンターが搭載しているメモリサイズにはコストの観点から制限があるので、印刷が終了した部分の印刷データについてはメモリから破棄し次に処理すべき部分の印刷データのためにメモリ領域を確保する。このようにプリンターは、印刷データを取得しながら印刷を行うため、印刷データの取得途中でプリンターにおいてエラーが発生した場合、印刷を続行することができないため印刷データをメモリから破棄することができず、やがて後続して送信された印刷データを受信できない状態となる。
【０００５】
このような場合、従来はエラーが発生したため印刷を終了するという動作になっておりエラー復帰後の動作について特に考慮されていなかった。プリンターはこれ以上印刷データを受信できないためやがてプリンターとサーバー間のセッションも切断される。エラーが解消された後は、できれば最初から印刷をやり直すよりもエラーによる中断時の続きから印刷を再開できる方が望ましいことを考えると、セッションはエラー発生後も維持されている方が好都合であるが、プリンターにおけるエラーが発生後即座に解消される保証はなく場合によっては長時間エラーによる印刷中断の状態のまま放置されることも考えられる。エラーが解消され印刷可能となるまでの期間もセッションを維持し続けることはサーバーに負荷がかかるので、セッションを維持し続けることは難しい。前述のように従来はエラー復帰後の動作について考慮されていないので、エラー解消後に再度印刷する場合は、もう一度印刷ジョブの最初から印刷が実行される。その場合、インクや印刷媒体等の消耗品や、印刷に要する時間を無用に消費してしまうことになる。
本発明は、印刷データの取得途中で印刷装置とサーバーとの間でセッションが切断され、その後再接続された場合に、効率的に印刷を再開することができる印刷装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するための印刷装置は、要求部と、受信部と、印刷処理部と、計測部とを備える。要求部は、サーバーに対して印刷データの送信要求を行う。受信部は、サーバーから送信要求に応じて送信された印刷データを受信する。印刷処理部は、受信部が受信した印刷データを順次処理対象とし、処理対象にした印刷データに基づいて印刷を行う。計測部は、受信した印刷データのうち印刷処理部による処理対象となった印刷データのデータ量を計測する。すなわち、送信要求した印刷データであって、所定サイズずつ順に受信する印刷データが順次印刷処理部の処理対象となるたびにその累積のデータ量（サイズ）を計測する。
【０００７】
本発明の印刷装置において、サーバーに要求した印刷データの全てが印刷処理部の処理対象となる前にサーバーとのセッションが切断されその後再接続された場合、要求部は、サーバーとのセッションの再接続後に計測部で計測されたデータ量に基づいて印刷データのうちのまだ前記処理対象になっていない部分の送信要求を行う。すなわち要求部は、セッション再接続後に、既に印刷処理部の処理対象となった部分の送信要求は行わず、まだ処理対象となっていない部分の送信要求をサーバーに対して行う。そのため、既に印刷済みの部分や印刷を実行するために印刷装置に適した形式に印刷データを変換する印刷前処理中の部分の印刷データに対して再度印刷を実行することを防止できる。すなわち、セッションの切断・再接続を経ても印刷中断時の続きから印刷を再開することができるため、インクや印刷媒体などの消耗品が無用に消費されることを防止できる。また、続きから印刷再開するため、再度最初から印刷する場合と比較して、印刷完了までに要する時間を短縮することができる。
【０００８】
さらに、上記目的を達成するための印刷装置において、印刷処理部は、セッションの再接続後に受信した印刷データがまだ印刷処理部の処理対象となっていない部分である場合には、当該部分の印刷データを処理対象とし、セッションの再接続後に受信した印刷データが既に処理対象となった部分とまだ処理対象になっていない部分とを含む場合には、受信した印刷データから計測部で計測したデータ量に基づいてまだ処理対象になっていない部分の印刷データを抽出して処理対象としてもよい。
【０００９】
すなわちサーバー側が、印刷装置からの印刷データの部分的な送信要求機能に対応している場合は、印刷装置が要求した通りまだ処理対象になっていない部分の印刷データがサーバーから送信されるので当該印刷データを処理対象とする。一方、サーバーが部分的な送信要求機能に対応していない場合は、サーバーからは既に処理対象となった部分もまだなっていない部分も含めて印刷データ全体が送信されることになる。その場合も本発明の印刷装置によると、まだ処理対象となっていない部分の印刷データを抽出して印刷処理部の処理対象とすることができる。そのため、部分的な送信要求にサーバーが対応しているか否かに関わらず、印刷装置側では、印刷中断時の続きから印刷を再開することができるため、インクや印刷媒体などの消耗品が無用に消費されることを防止できる。また、続きから印刷再開するため、再度最初から印刷する場合と比較して、印刷に要する時間も短縮することができる。
【００１０】
さらに、上記目的を達成するための印刷装置において、受信部は、受信した印刷データを第一記憶部に記憶させてもよい。その場合に印刷処理部は、第二記憶部に記憶されている印刷データを処理対象として印刷前処理を行い、印刷前処理後のデータに基づいて印刷を行ってもよい。またその場合に計測部は、第一記憶部から第二記憶部に転送された印刷データのデータ量を計測してもよい。
印刷装置が、サーバーから受信した印刷データを一旦記憶する第一記憶部と、印刷前処理のための印刷データの記憶領域である第二記憶部と、を備える構成である場合、印刷前処理を行うために印刷データを第一記憶部から第二記憶部に移すという処理が必要である。その処理と同期して第一記憶部から第二記憶部に移された印刷データのデータ量を計測することで、「印刷処理部による処理対象となった印刷データのデータ量」の計測を実現することができる。
【００１１】
さらに、上記目的を達成するための印刷装置において、要求部は、まだ印刷処理部の処理対象になっていない部分の印刷データの送信要求を、ＨＴＴＰのｒａｎｇｅヘッダーを用いて範囲指定することで行ってもよい。
ＨＴＴＰのｒａｎｇｅヘッダーを用いることで、印刷データの部分的な送信要求を実現することができる。
【００１２】
なお、請求項に記載された各手段の機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら各手段の機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。さらに、本発明は方法としても、コンピュータープログラムとしても、そのプログラムの記録媒体としても成立する。むろん、そのコンピュータープログラムの記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体であってもよい。
【図面の簡単な説明】
【００１３】
【図１】第一実施形態にかかる印刷装置のブロック図。
【図２】第一実施形態にかかるバッファーの構成例を示す模式図。
【図３】第一実施形態にかかる印刷シーケンスのシーケンスチャート。
【図４】第一実施形態にかかる印刷データの各部の状態を説明する模式図。
【図５】他の実施形態にかかる印刷データの各部の状態を説明する模式図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を添付図面を参照しながら説明する。尚、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
１．第一実施形態
１−１．構成
図１は、本実施形態におけるプリンター（印刷装置）３を含む印刷システム全体の構成を示すブロック図である。図１に示す印刷システムは、サーバー２に登録されたプリンター３に対応付けられた電子メールアドレスを宛先とする電子メールを任意の通信端末１から送信すると、宛先の電子メールアドレスに対応付けられたプリンター３において電子メールの添付ファイルや本文が印刷される機能を実現する。サーバー２は１以上のコンピューターによって構成される。サーバー２、プリンター３、通信端末１はインターネット４に接続される。
【００１５】
プリンター３は、サーバー２とのＸＭＰＰ（Extensible Messaging and Presence Protocol）を用いた常時接続によってサーバー２から印刷ジョブ有り通知を通知されると、ＨＴＴＰ（Hyper Text Transfer Protocol）を用いて印刷データをサーバー２から取得し、印刷を実行する機能を有する。したがってプリンター３は、ＣＰＵ、ＲＯＭ、ＲＡＭ等を備えたコントローラー３１、印刷部３５等の通常のプリンターの構成要素に加えて、インターネット４を介して各種のデータを送受信するための通信部３４を備えている。通信部３４はインターネット４からＬＡＮを経由して受信する信号をプロトコルに従って変換して内部バスに送出し、内部バスから取り込んだ信号をプロトコルに従って変換してＬＡＮを経由してインターネットに送出する。コントローラー３１のＲＯＭにはＲＡＭに読み込まれＣＰＵによって実行される通信プログラムや印刷プログラムなどの種々のコンピュータープログラムが記憶されている。これらのコンピュータープログラムをＣＰＵが実行することによって、プリンター３の各種の機能が実現される。
【００１６】
通信プログラムは、サーバー２とＴＣＰ／ＩＰ、ＨＴＴＰ、ＸＭＰＰ等の通信プロトコルに従った通信を行うためのプログラムである。なお、ＨＴＴＰやＸＭＰＰを用いてサーバー２と接続するために必要な情報は予めコントローラー３１は取得済みである。受信バッファー３２（第一記憶部に相当）は、通信プログラムを実行するコントローラー３１が通信部３４を介して外部から受信したデータを記憶するメモリであり、印刷データやなど様々なデータが一旦格納されるメモリである。通信プログラムを実行するコントローラー３１および通信部３４は、印刷データの送信要求をサーバー２に対して行う「要求部」に相当する。また、通信プログラムを実行するコントローラー３１と通信部３４と受信バッファー３２とは、サーバー２から送信された印刷データを受信する「受信部」に相当する。
【００１７】
印刷プログラムは、受信バッファー３２に記憶されている印刷データを読み出して処理バッファー３３（第二記憶部に相当）に転送し、印刷前処理を施してプリンター３における印刷に適した形式のデータに印刷データを変換し、変換後のデータに基づいて印刷部３５を制御して印刷を行う機能を有するプログラムである。印刷プログラムを実行するコントローラー３１と、印刷部３５と処理バッファー３３とは「印刷処理部」に相当する。本実施形態においては、サーバー２が生成しプリンター３に送信する印刷データは、画素値がＲＧＢ形式で表現されたデータである。その場合、印刷前処理は、そのような形式の印刷データに対して施す、解像度変換処理や、色変換処理（プリンター３に搭載されたインクごとの階調値に変換する処理）や、ハーフトーン処理や、並べ替え処理等を指す。処理バッファー３３は、受信バッファー３２に記憶された様々なデータの中から抽出され読み出された印刷データに対して前述の印刷前処理を施す際に処理前や処理過程や処理後のデータを記憶するためのメモリである。印刷前処理に含まれる前述の各処理のデータ受け渡しのためにそれぞれ設けられたバッファーメモリをまとめて処理バッファー３３と呼ぶ。
【００１８】
図２は各バッファーについて説明するための模式図である。図２に示すように例えば本実施形態では処理バッファー３３は、受信バッファー３２から読み出した解像度変換処理前の印刷データを記憶する第一の処理バッファー３３１と、解像度変換後のデータであり色変換処理前のデータを記憶する第二の処理バッファー３３２と、色変換処理後のデータであってハーフトーン処理前のデータを記憶する第三の処理バッファー３３３と、ハーフトーン処理後のデータであって並べ替え処理前のデータを記憶する第四の処理バッファー３３４と、並べ替え処理後のデータを記憶する第五の処理バッファー３３５とを含んでいる。第五の処理バッファー３３５に記憶されたデータは印刷部３５による印刷に用いられる。印刷処理プログラムを実行するコントローラー３１が、受信バッファー３２に記憶されている印刷データを受信バッファー３２から読み出し、処理バッファー３３（第一の処理バッファー３３１）に転送することで、「印刷処理部」による「処理対象」となる。受信バッファー３２から読み出され、処理バッファー３３（第一の処理バッファー３３１）に転送された印刷データは、受信バッファー３２からは破棄され、受信する新たなデータのための格納場所に当てられる。印刷プログラムは受信バッファー３２から処理バッファー３３に印刷データを転送するごとに、転送された印刷データの累積のデータ量をサイズｎとして計測する計測機能を有している。したがって印刷プログラムを実行するコントローラー３１は「計測部」に相当する。
【００１９】
コントローラー３１は、第一の処理バッファー３３１に記憶されている印刷データに対する解像度変換処理を終了すると処理後のデータを第二の処理バッファー３３２に書き込み、当該印刷データを第一の処理バッファー３３１から破棄する。そして、後続の印刷データを受信バッファー３２から読み出し第一の処理バッファー３３１に転送する。第二の処理バッファー３３２〜第五の処理バッファー３３５についても同様にコントローラー３１は、前段のバッファーからデータを読み出して処理し後段のバッファーに書込みが終了すると前段のバッファーからはデータを破棄し後続のデータを前段のバッファーに転送可能な状態とする。印刷部３５は、インクジェット方式、レーザー方式など周知の印刷方式で写真用紙、普通紙、ＯＨＰシートなどの印刷媒体に印刷を実行するためのアクチュエーターやセンサーや駆動回路や機械部品を備えている。印刷部３５によって印刷が完了した部分に相当する印刷データは処理バッファー３３（第五の処理バッファー３３５）から破棄される。
【００２０】
１−２．印刷シーケンス
図１に示す印刷システムにおいては、通信端末１からプリンター３に対応付けられた電子メールアドレス宛の電子メールが添付ファイルとともに送信されたとき、プリンター３において添付ファイルの印刷が即座に実行されることが望まれる。また、プリンター３が印刷要求を即時に取得するためにサーバー２をＨＴＴＰに基づいたメッセージを使ってポーリングすることはサーバー２の負荷とネットワークトラフィックの観点から望ましくない。そこで、プリンター３はＸＭＰＰに基づいた印刷ジョブ有り通知をサーバー２から受信する。ＸＭＰＰは、双方向にメッセージを送信できる所謂プッシュ型のプロトコルであるため、プリンター３によるサーバー２のポーリングは不要となる。プリンター３の電源がオン状態のとき、通信エラーやその他のエラーが特に発生していなければ、サーバー２とプリンター３とは、ＸＭＰＰ接続が常時確立された状態である。
【００２１】
図３は、本実施形態における印刷シーケンスのシーケンスチャートであって、さらに詳細には、一つの印刷ジョブに含まれる印刷データをプリンター３が全て取得して処理バッファー３３に転送する前にプリンター３にエラーが発生する場合のシーケンスチャートである。なお、図３のシーケンスチャートでは、発明の要部を明確にするため、セッションの確立や切断のシーケンスの詳細や、各通信に応答するＡＣＫパケットやＦＩＮパケット等の記載を発明に関連する部分を除いて省略している。
【００２２】
はじめに、プリンター３に対応付けられた電子メールアドレス宛に通信端末１から送信された電子メールをサーバー２が受信する（Ｓ１００）と、電子メールに基づいて添付ファイルなどの印刷対象をレンダリングして印刷データを生成し、ＸＭＰＰを用いてサーバー２は印刷ジョブ有り通知をプリンター３に送信する（Ｓ１０５）。通信部３４はサーバー２からＸＭＰＰで送信された印刷ジョブ有り通知を受信すると、サーバー２とＨＴＴＰセッションを確立し（Ｓ１１０）、ＨＴＴＰのｇｅｔリクエストでコンテンツ情報の送信要求をサーバー２に送信する（Ｓ１１５）。プリンター３から送信されたコンテンツ情報送信要求を受信したサーバー２は、印刷ジョブのコンテンツ情報をプリンター３に送信する（Ｓ１２０）。ここでコンテンツ情報には、印刷データのダウンロード先ＵＲＩや、印刷データのドキュメントフォーマット等の印刷ジョブに含まれる印刷データに関する情報が含まれている。コンテンツ情報は通信部３４を経て受信バッファー３２に記憶される。コントローラー３１は受信バッファー３２に記憶されているデータを解析しコンテンツ情報を取得する。コンテンツ情報取得後はコントローラー３１はコンテンツ情報を受信バッファー３２から破棄する。
【００２３】
続いてコントローラー３１は、ＨＴＴＰのｇｅｔリクエストで印刷データの送信要求をサーバー２に送信する（Ｓ１２５）。印刷データのダウンロード先ＵＲＩはＳ１２０でプリンター３が取得したコンテンツ情報に含まれている。なおＳ１２５においては、Ｓ１０５で通知された印刷ジョブに含まれる印刷データ全体を対象とした送信要求を行う。サーバー２はプリンター３からの印刷データ送信要求を受けて、ＨＴＴＰを用いて印刷データを先頭から所定サイズずつプリンター３に送信する（Ｓ１３０）。Ｓ１３０で送信される印刷データは、Ｓ１２５のｇｅｔリクエストに対応する応答メッセージの中に含まれた形でプリンター３に送信される。応答メッセージに含まれるＨＴＴＰヘッダーには、プリンター３に送信する印刷データ全体のサイズ（サイズＭ）を示す情報が含まれている（Content-Lengthヘッダー）。
【００２４】
サーバー２から送信された印刷データは通信部３４や通信プログラムを実行するコントローラー３１により、受信バッファー３２に格納される。前述の印刷データ全体のサイズＭも受信バッファー３２に格納される。コントローラー３１は、受信バッファー３２内のデータを解析してサイズＭを取得して記憶する。このサイズＭの記憶は、コントローラー３１により印刷データの印刷完了に応じて消去される。続いてコントローラー３１は、受信バッファー３２に格納されている印刷データを処理バッファー３３（第一の処理バッファー３３１）に空きがあれば処理バッファー３３（第一の処理バッファー３３１）に転送するとともに、転送した累積の印刷データのデータ量（サイズｎ）を計測する。また処理バッファー３３に転送済みの印刷データは受信バッファー３２から破棄される。データ量（サイズｎ）は１印刷ジョブごとに計測される（一つの印刷ジョブの印刷が終了するとサイズｎの値はリセットされる）。コントローラー３１は、処理バッファー３３に転送した印刷データを対象に印刷前処理を施す。そして、印刷前処理を施されたデータに基づいてコントローラー３１は印刷部３５を制御して印刷を実行する。印刷が完了した部分に相当する処理バッファー３３内のデータは破棄される。
【００２５】
コントローラー３１が、印刷データの受信、印刷データの受信バッファー３２から処理バッファー３３への転送、転送されたデータ量の計測、印刷前処理、印刷実行の工程を繰り返している途中で、プリンター３においてエラーが発生した場合のシーケンスについて以降で説明する。この場合のエラーは例えば、印刷用紙切れやインク切れなど比較的経度でユーザーがエラーを解消後に印刷を続きから再開しても問題が生じない種類のエラーが想定される。プリンター３におけるエラーが発生すると、プリンター３では印刷を続行できないため、コントローラー３１は印刷動作を中断する。また、コントローラー３１は処理バッファー３３内のデータを印刷再開に備えて破棄せずに残す。処理バッファー３３内に空きが生じないため、コントローラー３１は受信バッファー３２内の印刷データを処理バッファー３３に転送しない。そのため受信バッファー３２は、サーバー２から続々と受信した印刷データであってまだ印刷前処理の処理対象でない印刷データを含むデータで満たされ、後続の印刷データを受信できない状態となる。
【００２６】
この状態をサーバー２に通知するため、コントローラー３１は、Ｓ１３０のサーバー２からの印刷データの送信に対応するＡＣＫパケットにおいてウィンドウサイズを「０」と設定してサーバー２に送信する（Ｓ１３５）。この状態をゼロウィンドウ状態と呼ぶ。サーバー２は、所定の期間（例えば５分間）、ゼロウィンドウ状態が継続していると判断すると、ＨＴＴＰセッションを切断するためのデータを送信する（Ｓ１４０）。具体的には例えば、サーバー２はＲＳＴ（Reset）パケットをプリンター３に送信する。この結果、プリンター３とサーバー２との間のセッションは切断される。セッションが切断されると、コントローラー３１は受信バッファー３２に格納されていた印刷データを破棄する。
【００２７】
エラーが解消され印刷の再開が可能となる時期は未定であり、当該時期までＨＴＴＰセッションを維持し続けることは、サーバー２に負荷を与える。具体的には、セッションごとに確保しておくメモリ領域を長期間解放できない状態となり、その結果、他の通信端末から送信された電子メールを受信してから印刷を実行するまでの時間が遅延する。この遅延を防止するために、サーバー２とプリンター３との間のセッションが一旦切断されるのである。
【００２８】
コントローラー３１がプリンター３におけるエラーが解消されたことを検出すると、コントローラー３１は、処理バッファー３３に蓄えられている印刷データを用いて印刷前処理や印刷を再開する。また、コントローラー３１はエラーの解消の検出に応じて、再びサーバー２とのＨＴＴＰセッションを確立し（Ｓ１４５）、サーバー２に印刷データ送信要求を送信する（Ｓ１５０）。Ｓ１５０における印刷データの送信要求、すなわちエラー解消後に行う印刷データの送信要求の場合、コントローラー３１は、エラーが発生した時点の印刷データのダウンロード先ＵＲＩと、処理バッファー３３に転送済みのデータ量（サイズｎ）の値に基づいて既に印刷前処理の処理対象となった印刷データを除く残りの印刷データの部分を示す範囲と、を指定して、送信要求を行う。サーバー２から受信して受信バッファー３２に記憶されていた印刷データはセッションの切断にともなって破棄されているので、受信バッファー３２に記憶されていた部分の印刷データも再取得の対象とする。具体的にはコントローラー３１は、印刷データ全体のサイズＭとサイズｎとを比較しサイズＭ＞サイズｎ＞０であれば、印刷データの先頭からサイズｎ分のデータに後続する位置から、印刷データの末尾（サイズＭの位置）までの（サイズＭ−サイズｎ）分の印刷データを範囲指定する。範囲指定には、ＨＴＴＰのｒａｎｇｅヘッダーを用いる。
【００２９】
図４は、一つの印刷ジョブに含まれる印刷データを示す模式図であり、プリンター３におけるエラーが発生した時点の印刷データの状態の一例を説明するための模式図である。この例では、印刷データをその先頭から４つの部分に分け、先頭に近い順からｄ１、ｄ２、ｄ３、ｄ４と呼ぶ。印刷データはその先頭から順にサーバー２から送信され、順に受信バッファー３２に記憶され、処理バッファー３３に転送されて印刷前処理を施され、印刷され、破棄される。エラーが発生したとき、印刷データのうち先頭から所定サイズ分の印刷データｄ１は既に印刷済みで処理バッファー３３から破棄されているデータであり、印刷データｄ１に後続する印刷データｄ２は処理バッファー３３に転送され印刷前処理中のデータおよび印刷中のデータであり、印刷データｄ２に後続する印刷データｄ３は受信バッファー３２に格納されている状態でまだ処理バッファー３３には転送されていない状態のデータであるとする。印刷データｄ３に後続する印刷データｄ４についてはプリンター３にまだ受信されていないデータであるとする。この状態の時点でエラーが発生した場合、コントローラー３１は印刷データｄ３と印刷データｄ４の部分をＳ１５０における印刷データの送信要求において指定する範囲とする。よって、エラーが解消した後、印刷データｄ２はそのまま印刷前処理や印刷が再開され、印刷が終了した後に処理バッファー３３から破棄される。また、印刷データｄ３および印刷データｄ４は、サーバー２からプリンター３に送信され、印刷前処理と印刷とが行われる。
【００３０】
サーバー２は要求された部分の印刷データをプリンター３に送信する（Ｓ１５５）。プリンター３のコントローラー３１は印刷データを受信し受信バッファー３２に格納すると、上述と同様に、処理バッファー３３に転送し印刷前処理を施して印刷を実行する。一つの印刷ジョブに対応する印刷が完了すると、印刷ジョブステータスとして印刷終了をサーバー２に通知し（Ｓ１６０）、他にプリンター３に対する印刷ジョブが存在しなければサーバー２はプリンター３とのセッションを切断する（Ｓ１６５）。なお、印刷を再開した後に再びエラーが生じた場合には、Ｓ１３５と同様にサーバー２からの印刷データの送信に対応するＡＣＫパケットにおいてウィンドウサイズを「０」と設定してサーバー２に送信し、Ｓ１４０以降の動作が繰り返される。
【００３１】
以上説明したように、本実施形態によると、印刷データの処理バッファー３３への転送が終了していない状態でサーバー２とのセッションが切断された場合、セッション再接続後に、処理バッファー３３に既に転送済みで印刷前処理の処理対象となっている（処理中あるいは処理済みの）印刷データの送信要求は行わず、処理バッファー３３にまだ転送されておらず印刷前処理の処理対象にまだなっていない印刷データの送信要求をサーバーに対して行う。そのため、既に印刷済みの部分や印刷前処理中の部分の印刷データに対して再度印刷前処理を行って印刷を実行することを防止できる。その結果、印刷中断時の続きから印刷を再開することができるため、インクや印刷媒体などの消耗品が無用に消費されることを防止できる。また、続きから印刷再開するため、再度最初から印刷する場合と比較して、印刷に要する時間も短縮することができる。
【００３２】
２．他の実施形態
尚、本発明の技術的範囲は、上述した実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば上記実施形態では、サーバー２がＨＴＴＰのｒａｎｇｅヘッダーによる範囲指定に対応しており、プリンター３からの要求された範囲指定通りの印刷データをプリンター３に送信する例を示したが、サーバー２がｒａｎｇｅヘッダーによる範囲指定に対応していない場合もありえる。その場合は、第一実施形態で説明した図３のＳ１５０においてプリンター３は第一実施形態と同様に範囲指定をした印刷データ送信要求を行うが、サーバー２は対応していないことを示す情報をプリンター３にＨＴＴＰステータスコードとして通知した上で印刷ジョブに含まれる印刷データ全体を送信する。ステータスコードとしては、範囲指定に応じた部分の印刷データを送信する場合は"２０６"、範囲指定に対応せずに印刷データ全体を送信する場合は"２００"がサーバー２から通知される。コントローラー３１は、サーバー２から送信された印刷データを上述と同様に受信バッファー３２に格納する。コントローラー３１は範囲指定した送信要求に対してサーバー２から通知されたステータスコードについて判別を行い、ステータスコードが範囲指定に応じた部分の印刷データを送信することを示している場合、すなわちステータスコードが"２０６"である場合、上述の実施形態のＳ１５５と同様の動作が行われる。一方、ステータスコードが、範囲指定に対応せずに印刷データ全体を送信することを示している場合、すなわちステータスコードが"２００"である場合、コントローラー３１は、受信バッファー３２に格納された印刷データの先頭から、計測しておいたデータ量（サイズｎ）分（既に印刷前処理の処理対象となった分）の印刷データを処理バッファー３３には転送せずに破棄する。そしてコントローラー３１は、まだ印刷前処理の対象として処理バッファー３３に転送されていない印刷データを、処理バッファー３３に空きが出来た後に転送し、印刷前処理の処理対象とする。なおこのときコントローラー３１は、転送した分のデータ量をカウントする。
【００３３】
図４を用いて説明すると、コントローラー３１は、先頭からサイズｎ分の印刷データを受信バッファー３２から破棄して処理バッファー３３には転送しない。印刷データｄ３以降の印刷データを受信バッファー３２に受信してからは、印刷データｄ３以降印刷データの末尾までの印刷データを順に処理バッファー３３に転送する。このようにすることで、サーバー２がｒａｎｇｅヘッダーによる範囲指定に対応していない場合も、エラー復帰後にエラー発生時の続きから印刷を再開することができる。
【００３４】
また、上記実施形態においては、受信バッファー３２から処理バッファー３３に印刷データを転送する際に転送済み印刷データの累積データ量をカウントする例を説明したが（図２参照）、受信バッファー３２に印刷データが格納された時点で「印刷処理部」の処理対象となったとして、受信バッファー３２に印刷データを格納した時点で格納済み印刷データの累積データ量をカウントしてもよい。この場合、通信プログラムを実行するコントローラー３１と通信部３４とが「受信部」に相当し、印刷プログラムを実行するコントローラー３１と受信バッファー３２と処理バッファー３３とが「印刷処理部」に相当する。図５はこの場合の印刷データの状態を説明するための模式図である。図５を参照して説明すると、この場合サイズｎはｄ１とｄ２とｄ３を合わせたサイズに相当する。そして、図５に示す状態のときにエラーが発生した場合、再接続後に、範囲指定して印刷データを要求する場合は印刷データｄ４の部分を指定する。サーバー２から印刷データ全体が送信された場合は、ｄ１〜ｄ３の部分を一旦受信バッファー３２に格納した後受信バッファー３２から破棄して受信バッファー３２にｄ４の部分を順次格納する。なお、この変形例の場合、Ｓ１４０でセッションが切断されてもコントローラー３１は受信バッファー３２内の印刷データｄ３を破棄しない。
【００３５】
また、エラー発生時に処理バッファー３３に存在していたデータ（図４や図５の印刷データｄ２）については、エラー解消前に印刷前処理を完了させて最終段の処理バッファー３３である第五の処理バッファー３３５に記憶させておいてもよい。この場合、エラー解消後にこの印刷データｄ２に対する印刷前処理を行わずに印刷を行うことができるため、印刷時間の短縮に貢献することができる。なお、エラー発生時に処理バッファー３３に存在していたデータ（図４や図５の印刷データｄ２）に対する印刷前処理や印刷の再開は、サーバー２から後続の印刷データ（図４や図５の印刷データｄ３）が送られてきてからであってもよい。
【００３６】
また、上記実施形態で説明したバッファーの構成（図２）はあくまでも一例であってこれに限定されるものではない。また、上記実施形態で示した印刷前処理の一部または全てをサーバー２が行っても良い。また、サーバー２は未レンダリングの印刷対象をプリンター３に通知し、プリンター３が印刷対象をレンダリングして印刷データを生成し、当該印刷データに対して印刷前処理を行ってもよい。したがってサーバー２から送信される印刷データの形式も上記実施形態で示した例に限定されない。
【００３７】
なお、上記実施形態においては、コンテンツ情報の送信要求〜受信、および、印刷データの送信要求〜受信は、一続きのＨＴＴＰセッションで行われているが、コンテンツ情報の送信要求〜受信（図３のＳ１１５〜Ｓ１２０）の後にＨＴＴＰセッションを切断し、印刷データの送信要求（図３のＳ１２５）の前に新たにＨＴＴＰセッションを確立するようにして印刷データの送信要求〜受信を行ってもよい。
【符号の説明】
【００３８】
１：通信端末、２：サーバー、３：プリンター、４：インターネット、３１：コントローラー、３２：受信バッファー、３３：処理バッファー、３４：通信部、３５：印刷部
【図１】
0005899712.tif 000002
【図２】
0005899712.tif 000003
【図３】
0005899712.tif 000004
【図４】
0005899712.tif 000005
【図５】
0005899712.tif 000006