説明

印刷装置、印刷方法

【課題】印刷データの取得途中で印刷装置とサーバーとの間でセッションが切断され、その後再接続された場合に、効率的に印刷を再開することができる印刷装置を提供する。
【解決手段】サーバーに対して印刷データの送信要求を行う要求部と、前記送信要求に応じて前記サーバーから送信された前記印刷データを受信する受信部と、受信した前記印刷データを順次処理対象とし、前記処理対象となった前記印刷データに基づいて印刷を行う印刷処理部と、受信した前記印刷データのうち前記印刷処理部による前記処理対象となった前記印刷データのデータ量を計測する計測部と、を備え、前記印刷データの全てが前記処理対象となる前に前記サーバーとのセッションが切断されその後再接続された場合に、前記要求部は、前記セッションの再接続後に前記計測部が計測した前記データ量に基づいて前記印刷データのうちまだ前記処理対象になっていない部分の送信要求を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クラウドコンピューティングシステムにおいてユーザーからサーバー経由で取得した印刷要求に応じて印刷を実行する印刷装置および印刷方法に関する。
【背景技術】
【0002】
従来、電子メールの送信によって特定のプリンターに印刷を実行させることができるサービスを提供するクラウドコンピューティングシステムが知られている(例えば特許文献1)。このクラウドコンピューティングシステム(以下、単に印刷システムという。)は、特定の電子メールを受信すると電子メールに基づいて特定のプリンターに対応した印刷データを生成するサーバーを備え、サーバーに登録されている特定のプリンターはサーバーから印刷データを取得して印刷を実行する。したがって印刷システムの利用者は、PC(Personal Computer)、スマートフォン等の通信端末にプリンタードライバーがインストールされていない場合であっても、印刷システムに登録されているプリンターを利用することが可能になる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−71257号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような印刷システムにおいては、ユーザーが送信した電子メールに基づいてサーバーが印刷データを生成し、プリンターに対して印刷ジョブの存在を通知し、通知を受けたプリンターはサーバーに対して印刷データの送信要求を行って印刷データを取得しながら印刷を実行している。プリンターが搭載しているメモリサイズにはコストの観点から制限があるので、印刷が終了した部分の印刷データについてはメモリから破棄し次に処理すべき部分の印刷データのためにメモリ領域を確保する。このようにプリンターは、印刷データを取得しながら印刷を行うため、印刷データの取得途中でプリンターにおいてエラーが発生した場合、印刷を続行することができないため印刷データをメモリから破棄することができず、やがて後続して送信された印刷データを受信できない状態となる。
【0005】
このような場合、従来はエラーが発生したため印刷を終了するという動作になっておりエラー復帰後の動作について特に考慮されていなかった。プリンターはこれ以上印刷データを受信できないためやがてプリンターとサーバー間のセッションも切断される。エラーが解消された後は、できれば最初から印刷をやり直すよりもエラーによる中断時の続きから印刷を再開できる方が望ましいことを考えると、セッションはエラー発生後も維持されている方が好都合であるが、プリンターにおけるエラーが発生後即座に解消される保証はなく場合によっては長時間エラーによる印刷中断の状態のまま放置されることも考えられる。エラーが解消され印刷可能となるまでの期間もセッションを維持し続けることはサーバーに負荷がかかるので、セッションを維持し続けることは難しい。前述のように従来はエラー復帰後の動作について考慮されていないので、エラー解消後に再度印刷する場合は、もう一度印刷ジョブの最初から印刷が実行される。その場合、インクや印刷媒体等の消耗品や、印刷に要する時間を無用に消費してしまうことになる。
本発明は、印刷データの取得途中で印刷装置とサーバーとの間でセッションが切断され、その後再接続された場合に、効率的に印刷を再開することができる印刷装置の提供を目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するための印刷装置は、要求部と、受信部と、印刷処理部と、計測部とを備える。要求部は、サーバーに対して印刷データの送信要求を行う。受信部は、サーバーから送信要求に応じて送信された印刷データを受信する。印刷処理部は、受信部が受信した印刷データを順次処理対象とし、処理対象にした印刷データに基づいて印刷を行う。計測部は、受信した印刷データのうち印刷処理部による処理対象となった印刷データのデータ量を計測する。すなわち、送信要求した印刷データであって、所定サイズずつ順に受信する印刷データが順次印刷処理部の処理対象となるたびにその累積のデータ量(サイズ)を計測する。
【0007】
本発明の印刷装置において、サーバーに要求した印刷データの全てが印刷処理部の処理対象となる前にサーバーとのセッションが切断されその後再接続された場合、要求部は、サーバーとのセッションの再接続後に計測部で計測されたデータ量に基づいて印刷データのうちのまだ前記処理対象になっていない部分の送信要求を行う。すなわち要求部は、セッション再接続後に、既に印刷処理部の処理対象となった部分の送信要求は行わず、まだ処理対象となっていない部分の送信要求をサーバーに対して行う。そのため、既に印刷済みの部分や印刷を実行するために印刷装置に適した形式に印刷データを変換する印刷前処理中の部分の印刷データに対して再度印刷を実行することを防止できる。すなわち、セッションの切断・再接続を経ても印刷中断時の続きから印刷を再開することができるため、インクや印刷媒体などの消耗品が無用に消費されることを防止できる。また、続きから印刷再開するため、再度最初から印刷する場合と比較して、印刷完了までに要する時間を短縮することができる。
【0008】
さらに、上記目的を達成するための印刷装置において、印刷処理部は、セッションの再接続後に受信した印刷データがまだ印刷処理部の処理対象となっていない部分である場合には、当該部分の印刷データを処理対象とし、セッションの再接続後に受信した印刷データが既に処理対象となった部分とまだ処理対象になっていない部分とを含む場合には、受信した印刷データから計測部で計測したデータ量に基づいてまだ処理対象になっていない部分の印刷データを抽出して処理対象としてもよい。
【0009】
すなわちサーバー側が、印刷装置からの印刷データの部分的な送信要求機能に対応している場合は、印刷装置が要求した通りまだ処理対象になっていない部分の印刷データがサーバーから送信されるので当該印刷データを処理対象とする。一方、サーバーが部分的な送信要求機能に対応していない場合は、サーバーからは既に処理対象となった部分もまだなっていない部分も含めて印刷データ全体が送信されることになる。その場合も本発明の印刷装置によると、まだ処理対象となっていない部分の印刷データを抽出して印刷処理部の処理対象とすることができる。そのため、部分的な送信要求にサーバーが対応しているか否かに関わらず、印刷装置側では、印刷中断時の続きから印刷を再開することができるため、インクや印刷媒体などの消耗品が無用に消費されることを防止できる。また、続きから印刷再開するため、再度最初から印刷する場合と比較して、印刷に要する時間も短縮することができる。
【0010】
さらに、上記目的を達成するための印刷装置において、受信部は、受信した印刷データを第一記憶部に記憶させてもよい。その場合に印刷処理部は、第二記憶部に記憶されている印刷データを処理対象として印刷前処理を行い、印刷前処理後のデータに基づいて印刷を行ってもよい。またその場合に計測部は、第一記憶部から第二記憶部に転送された印刷データのデータ量を計測してもよい。
印刷装置が、サーバーから受信した印刷データを一旦記憶する第一記憶部と、印刷前処理のための印刷データの記憶領域である第二記憶部と、を備える構成である場合、印刷前処理を行うために印刷データを第一記憶部から第二記憶部に移すという処理が必要である。その処理と同期して第一記憶部から第二記憶部に移された印刷データのデータ量を計測することで、「印刷処理部による処理対象となった印刷データのデータ量」の計測を実現することができる。
【0011】
さらに、上記目的を達成するための印刷装置において、要求部は、まだ印刷処理部の処理対象になっていない部分の印刷データの送信要求を、HTTPのrangeヘッダーを用いて範囲指定することで行ってもよい。
HTTPのrangeヘッダーを用いることで、印刷データの部分的な送信要求を実現することができる。
【0012】
なお、請求項に記載された各手段の機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら各手段の機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。さらに、本発明は方法としても、コンピュータープログラムとしても、そのプログラムの記録媒体としても成立する。むろん、そのコンピュータープログラムの記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体であってもよい。
【図面の簡単な説明】
【0013】
【図1】第一実施形態にかかる印刷装置のブロック図。
【図2】第一実施形態にかかるバッファーの構成例を示す模式図。
【図3】第一実施形態にかかる印刷シーケンスのシーケンスチャート。
【図4】第一実施形態にかかる印刷データの各部の状態を説明する模式図。
【図5】他の実施形態にかかる印刷データの各部の状態を説明する模式図。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態を添付図面を参照しながら説明する。尚、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
1.第一実施形態
1−1.構成
図1は、本実施形態におけるプリンター(印刷装置)3を含む印刷システム全体の構成を示すブロック図である。図1に示す印刷システムは、サーバー2に登録されたプリンター3に対応付けられた電子メールアドレスを宛先とする電子メールを任意の通信端末1から送信すると、宛先の電子メールアドレスに対応付けられたプリンター3において電子メールの添付ファイルや本文が印刷される機能を実現する。サーバー2は1以上のコンピューターによって構成される。サーバー2、プリンター3、通信端末1はインターネット4に接続される。
【0015】
プリンター3は、サーバー2とのXMPP(Extensible Messaging and Presence Protocol)を用いた常時接続によってサーバー2から印刷ジョブ有り通知を通知されると、HTTP(Hyper Text Transfer Protocol)を用いて印刷データをサーバー2から取得し、印刷を実行する機能を有する。したがってプリンター3は、CPU、ROM、RAM等を備えたコントローラー31、印刷部35等の通常のプリンターの構成要素に加えて、インターネット4を介して各種のデータを送受信するための通信部34を備えている。通信部34はインターネット4からLANを経由して受信する信号をプロトコルに従って変換して内部バスに送出し、内部バスから取り込んだ信号をプロトコルに従って変換してLANを経由してインターネットに送出する。コントローラー31のROMにはRAMに読み込まれCPUによって実行される通信プログラムや印刷プログラムなどの種々のコンピュータープログラムが記憶されている。これらのコンピュータープログラムをCPUが実行することによって、プリンター3の各種の機能が実現される。
【0016】
通信プログラムは、サーバー2とTCP/IP、HTTP、XMPP等の通信プロトコルに従った通信を行うためのプログラムである。なお、HTTPやXMPPを用いてサーバー2と接続するために必要な情報は予めコントローラー31は取得済みである。受信バッファー32(第一記憶部に相当)は、通信プログラムを実行するコントローラー31が通信部34を介して外部から受信したデータを記憶するメモリであり、印刷データやなど様々なデータが一旦格納されるメモリである。通信プログラムを実行するコントローラー31および通信部34は、印刷データの送信要求をサーバー2に対して行う「要求部」に相当する。また、通信プログラムを実行するコントローラー31と通信部34と受信バッファー32とは、サーバー2から送信された印刷データを受信する「受信部」に相当する。
【0017】
印刷プログラムは、受信バッファー32に記憶されている印刷データを読み出して処理バッファー33(第二記憶部に相当)に転送し、印刷前処理を施してプリンター3における印刷に適した形式のデータに印刷データを変換し、変換後のデータに基づいて印刷部35を制御して印刷を行う機能を有するプログラムである。印刷プログラムを実行するコントローラー31と、印刷部35と処理バッファー33とは「印刷処理部」に相当する。本実施形態においては、サーバー2が生成しプリンター3に送信する印刷データは、画素値がRGB形式で表現されたデータである。その場合、印刷前処理は、そのような形式の印刷データに対して施す、解像度変換処理や、色変換処理(プリンター3に搭載されたインクごとの階調値に変換する処理)や、ハーフトーン処理や、並べ替え処理等を指す。処理バッファー33は、受信バッファー32に記憶された様々なデータの中から抽出され読み出された印刷データに対して前述の印刷前処理を施す際に処理前や処理過程や処理後のデータを記憶するためのメモリである。印刷前処理に含まれる前述の各処理のデータ受け渡しのためにそれぞれ設けられたバッファーメモリをまとめて処理バッファー33と呼ぶ。
【0018】
図2は各バッファーについて説明するための模式図である。図2に示すように例えば本実施形態では処理バッファー33は、受信バッファー32から読み出した解像度変換処理前の印刷データを記憶する第一の処理バッファー331と、解像度変換後のデータであり色変換処理前のデータを記憶する第二の処理バッファー332と、色変換処理後のデータであってハーフトーン処理前のデータを記憶する第三の処理バッファー333と、ハーフトーン処理後のデータであって並べ替え処理前のデータを記憶する第四の処理バッファー334と、並べ替え処理後のデータを記憶する第五の処理バッファー335とを含んでいる。第五の処理バッファー335に記憶されたデータは印刷部35による印刷に用いられる。印刷処理プログラムを実行するコントローラー31が、受信バッファー32に記憶されている印刷データを受信バッファー32から読み出し、処理バッファー33(第一の処理バッファー331)に転送することで、「印刷処理部」による「処理対象」となる。受信バッファー32から読み出され、処理バッファー33(第一の処理バッファー331)に転送された印刷データは、受信バッファー32からは破棄され、受信する新たなデータのための格納場所に当てられる。印刷プログラムは受信バッファー32から処理バッファー33に印刷データを転送するごとに、転送された印刷データの累積のデータ量をサイズnとして計測する計測機能を有している。したがって印刷プログラムを実行するコントローラー31は「計測部」に相当する。
【0019】
コントローラー31は、第一の処理バッファー331に記憶されている印刷データに対する解像度変換処理を終了すると処理後のデータを第二の処理バッファー332に書き込み、当該印刷データを第一の処理バッファー331から破棄する。そして、後続の印刷データを受信バッファー32から読み出し第一の処理バッファー331に転送する。第二の処理バッファー332〜第五の処理バッファー335についても同様にコントローラー31は、前段のバッファーからデータを読み出して処理し後段のバッファーに書込みが終了すると前段のバッファーからはデータを破棄し後続のデータを前段のバッファーに転送可能な状態とする。印刷部35は、インクジェット方式、レーザー方式など周知の印刷方式で写真用紙、普通紙、OHPシートなどの印刷媒体に印刷を実行するためのアクチュエーターやセンサーや駆動回路や機械部品を備えている。印刷部35によって印刷が完了した部分に相当する印刷データは処理バッファー33(第五の処理バッファー335)から破棄される。
【0020】
1−2.印刷シーケンス
図1に示す印刷システムにおいては、通信端末1からプリンター3に対応付けられた電子メールアドレス宛の電子メールが添付ファイルとともに送信されたとき、プリンター3において添付ファイルの印刷が即座に実行されることが望まれる。また、プリンター3が印刷要求を即時に取得するためにサーバー2をHTTPに基づいたメッセージを使ってポーリングすることはサーバー2の負荷とネットワークトラフィックの観点から望ましくない。そこで、プリンター3はXMPPに基づいた印刷ジョブ有り通知をサーバー2から受信する。XMPPは、双方向にメッセージを送信できる所謂プッシュ型のプロトコルであるため、プリンター3によるサーバー2のポーリングは不要となる。プリンター3の電源がオン状態のとき、通信エラーやその他のエラーが特に発生していなければ、サーバー2とプリンター3とは、XMPP接続が常時確立された状態である。
【0021】
図3は、本実施形態における印刷シーケンスのシーケンスチャートであって、さらに詳細には、一つの印刷ジョブに含まれる印刷データをプリンター3が全て取得して処理バッファー33に転送する前にプリンター3にエラーが発生する場合のシーケンスチャートである。なお、図3のシーケンスチャートでは、発明の要部を明確にするため、セッションの確立や切断のシーケンスの詳細や、各通信に応答するACKパケットやFINパケット等の記載を発明に関連する部分を除いて省略している。
【0022】
はじめに、プリンター3に対応付けられた電子メールアドレス宛に通信端末1から送信された電子メールをサーバー2が受信する(S100)と、電子メールに基づいて添付ファイルなどの印刷対象をレンダリングして印刷データを生成し、XMPPを用いてサーバー2は印刷ジョブ有り通知をプリンター3に送信する(S105)。通信部34はサーバー2からXMPPで送信された印刷ジョブ有り通知を受信すると、サーバー2とHTTPセッションを確立し(S110)、HTTPのgetリクエストでコンテンツ情報の送信要求をサーバー2に送信する(S115)。プリンター3から送信されたコンテンツ情報送信要求を受信したサーバー2は、印刷ジョブのコンテンツ情報をプリンター3に送信する(S120)。ここでコンテンツ情報には、印刷データのダウンロード先URIや、印刷データのドキュメントフォーマット等の印刷ジョブに含まれる印刷データに関する情報が含まれている。コンテンツ情報は通信部34を経て受信バッファー32に記憶される。コントローラー31は受信バッファー32に記憶されているデータを解析しコンテンツ情報を取得する。コンテンツ情報取得後はコントローラー31はコンテンツ情報を受信バッファー32から破棄する。
【0023】
続いてコントローラー31は、HTTPのgetリクエストで印刷データの送信要求をサーバー2に送信する(S125)。印刷データのダウンロード先URIはS120でプリンター3が取得したコンテンツ情報に含まれている。なおS125においては、S105で通知された印刷ジョブに含まれる印刷データ全体を対象とした送信要求を行う。サーバー2はプリンター3からの印刷データ送信要求を受けて、HTTPを用いて印刷データを先頭から所定サイズずつプリンター3に送信する(S130)。S130で送信される印刷データは、S125のgetリクエストに対応する応答メッセージの中に含まれた形でプリンター3に送信される。応答メッセージに含まれるHTTPヘッダーには、プリンター3に送信する印刷データ全体のサイズ(サイズM)を示す情報が含まれている(Content-Lengthヘッダー)。
【0024】
サーバー2から送信された印刷データは通信部34や通信プログラムを実行するコントローラー31により、受信バッファー32に格納される。前述の印刷データ全体のサイズMも受信バッファー32に格納される。コントローラー31は、受信バッファー32内のデータを解析してサイズMを取得して記憶する。このサイズMの記憶は、コントローラー31により印刷データの印刷完了に応じて消去される。続いてコントローラー31は、受信バッファー32に格納されている印刷データを処理バッファー33(第一の処理バッファー331)に空きがあれば処理バッファー33(第一の処理バッファー331)に転送するとともに、転送した累積の印刷データのデータ量(サイズn)を計測する。また処理バッファー33に転送済みの印刷データは受信バッファー32から破棄される。データ量(サイズn)は1印刷ジョブごとに計測される(一つの印刷ジョブの印刷が終了するとサイズnの値はリセットされる)。コントローラー31は、処理バッファー33に転送した印刷データを対象に印刷前処理を施す。そして、印刷前処理を施されたデータに基づいてコントローラー31は印刷部35を制御して印刷を実行する。印刷が完了した部分に相当する処理バッファー33内のデータは破棄される。
【0025】
コントローラー31が、印刷データの受信、印刷データの受信バッファー32から処理バッファー33への転送、転送されたデータ量の計測、印刷前処理、印刷実行の工程を繰り返している途中で、プリンター3においてエラーが発生した場合のシーケンスについて以降で説明する。この場合のエラーは例えば、印刷用紙切れやインク切れなど比較的経度でユーザーがエラーを解消後に印刷を続きから再開しても問題が生じない種類のエラーが想定される。プリンター3におけるエラーが発生すると、プリンター3では印刷を続行できないため、コントローラー31は印刷動作を中断する。また、コントローラー31は処理バッファー33内のデータを印刷再開に備えて破棄せずに残す。処理バッファー33内に空きが生じないため、コントローラー31は受信バッファー32内の印刷データを処理バッファー33に転送しない。そのため受信バッファー32は、サーバー2から続々と受信した印刷データであってまだ印刷前処理の処理対象でない印刷データを含むデータで満たされ、後続の印刷データを受信できない状態となる。
【0026】
この状態をサーバー2に通知するため、コントローラー31は、S130のサーバー2からの印刷データの送信に対応するACKパケットにおいてウィンドウサイズを「0」と設定してサーバー2に送信する(S135)。この状態をゼロウィンドウ状態と呼ぶ。サーバー2は、所定の期間(例えば5分間)、ゼロウィンドウ状態が継続していると判断すると、HTTPセッションを切断するためのデータを送信する(S140)。具体的には例えば、サーバー2はRST(Reset)パケットをプリンター3に送信する。この結果、プリンター3とサーバー2との間のセッションは切断される。セッションが切断されると、コントローラー31は受信バッファー32に格納されていた印刷データを破棄する。
【0027】
エラーが解消され印刷の再開が可能となる時期は未定であり、当該時期までHTTPセッションを維持し続けることは、サーバー2に負荷を与える。具体的には、セッションごとに確保しておくメモリ領域を長期間解放できない状態となり、その結果、他の通信端末から送信された電子メールを受信してから印刷を実行するまでの時間が遅延する。この遅延を防止するために、サーバー2とプリンター3との間のセッションが一旦切断されるのである。
【0028】
コントローラー31がプリンター3におけるエラーが解消されたことを検出すると、コントローラー31は、処理バッファー33に蓄えられている印刷データを用いて印刷前処理や印刷を再開する。また、コントローラー31はエラーの解消の検出に応じて、再びサーバー2とのHTTPセッションを確立し(S145)、サーバー2に印刷データ送信要求を送信する(S150)。S150における印刷データの送信要求、すなわちエラー解消後に行う印刷データの送信要求の場合、コントローラー31は、エラーが発生した時点の印刷データのダウンロード先URIと、処理バッファー33に転送済みのデータ量(サイズn)の値に基づいて既に印刷前処理の処理対象となった印刷データを除く残りの印刷データの部分を示す範囲と、を指定して、送信要求を行う。サーバー2から受信して受信バッファー32に記憶されていた印刷データはセッションの切断にともなって破棄されているので、受信バッファー32に記憶されていた部分の印刷データも再取得の対象とする。具体的にはコントローラー31は、印刷データ全体のサイズMとサイズnとを比較しサイズM>サイズn>0であれば、印刷データの先頭からサイズn分のデータに後続する位置から、印刷データの末尾(サイズMの位置)までの(サイズM−サイズn)分の印刷データを範囲指定する。範囲指定には、HTTPのrangeヘッダーを用いる。
【0029】
図4は、一つの印刷ジョブに含まれる印刷データを示す模式図であり、プリンター3におけるエラーが発生した時点の印刷データの状態の一例を説明するための模式図である。この例では、印刷データをその先頭から4つの部分に分け、先頭に近い順からd1、d2、d3、d4と呼ぶ。印刷データはその先頭から順にサーバー2から送信され、順に受信バッファー32に記憶され、処理バッファー33に転送されて印刷前処理を施され、印刷され、破棄される。エラーが発生したとき、印刷データのうち先頭から所定サイズ分の印刷データd1は既に印刷済みで処理バッファー33から破棄されているデータであり、印刷データd1に後続する印刷データd2は処理バッファー33に転送され印刷前処理中のデータおよび印刷中のデータであり、印刷データd2に後続する印刷データd3は受信バッファー32に格納されている状態でまだ処理バッファー33には転送されていない状態のデータであるとする。印刷データd3に後続する印刷データd4についてはプリンター3にまだ受信されていないデータであるとする。この状態の時点でエラーが発生した場合、コントローラー31は印刷データd3と印刷データd4の部分をS150における印刷データの送信要求において指定する範囲とする。よって、エラーが解消した後、印刷データd2はそのまま印刷前処理や印刷が再開され、印刷が終了した後に処理バッファー33から破棄される。また、印刷データd3および印刷データd4は、サーバー2からプリンター3に送信され、印刷前処理と印刷とが行われる。
【0030】
サーバー2は要求された部分の印刷データをプリンター3に送信する(S155)。プリンター3のコントローラー31は印刷データを受信し受信バッファー32に格納すると、上述と同様に、処理バッファー33に転送し印刷前処理を施して印刷を実行する。一つの印刷ジョブに対応する印刷が完了すると、印刷ジョブステータスとして印刷終了をサーバー2に通知し(S160)、他にプリンター3に対する印刷ジョブが存在しなければサーバー2はプリンター3とのセッションを切断する(S165)。なお、印刷を再開した後に再びエラーが生じた場合には、S135と同様にサーバー2からの印刷データの送信に対応するACKパケットにおいてウィンドウサイズを「0」と設定してサーバー2に送信し、S140以降の動作が繰り返される。
【0031】
以上説明したように、本実施形態によると、印刷データの処理バッファー33への転送が終了していない状態でサーバー2とのセッションが切断された場合、セッション再接続後に、処理バッファー33に既に転送済みで印刷前処理の処理対象となっている(処理中あるいは処理済みの)印刷データの送信要求は行わず、処理バッファー33にまだ転送されておらず印刷前処理の処理対象にまだなっていない印刷データの送信要求をサーバーに対して行う。そのため、既に印刷済みの部分や印刷前処理中の部分の印刷データに対して再度印刷前処理を行って印刷を実行することを防止できる。その結果、印刷中断時の続きから印刷を再開することができるため、インクや印刷媒体などの消耗品が無用に消費されることを防止できる。また、続きから印刷再開するため、再度最初から印刷する場合と比較して、印刷に要する時間も短縮することができる。
【0032】
2.他の実施形態
尚、本発明の技術的範囲は、上述した実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば上記実施形態では、サーバー2がHTTPのrangeヘッダーによる範囲指定に対応しており、プリンター3からの要求された範囲指定通りの印刷データをプリンター3に送信する例を示したが、サーバー2がrangeヘッダーによる範囲指定に対応していない場合もありえる。その場合は、第一実施形態で説明した図3のS150においてプリンター3は第一実施形態と同様に範囲指定をした印刷データ送信要求を行うが、サーバー2は対応していないことを示す情報をプリンター3にHTTPステータスコードとして通知した上で印刷ジョブに含まれる印刷データ全体を送信する。ステータスコードとしては、範囲指定に応じた部分の印刷データを送信する場合は"206"、範囲指定に対応せずに印刷データ全体を送信する場合は"200"がサーバー2から通知される。コントローラー31は、サーバー2から送信された印刷データを上述と同様に受信バッファー32に格納する。コントローラー31は範囲指定した送信要求に対してサーバー2から通知されたステータスコードについて判別を行い、ステータスコードが範囲指定に応じた部分の印刷データを送信することを示している場合、すなわちステータスコードが"206"である場合、上述の実施形態のS155と同様の動作が行われる。一方、ステータスコードが、範囲指定に対応せずに印刷データ全体を送信することを示している場合、すなわちステータスコードが"200"である場合、コントローラー31は、受信バッファー32に格納された印刷データの先頭から、計測しておいたデータ量(サイズn)分(既に印刷前処理の処理対象となった分)の印刷データを処理バッファー33には転送せずに破棄する。そしてコントローラー31は、まだ印刷前処理の対象として処理バッファー33に転送されていない印刷データを、処理バッファー33に空きが出来た後に転送し、印刷前処理の処理対象とする。なおこのときコントローラー31は、転送した分のデータ量をカウントする。
【0033】
図4を用いて説明すると、コントローラー31は、先頭からサイズn分の印刷データを受信バッファー32から破棄して処理バッファー33には転送しない。印刷データd3以降の印刷データを受信バッファー32に受信してからは、印刷データd3以降印刷データの末尾までの印刷データを順に処理バッファー33に転送する。このようにすることで、サーバー2がrangeヘッダーによる範囲指定に対応していない場合も、エラー復帰後にエラー発生時の続きから印刷を再開することができる。
【0034】
また、上記実施形態においては、受信バッファー32から処理バッファー33に印刷データを転送する際に転送済み印刷データの累積データ量をカウントする例を説明したが(図2参照)、受信バッファー32に印刷データが格納された時点で「印刷処理部」の処理対象となったとして、受信バッファー32に印刷データを格納した時点で格納済み印刷データの累積データ量をカウントしてもよい。この場合、通信プログラムを実行するコントローラー31と通信部34とが「受信部」に相当し、印刷プログラムを実行するコントローラー31と受信バッファー32と処理バッファー33とが「印刷処理部」に相当する。図5はこの場合の印刷データの状態を説明するための模式図である。図5を参照して説明すると、この場合サイズnはd1とd2とd3を合わせたサイズに相当する。そして、図5に示す状態のときにエラーが発生した場合、再接続後に、範囲指定して印刷データを要求する場合は印刷データd4の部分を指定する。サーバー2から印刷データ全体が送信された場合は、d1〜d3の部分を一旦受信バッファー32に格納した後受信バッファー32から破棄して受信バッファー32にd4の部分を順次格納する。なお、この変形例の場合、S140でセッションが切断されてもコントローラー31は受信バッファー32内の印刷データd3を破棄しない。
【0035】
また、エラー発生時に処理バッファー33に存在していたデータ(図4や図5の印刷データd2)については、エラー解消前に印刷前処理を完了させて最終段の処理バッファー33である第五の処理バッファー335に記憶させておいてもよい。この場合、エラー解消後にこの印刷データd2に対する印刷前処理を行わずに印刷を行うことができるため、印刷時間の短縮に貢献することができる。なお、エラー発生時に処理バッファー33に存在していたデータ(図4や図5の印刷データd2)に対する印刷前処理や印刷の再開は、サーバー2から後続の印刷データ(図4や図5の印刷データd3)が送られてきてからであってもよい。
【0036】
また、上記実施形態で説明したバッファーの構成(図2)はあくまでも一例であってこれに限定されるものではない。また、上記実施形態で示した印刷前処理の一部または全てをサーバー2が行っても良い。また、サーバー2は未レンダリングの印刷対象をプリンター3に通知し、プリンター3が印刷対象をレンダリングして印刷データを生成し、当該印刷データに対して印刷前処理を行ってもよい。したがってサーバー2から送信される印刷データの形式も上記実施形態で示した例に限定されない。
【0037】
なお、上記実施形態においては、コンテンツ情報の送信要求〜受信、および、印刷データの送信要求〜受信は、一続きのHTTPセッションで行われているが、コンテンツ情報の送信要求〜受信(図3のS115〜S120)の後にHTTPセッションを切断し、印刷データの送信要求(図3のS125)の前に新たにHTTPセッションを確立するようにして印刷データの送信要求〜受信を行ってもよい。
【符号の説明】
【0038】
1:通信端末、2:サーバー、3:プリンター、4:インターネット、31:コントローラー、32:受信バッファー、33:処理バッファー、34:通信部、35:印刷部

【特許請求の範囲】
【請求項1】
サーバーに対して印刷データの送信要求を行う要求部と、
前記送信要求に応じて前記サーバーから送信された前記印刷データを受信する受信部と、
受信した前記印刷データを順次処理対象とし、前記処理対象となった前記印刷データに基づいて印刷を行う印刷処理部と、
受信した前記印刷データのうち前記印刷処理部による前記処理対象となった前記印刷データのデータ量を計測する計測部と、
を備え、
前記印刷データの全てが前記処理対象となる前に前記サーバーとのセッションが切断されその後再接続された場合に、前記要求部は、前記セッションの再接続後に前記計測部が計測した前記データ量に基づいて前記印刷データのうちまだ前記処理対象になっていない部分の送信要求を行う、
印刷装置。
【請求項2】
前記印刷処理部は、前記セッションの再接続後に受信した前記印刷データがまだ前記処理対象となっていない部分である場合には、当該部分を前記処理対象とし、前記セッションの再接続後に受信した前記印刷データが既に前記処理対象となった部分とまだ前記処理対象になっていない部分とを含む場合には、受信した前記印刷データから前記計測部が計測した前記データ量に基づいてまだ前記処理対象になっていない部分を抽出して前記処理対象とする、
請求項1に記載の印刷装置。
【請求項3】
前記受信部は、受信した前記印刷データを第一記憶部に記憶させ、
前記印刷処理部は、第二記憶部に記憶されている前記印刷データを前記処理対象として印刷前処理を行い、前記印刷前処理後のデータに基づいて印刷を行い、
前記計測部は、前記第一記憶部から前記第二記憶部に転送された前記印刷データの前記データ量を計測する、
請求項1または請求項2のいずれかに記載の印刷装置。
【請求項4】
前記要求部は、まだ前記処理対象になっていない部分の送信要求を、HTTPのrangeヘッダーを用いて範囲指定することで行う、
請求項1〜請求項3のいずれかに記載の印刷装置。
【請求項5】
サーバーに対して印刷データの送信要求を行う要求工程と、
前記送信要求に応じて前記サーバーから送信された前記印刷データを受信する受信工程と、
受信した前記印刷データを順次処理対象とし、前記処理対象となった前記印刷データに基づいて印刷を行う印刷処理工程と、
受信した前記印刷データのうち前記処理対象となった前記印刷データのデータ量を計測する計測工程と、
を含み、
前記印刷データの全てが前記処理対象となる前に前記サーバーとのセッションが切断されその後再接続された場合に、前記要求工程においては、前記セッションの再接続後に前記計測工程にて計測した前記データ量に基づいて前記印刷データのうちまだ前記処理対象になっていない部分の送信要求を行う、
印刷方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2013−49203(P2013−49203A)
【公開日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願番号】特願2011−188625(P2011−188625)
【出願日】平成23年8月31日(2011.8.31)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】