JP2020138391A - プリンタ、及び、プリンタのためのコンピュータプログラム - Google Patents
プリンタ、及び、プリンタのためのコンピュータプログラム Download PDFInfo
- Publication number
- JP2020138391A JP2020138391A JP2019034549A JP2019034549A JP2020138391A JP 2020138391 A JP2020138391 A JP 2020138391A JP 2019034549 A JP2019034549 A JP 2019034549A JP 2019034549 A JP2019034549 A JP 2019034549A JP 2020138391 A JP2020138391 A JP 2020138391A
- Authority
- JP
- Japan
- Prior art keywords
- data
- printer
- server
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
- Record Information Processing For Printing (AREA)
Abstract
【課題】 プリンタが、対象画像を表わす画像データを利用した印刷データの生成に失敗しても、対象画像の印刷を実行することができる技術を開示すること。【解決手段】 プリンタは、サーバから、対象画像を表わす第1の画像データであって、第1のデータフォーマットを有する第1の画像データを受信し、サーバから、対象画像を表わす第2の画像データであって、第2のデータフォーマットを有する第2の画像データを受信し、第1の画像データを利用して第1の印刷データを生成することを試行し、第1の印刷データの生成に成功する場合に、第1の印刷データを利用して印刷し、第1の画像データが特定情報を含むことに起因して第1の印刷データの生成に失敗する場合に、特定情報を含まない第2の画像データを利用して第2の印刷データを生成し、第1の印刷データの生成に失敗する場合に、第2の印刷データを利用して印刷する。【選択図】図9
Description
本明細書では、サーバから受信される画像データによって表わされる対象画像の印刷を実行するプリンタに関する技術を開示する。
特許文献1には、端末装置と記憶サーバとPDL(Page Description Languageの略)プリンタとBMI(Bitmap Imageの略)プリンタとを備えるシステムが開示されている。端末装置は、PDL形式を有する印刷データを含むPDLジョブと、BMI形式を有する印刷データを含むBMIジョブと、を生成して、これらのジョブを記憶サーバに記憶させる。例えば、ユーザが端末装置においてPDLジョブ及びBMIジョブのうちのPDLジョブを選択すると、選択済みのPDLジョブが記憶サーバからPDLプリンタに送信され、PDLプリンタによって印刷が実行される。
上記の特許文献1の技術では、PDLプリンタがPDLジョブに従った印刷を実行可能であることが前提となっている。しかしながら、PDLプリンタが、PDLジョブに含まれる情報を解釈不可能である等の理由に起因して、PDLジョブに従った印刷を実行することができない事象が起こり得る。
本明細書では、プリンタが、対象画像を表わす画像データを利用した印刷データの生成に失敗しても、対象画像の印刷を実行することができる技術を開示する。
本明細書によって開示されるプリンタは、印刷実行部と、通信インターフェースと、サーバから、前記通信インターフェースを介して、対象画像を表わす第1の画像データであって、第1のデータフォーマットを有する前記第1の画像データを受信する第1の受信部と、前記サーバから、前記通信インターフェースを介して、前記対象画像を表わす第2の画像データであって、前記第1のデータフォーマットとは異なる第2のデータフォーマットを有する前記第2の画像データを受信する第2の受信部と、前記第1の画像データを利用して、前記対象画像の印刷を前記印刷実行部に実行させるための第1の印刷データを生成することを試行する第1の生成部と、前記第1の印刷データの生成に成功する場合に、生成済みの前記第1の印刷データを利用して、前記対象画像の印刷を前記印刷実行部に実行させる第1の印刷制御部と、前記第1の画像データが特定情報を含むことに起因して前記第1の印刷データの生成に失敗する場合に、前記特定情報を含まない前記第2の画像データを利用して、前記対象画像の印刷を前記印刷実行部に実行させるための第2の印刷データを生成する第2の生成部と、前記第1の印刷データの生成に失敗する場合に、生成済みの前記第2の印刷データを利用して、前記対象画像の印刷を前記印刷実行部に実行させる第2の印刷制御部と、を備えてもよい。
上記の構成によると、プリンタは、対象画像を表わす第1の画像データが特定情報を含むことに起因して第1の印刷データの生成に失敗する場合に、同じ対象画像を表わすと共に特定情報を含まない第2の画像データを利用して第2の印刷データを生成し、第2の印刷データを利用して対象画像の印刷を実行する。従って、プリンタは、対象画像を表わす第1の画像データを利用した第1の印刷データの生成に失敗しても、第2の印刷データを利用して対象画像の印刷を実行することができる。
上記のプリンタによって実行される方法、上記のプリンタを実現するためのコンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も、新規で有用である。また、上記のプリンタと上記のサーバとを備えるシステムも、新規で有用である。
(通信システム2の構成;図1)
図1に示すように、通信システム2は、プリンタ10とPC90とGCP(Google(登録商標) Cloud Printの略)サーバ100とを備える。プリンタ10及びPC90は、LAN6を介して、インターネット4に接続されている。GCPサーバ100は、インターネット4に接続されている。従って、プリンタ10及びPC90は、インターネット4を介して、GCPサーバ100と通信可能である。以下では、GCPサーバ100のことを単に「サーバ100」と記載する。
図1に示すように、通信システム2は、プリンタ10とPC90とGCP(Google(登録商標) Cloud Printの略)サーバ100とを備える。プリンタ10及びPC90は、LAN6を介して、インターネット4に接続されている。GCPサーバ100は、インターネット4に接続されている。従って、プリンタ10及びPC90は、インターネット4を介して、GCPサーバ100と通信可能である。以下では、GCPサーバ100のことを単に「サーバ100」と記載する。
(プリンタ10の構成)
プリンタ10は、印刷機能を実行可能な周辺装置(即ちPC90等の周辺装置)である。なお、プリンタ10は、印刷機能に加えて、スキャン機能、コピー機能、ファクシミリ機能等を実行可能な多機能機であってもよい。プリンタ10には、プリンタ名「pr1」が割当てられている。プリンタ10は、操作部12と、表示部14と、ネットワークインターフェース(以下ではインターフェースを「I/F」と記載する)16と、印刷実行部18と、制御部30と、を備える。
プリンタ10は、印刷機能を実行可能な周辺装置(即ちPC90等の周辺装置)である。なお、プリンタ10は、印刷機能に加えて、スキャン機能、コピー機能、ファクシミリ機能等を実行可能な多機能機であってもよい。プリンタ10には、プリンタ名「pr1」が割当てられている。プリンタ10は、操作部12と、表示部14と、ネットワークインターフェース(以下ではインターフェースを「I/F」と記載する)16と、印刷実行部18と、制御部30と、を備える。
操作部12は、複数のキーを備える。ユーザは、操作部12を操作することによって、様々な指示をプリンタ10に入力することができる。表示部14は、様々な情報を表示するためのディスプレイである。表示部14は、いわゆるタッチパネル(即ち操作部)として機能してもよい。ネットワークI/F16は、LAN6に接続されている。ネットワークI/F16は、無線I/Fであってもよいし、有線I/Fであってもよい。印刷実行部18は、インクジェット方式、レーザ方式等の印刷機構を備える。
制御部30は、CPU32とメモリ34とを備える。CPU32は、メモリ34に記憶されているプログラム36に従って、様々な処理を実行する。メモリ34は、揮発性メモリ、不揮発性メモリ等によって構成される。メモリ34は、さらに、能力情報CI1を記憶する。能力情報CI1は、プリンタ10が解釈可能なデータフォーマットを示す情報を含む。本実施例では、プリンタ10が解釈可能なデータフォーマットは、PDF(Portable Document Formatの略)及びPWG(Printer Working Groupの略)ラスタである。
(PC90の構成)
PC90は、本実施例では、据置型の端末装置(例えばデスクトップPC等)であるが、変形例では、ノートPC、タブレットPC、スマートフォン、PDA等の可搬型の端末装置であってもよい。PC90は、プリンタ10に印刷を実行させるためのプリンタドライバを備えていない。また、PC90は、例えば、Google Chrome(登録商標)等のブラウザプログラム(図示省略)を備える。
PC90は、本実施例では、据置型の端末装置(例えばデスクトップPC等)であるが、変形例では、ノートPC、タブレットPC、スマートフォン、PDA等の可搬型の端末装置であってもよい。PC90は、プリンタ10に印刷を実行させるためのプリンタドライバを備えていない。また、PC90は、例えば、Google Chrome(登録商標)等のブラウザプログラム(図示省略)を備える。
(サーバ100の構成)
サーバ100は、Google(登録商標)によってインターネット上に設置されるサーバである。サーバ100は、プリンタ10とPC90との間で印刷の仲介を実行するためのサーバである。即ち、サーバ100は、PC90からサブミットされる画像ファイルを変換して、プリンタ10が解釈可能なデータフォーマットを有する画像データを生成し、当該画像データをプリンタ10に送信する。従って、PC90は、画像ファイルを変換するためのプリンタドライバを備えていなくても、画像ファイルをサーバ100にサブミットすれば、プリンタ10に印刷を実行させることができる。
サーバ100は、Google(登録商標)によってインターネット上に設置されるサーバである。サーバ100は、プリンタ10とPC90との間で印刷の仲介を実行するためのサーバである。即ち、サーバ100は、PC90からサブミットされる画像ファイルを変換して、プリンタ10が解釈可能なデータフォーマットを有する画像データを生成し、当該画像データをプリンタ10に送信する。従って、PC90は、画像ファイルを変換するためのプリンタドライバを備えていなくても、画像ファイルをサーバ100にサブミットすれば、プリンタ10に印刷を実行させることができる。
サーバ100は、ネットワークI/F116と、制御部130と、を備える。ネットワークI/F116は、インターネット4に接続されている。制御部130は、CPU132と、メモリ134と、を備える。CPU132は、メモリ134に記憶されているプログラム136に従って、様々な処理を実行する。メモリ134は、さらに、アカウントテーブル138とジョブテーブル140とを記憶する。
アカウントテーブル138では、アカウント情報とプリンタ情報とトークンとが関連付けられる。アカウント情報は、ユーザを識別する情報(例えばGoogle Account)である。プリンタ情報は、当該ユーザによって利用されるプリンタに関係する情報であり、プリンタ名と能力情報とデバイスIDとを含む。デバイスIDは、サーバ100によって生成されるIDである。トークンは、当該プリンタとサーバ100との間の通信で利用される認証情報である。
ジョブテーブル140では、ジョブIDとデバイスIDとチケットURLとデータURLとステータスとが関連付けられる。ジョブIDは、印刷ジョブを識別する情報である。チケットURLは、当該印刷ジョブに対応する印刷条件情報が記憶されるサーバ100内の位置を示すURLである。データURLは、当該印刷ジョブに対応する画像データが記憶されるサーバ100内の位置を示すURLである。図1の例に示されるように、1個のジョブID「job1」に対して2個のデータURL「iURL1」,「iURL2」が関連付けられることがあり得る。ステータスは、当該印刷ジョブのステータスを示す情報である。ステータスは、予め決められている複数個の文字列のいずれに設定される。複数個の文字列は、「IN_PROGRESS」と「STOPPED」と「ABORTED」と「DONE」とを含む。「IN_PROGRESS」は、当該印刷ジョブに従った印刷が現在実行されていることを示す。「STOPPED」は、当該印刷ジョブに従った印刷が中断されていることを示す。「ABORTED」は、当該印刷ジョブに従った印刷が中止されたことを示す。「DONE」は、当該印刷ジョブに従った印刷が完了したことを示す。
(登録プロセス:図2)
続いて、図2を参照して、サーバ100のアカウントテーブル138に情報を登録するための登録プロセスを説明する。図2の初期状態において、サーバ100には、PC90のユーザを識別するアカウント情報AI1が登録済みである。なお、以下では、理解の容易化のために、各デバイスのCPU(例えばプリンタ10のCPU32)が実行する動作を、CPUを主体として記載せずに、各デバイス(例えばプリンタ10)を主体として記載することがある。また、プリンタ10及びサーバ100によって実行される全ての通信は、それぞれ、ネットワークI/F16,116を介して実行される。従って、以下では、「ネットワークI/F16(又は116)を介して」という記載を省略する。また、PC90によって実行される以下の各処理は、ブラウザプログラムに従って実行される。従って、以下では、「ブラウザプログラムに従って」という記載を省略する。
続いて、図2を参照して、サーバ100のアカウントテーブル138に情報を登録するための登録プロセスを説明する。図2の初期状態において、サーバ100には、PC90のユーザを識別するアカウント情報AI1が登録済みである。なお、以下では、理解の容易化のために、各デバイスのCPU(例えばプリンタ10のCPU32)が実行する動作を、CPUを主体として記載せずに、各デバイス(例えばプリンタ10)を主体として記載することがある。また、プリンタ10及びサーバ100によって実行される全ての通信は、それぞれ、ネットワークI/F16,116を介して実行される。従って、以下では、「ネットワークI/F16(又は116)を介して」という記載を省略する。また、PC90によって実行される以下の各処理は、ブラウザプログラムに従って実行される。従って、以下では、「ブラウザプログラムに従って」という記載を省略する。
PC90は、アカウント情報AI1の入力とサーバ100へのログインの指示とをユーザから受け付けると、T10において、アカウント情報AI1を含むログイン要求をサーバ100に送信する。
サーバ100は、T10において、PC90からログイン要求を受信すると、当該ログイン要求に含まれるアカウント情報AI1が登録済みであると判断し、アカウント情報AI1を利用したログイン状態を構築する。
PC90は、アカウントテーブル138に情報を登録するための指示をユーザから受け付けると、T12において、検索選択要求をサーバ100に送信する。
サーバ100は、T12において、PC90から検索選択要求を受信すると、T14において、検索選択画面データをPC90に送信する。
PC90は、T14において、サーバ100から検索選択画面データを受信すると、T16において、検索選択画面データを利用して検索選択画面を表示する。当該画面は、PC90の周囲に存在するプリンタを検索して登録することを確認するためのメッセージと、検索ボタンと、を含む。PC90は、T18において、検索選択画面内の検索ボタンの選択をユーザから受け付けると、T20において、検索信号をブロードキャストによってLAN6に送信する。
プリンタ10は、T20において、PC90から検索信号を受信すると、T22において、プリンタ名「pr1」を含む応答信号をPC90に送信する。なお、LAN6に他のプリンタが接続されている場合には、当該プリンタも、プリンタ名を含む応答信号をPC90に送信する。
PC90は、T22において、1個以上のプリンタ10等から1個以上の応答信号を受信すると、T24において、1個以上の応答信号に含まれる1個以上のプリンタ名「pr1」を含む検索結果を表示する。PC90は、T26において、検索結果に含まれるプリンタ名「pr1」の選択をユーザから受け付けると、T30において、ログイン済みのアカウント情報AI1を含む登録指示をプリンタ10に送信する。登録指示は、プリンタ10に関する情報の登録をサーバ100に指示するための信号である。
プリンタ10は、T30において、PC90から登録指示を受信すると、T32において、登録指示に含まれるアカウント情報AI1と、プリンタ10のプリンタ名「pr1」と、メモリ34内の能力情報CI1と、を含む登録要求をサーバ100に送信する。登録要求は、プリンタ10に関する情報の登録をサーバ100に要求するための信号である。
サーバ100は、T32において、プリンタ10から登録要求を受信すると、T34において、デバイスID「dv1」及びトークンtk1を生成する。ここで、サーバ100は、過去に生成されたデバイスID及びトークンに重複しないように、ユニークなデバイスID「dv1」及びトークンtk1を生成する。そして、サーバ100は、T36において、ログイン済みのアカウント情報AI1と、T30で受信されたプリンタ名「pr1」と、T30で受信された能力情報CI1と、生成済みのデバイスID「dv1」と、生成済みのトークンtk1と、を関連付けて、メモリ134内のアカウントテーブル138(図1参照)に記憶する。ここで、サーバ100は、プリンタ名「pr1」と能力情報CI1とデバイスID「dv1」とをプリンタ情報PI1として記憶する。次いで、サーバ100は、T40において、デバイスID「dv1」及びトークンtk1をプリンタ10に送信する。
プリンタ10は、T40において、サーバ100からデバイスID「dv1」及びトークンtk1を受信すると、T42において、デバイスID「dv1」及びトークンtk1をメモリ34に記憶する。そして、プリンタ10は、T44において、トークンtk1を含む接続要求をサーバ100に送信する。接続要求は、いわゆる常時接続であるXMPP(eXtensible Messaging and Presence Protocolの略)接続の確立をサーバ100に要求するための信号である。
サーバ100は、T44において、プリンタ10から接続要求を受信すると、当該接続要求に含まれるトークンtk1がアカウントテーブル138に記憶済みであると判断し(即ちトークンtk1を利用した認証が成功し)、プリンタ10とのXMPP接続を確立する。このようにXMPP接続が確立されると、サーバ100は、プリンタ10から信号を受信しなくても、XMPP接続を利用して、LAN6のファイヤウォールを越えて信号(例えば後述のジョブ通知)をプリンタ10に送信することができる。
なお、以降の処理では、プリンタ10からサーバ100に送信される全ての信号にはトークンtk1が含まれ、サーバ100においてトークンtk1を利用した認証が実行される。以下では、これらの説明及び図示を省略する。
(サブミットプロセス;図3)
続いて、図3を参照して、PC90を利用して印刷対象の画像を表わす画像ファイルをサーバ100にサブミットするサブミットプロセスについて説明する。図3は、図2の後の状態であり、サーバ100のアカウントテーブル138には、アカウント情報AI1とプリンタ情報PI1とトークンtk1とが関連付けて記憶されている(図2のT36)。
続いて、図3を参照して、PC90を利用して印刷対象の画像を表わす画像ファイルをサーバ100にサブミットするサブミットプロセスについて説明する。図3は、図2の後の状態であり、サーバ100のアカウントテーブル138には、アカウント情報AI1とプリンタ情報PI1とトークンtk1とが関連付けて記憶されている(図2のT36)。
T210は、図2のT10と同様である。PC90は、画像ファイルをサブミットするための指示をユーザから受け付けると、T212において、プリンタ選択画面要求をサーバ100に送信する。
サーバ100は、T212において、PC90からプリンタ選択画面要求を受信すると、アカウントテーブル138から、T210でログイン済みのアカウント情報AI1に関連付けられているプリンタ情報PI1を取得する。そして、サーバ100は、T214において、取得済みのプリンタ情報PI1内のプリンタ名「pr1」を含むプリンタ選択画面データをPC90に送信する。
PC90は、T214において、サーバ100からプリンタ選択画面データを受信すると、T216において、プリンタ選択画面データを利用してプリンタ選択画面を表示する。PC90は、T218において、プリンタ選択画面に含まれるプリンタ名「pr1」の選択をユーザから受け付けると、T220において、選択済みのプリンタ名「pr1」を含む設定画面要求をサーバ100に送信する。
サーバ100は、T220において、PC90から設定画面要求を受信すると、T222において、設定画面データをPC90に送信する。
PC90は、T222において、サーバ100から設定画面データを受信すると、T224において、設定画面データを利用して設定画面を表示する。当該画面は、画像ファイルを選択するファイル選択欄と、用紙サイズを選択するサイズ選択欄と、印刷部数を選択する部数選択欄と、OKボタンと、Cancelボタンと、を含む。PC90は、T226において、画像ファイルF1の選択、印刷条件(即ち、用紙サイズ「A4」、印刷部数「1」)の入力、及び、OKボタンの選択をユーザから受け付けると、T230において、選択済みの画像ファイルF1と、入力済みの印刷条件を示す印刷条件情報C1と、を含む印刷要求をサーバ100に送信する。印刷要求は、画像ファイルF1によって表わされる対象画像の印刷をプリンタ10に実行させることを要求するための信号である。画像ファイルF1は、例えば、PC90にインストールされている文書ソフト、表計算ソフト等によって生成されたファイルである。
サーバ100は、T230において、PC90から印刷要求を受信すると、T232において、XMPP接続(図2のT46参照)を利用して、ジョブ通知をプリンタ10に送信する。ジョブ通知は、画像ファイルF1がサーバ100に記憶されたこと、換言すると、印刷ジョブが存在すること、をプリンタ10に通知するための信号である。
プリンタ10は、T232において、サーバ100からジョブ通知を受信すると、T234において、アドレス要求をサーバ100に送信する。アドレス要求は、対象画像を表わす画像データの位置(即ちアドレス)、印刷条件情報CI1の位置等の送信を要求するための信号である。
サーバ100は、T234において、プリンタ10から印刷要求を受信すると、T236において、ジョブID「job1」を生成する。ここで、サーバ100は、過去に生成されたジョブIDに重複しないように、ユニークなジョブID「job1」を生成する。次いで、サーバ100は、アカウントテーブル138から、ログイン済みのアカウント情報AI1に関連付けられているデバイスID「dv1」及び能力情報CI1を取得する。また、サーバ100は、T230で受信された印刷条件情報C1の記憶位置を示すチケットURL「tURL1」と、取得済みの能力情報CI1によって示される2個のデータフォーマット(即ち「PDF」及び「PWGラスタ」)に対応する2個の画像データの記憶位置を2個のデータURL「iURL1」,「iURL2」と、を生成する。この段階では、画像ファイルF1から画像データがまだ生成されていないので、データURLは、当該画像データが生成される際に記憶される位置を示す。本実施例では、「iURL1」がデータフォーマット「PDF」を有する画像データ(以下では「PDFデータ」と記載する)の記憶位置を示し、「iURL2」がデータフォーマット「PWGラスタ」を有する画像データ(以下では「PWGデータ」と記載する)の記憶位置を示す。そして、サーバ100は、T236において、生成済みのジョブID「job1」と、取得済みのデバイスID「dv1」と、生成済みのチケットURL「tURL1」と、生成済みの2個のデータURL「iURL1」,「iURL2」と、を関連付けて、メモリ134内のジョブテーブル140(図1参照)に記憶する。この段階では、ステータスはブランクである。次いで、サーバ100は、T238において、ジョブID「job1」とチケットURL「tURL1」と2個のデータURL「iURL1」,「iURL2」とをプリンタ10に送信する。
プリンタ10は、T238において、サーバ100からジョブID「job1」等を受信すると、T240において、受信済みのジョブID「job1」と文字列「IN_PROGRESS」とを含むステータス通知をサーバ100に送信する。ステータス通知は、当該通知に含まれるジョブIDに関連付けられているステータスを、当該通知に含まれるステータスに変更することを要求するための信号である。
サーバ100は、T240において、プリンタ10からステータス通知を受信すると、T242において、当該通知に含まれるジョブID「job1」に関連付けて、当該通知に含まれる文字列「IN_PROGRESS」をジョブテーブル140に記憶する。
次いで、プリンタ10は、T250において、T238で受信済みのチケットURL「tURL1」を含むチケット要求をサーバ100に送信する。チケット要求は、当該要求に含まれるチケットURL「tURL1」によって示される位置に記憶されている印刷条件情報C1の送信を要求するための信号である。
サーバ100は、T250において、プリンタ10からチケット要求を受信すると、メモリ134から、チケット要求に含まれるチケットURL「tURL1」によって示される位置に記憶されている印刷条件情報C1を取得する。そして、サーバ100は、T252において、取得済みの印刷条件情報C1をプリンタ10に送信する。
プリンタ10は、T252において、サーバ100から印刷条件情報C1を受信すると、図4の印刷制御処理を開始する。上述したように、本実施例では、プリンタ10は、データフォーマット「PDF」及び「PWGラスタ」とを解釈可能である。しかしながら、プリンタ10は、例えば、対象画像を表わすPDFデータが特殊なコマンドを含む場合には、当該PDFデータから、印刷実行部18が解釈可能な印刷データを生成することができない。即ち、プリンタ10は、PDFデータに従って対象画像の印刷を実行することができない。このような状況において、プリンタ10は、同じ対象画像を表わすPWGデータから印刷データを生成し、当該印刷データを利用して対象画像の印刷を実行する。これを実現するために、図4の処理が実行される。
(印刷制御処理;図4)
以下では、図3のT238及びT252でプリンタ10によって受信された情報(ジョブID「job1」、チケットURL「tURL1」、データURL「iURL1」,「iURL2」、及び、印刷条件情報C1)が利用される状況を例として、図4の処理の内容を説明する。
以下では、図3のT238及びT252でプリンタ10によって受信された情報(ジョブID「job1」、チケットURL「tURL1」、データURL「iURL1」,「iURL2」、及び、印刷条件情報C1)が利用される状況を例として、図4の処理の内容を説明する。
プリンタ10のCPU32は、サーバ100から印刷条件情報C1を受信すると、S10において、メモリ34に記憶されている失敗回数が所定回数(例えば10回)以下であるのか否かを判断する。失敗回数は、PDFデータを利用した印刷データの生成に失敗した回数である。CPU32は、失敗回数が所定回数以下であると判断する場合(S10でYES)にはS20に進み、失敗回数が所定回数より大きいと判断する場合(S10でNO)にはS120に進む。
S20では、CPU32は、PDFデータの送信を要求するためのPDF要求をサーバ100に送信する。PDF要求は、PDFデータの記憶位置を示すデータURL「iURL1」を含む。PDF要求がサーバ100によって受信されると、対象画像を表わす画像ファイルF1から同じ対象画像を表わすPDFデータへのデータ変換がサーバ100によって実行され、データURL「iURL1」によって示される位置に当該PDFデータが記憶される。その後、当該PDFデータがプリンタ10に送信される。なお、データ変換がサーバ100によって実行されるタイミングは、PDF要求がサーバ100によって受信されるタイミングに限られない。例えば、図3のT230において、画像ファイルF1を含む印刷要求がサーバ100によって受信されるタイミングで、PDFデータとPWGデータとの双方がサーバ100によって生成されてもよい。
S22では、CPU32は、サーバ100からPDFデータを受信する。ここで、CPU32は、サーバ100から全てのPDFデータを受信して、全てのPDFデータをメモリ34に一時的に記憶する。
S30では、CPU32は、第1の印刷データ生成処理(図5参照)を実行する。第1の印刷データ生成処理は、PDFデータを利用して、対象画像の印刷を印刷実行部18に実行させるための印刷データ(以下では「第1の印刷データ」と記載する)を生成することを試行する処理である。
S40では、CPU32は、第1の印刷データの生成に成功したのか失敗したのかを判断する。CPU32は、第1の印刷データの生成に成功したと判断する場合(S40でYES)にはS50に進み、第1の印刷データの生成に失敗したと判断する場合(S40でNO)にはS42に進む。
S42では、CPU32は、メモリ34内の失敗回数を1だけインクリメントする。S42が終了すると、S120に進む。
S50では、CPU32は、S30で生成された第1の印刷データを利用して、対象画像の印刷を印刷実行部18に実行させるための印刷処理(図7参照)を実行する。S50が終了すると、図4の処理が終了する。
S120では、CPU32は、PWGデータの送信を要求するためのPWG要求をサーバ100に送信する。PWG要求は、PWGデータの記憶位置を示すデータURL「iURL2」を含む。PWG要求がサーバ100によって受信されると、対象画像を表わす画像ファイルF1から同じ対象画像を表わすPWGデータへのデータ変換がサーバ100によって実行され、データURL「iURL2」によって示される位置に当該PWGデータが記憶される。その後、当該PWGデータがプリンタ10に送信される。
S122では、CPU32は、サーバ100からPWGデータを受信する。ここで、CPU32は、サーバ100から所定サイズのPWGデータを受信して、当該PWGデータをメモリ34に一時的に記憶する。サーバ100によって生成されたPWGデータの全データサイズが上記の所定サイズ以下であれば、S122において、CPU32は、全てのPWGデータを受信する。一方、PWGデータの全データサイズが上記の所定サイズ未満であれば、S122において、CPU32は、PWGデータのうち、所定サイズを有する一部のデータのみを受信する。この場合、CPU32は、S122〜S160の処理を経てS122を再び実行して、残りのデータを受信する。
S130では、CPU32は、第2の印刷データ生成処理(図6参照)を実行する。第2の印刷データ生成処理は、PWGデータを利用して、対象画像の印刷を印刷実行部18に実行させるための印刷データ(以下では「第2の印刷データ」と記載する)を生成することを試行する処理である。
S140では、CPU32は、第2の印刷データの生成に成功したのか失敗したのかを判断する。CPU32は、第2の印刷データの生成に成功したと判断する場合(S140でYES)にはS150に進み、第2の印刷データの生成に失敗したと判断する場合(S140でNO)にはS142に進む。
S142では、CPU32は、ジョブID「job1」と文字列「ABORTED」とを含むステータス通知をサーバ100に送信する。当該ステータス通知がサーバ100によって受信されると、ジョブテーブル140において、ジョブID「job1」に関連付けられているステータスが「IN_PROGRESS」(図3のT240及びT242参照)から「ABORTED」に変更される。その後、所定のタイミング(例えば「ABORTED」に変更されてから所定時間経過後のタイミング)において、ジョブテーブル140から、ジョブID「job1」と、それに関連付けられている各情報(デバイスID「dv1」等)と、が消去される。また、上記の所定のタイミングにおいて、メモリ134から、画像ファイルF1と、チケットURL「tURL1」に示される位置に記憶されている印刷条件情報C1と、データURL「iURL1」,「iURL2」に示される各位置に記憶されている各画像データと、が消去される。S142が終了すると、図4の処理が終了する。即ち、対象画像の印刷が実行されることなく、図4の処理が終了する。
S150では、CPU32は、S130で生成された第2の印刷データを利用して、対象画像の印刷を印刷実行部18に実行させるための印刷処理(図7参照)を実行する。
S160では、CPU32は、S122でサーバ100から全てのPWGデータを受信済みであるのか否かを判断する。CPU32は、PWGデータの最後を示す情報を受信済みである場合には、全てのPWGデータを受信済みであると判断し(S160でYES)、S162に進む。一方、CPU32は、PWGデータの最後を示す情報をまだ受信していない場合には、全てのPWGデータを受信済みでないと判断し(S160でNO)、S122において、データの送信の再開をサーバ100に要求して、前回のS122で受信されたデータの続きのデータを受信する。
S162では、CPU32は、ジョブID「job1」と文字列「DONE」とを含むステータス通知をサーバ100に送信する。当該ステータス通知がサーバ100によって受信されると、ジョブテーブル140において、ジョブID「job1」に関連付けられているステータスが「IN_PROGRESS」(図3のT240及びT242参照)から「DONE」に変更される。その後、S142の処理に起因して「ABORTED」に変更される場合と同様に、所定のタイミングにおいて、ジョブテーブル140からジョブID「job1」等が消去され、メモリ134から画像ファイルF1等が消去される。S162が終了すると、図4の処理が終了する。
(第1の印刷データ生成処理;図5)
続いて、図5を参照して、図4のS30で実行される第1の印刷データ生成処理の内容を説明する。PDFデータは、複数個のオブジェクトを含むベクタデータである。S200では、CPU32は、PDFデータに含まれる複数個のオブジェクトを解析して、複数個のオブジェクトの内容を把握する。
続いて、図5を参照して、図4のS30で実行される第1の印刷データ生成処理の内容を説明する。PDFデータは、複数個のオブジェクトを含むベクタデータである。S200では、CPU32は、PDFデータに含まれる複数個のオブジェクトを解析して、複数個のオブジェクトの内容を把握する。
S202では、CPU32は、解析済みの複数個のオブジェクトが非サポートフォント情報を含むのか否かを判断する。具体的には、CPU32は、まず、複数個のオブジェクトの中から、対象画像に含まれる各文字を記述するためのフォントを示すオブジェクト(以下では「フォント情報」と記載する)を特定する。そして、CPU32は、特定済みのフォルト情報が、プリンタ10がサポートしていないフォント(即ちプリンタ10が解釈不可能なフォント)を示す情報(即ち非サポートフォント情報)であるのか否かを判断する。CPU32は、特定済みのフォント情報が非サポートフォント情報を含む場合には、S202でYESと判断し、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、特定済みのフォント情報が非サポートフォント情報を含まない場合には、S202でNOと判断してS204に進む。
S204では、CPU32は、解析済みの複数個のオブジェクトが非サポートフォーマット情報を含むのか否かを判断する。具体的には、CPU32は、まず、複数個のオブジェクトの中から、対象画像に含まれる部分画像(例えば写真等の画像)のデータフォーマットを示すオブジェクト(以下では「フォーマット情報」と記載する)を特定する。そして、CPU32は、特定済みのフォーマット情報が、プリンタ10がサポートしていないデータフォーマット(即ちプリンタ10が解釈不可能なデータフォーマット)を示す情報(即ち非サポートフォーマット情報)であるのか否かを判断する。プリンタ10がサポートしていないデータフォーマットは、例えば、JPEG(Joint Photographic Experts Groupの略)2000である。CPU32は、特定済みのフォーマット情報が非サポートフォーマット情報を含む場合には、S204でYESと判断し、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、特定済みのフォーマット情報が非サポートフォーマット情報を含まない場合には、S204でNOと判断してS206に進む。
S206では、CPU32は、解析済みの複数個のオブジェクトが非サポート暗号化情報を含むのか否かを判断する。具体的には、CPU32は、まず、複数個のオブジェクトの中から、対象画像に含まれる文字、部分画像等を暗号化するために利用された暗号化方式を示すオブジェクト(以下では「暗号化情報」と記載する)を特定する。そして、CPU32は、特定済みの暗号化情報が、プリンタ10がサポートしていない暗号化方式(即ちプリンタ10が復号不可能な暗号化方式)を示す情報(即ち非サポート暗号化情報)であるのか否かを判断する。プリンタ10がサポートしていない暗号化方式は、例えば、RC4(Rivest Cipher 4の略)及びAES(Advanced Encryption Standardの略)である。CPU32は、特定済みの暗号化情報が非サポート暗号化情報を含む場合には、S206でYESと判断し、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、特定済みの暗号化情報が非サポート暗号化情報を含まない場合には、S206でNOと判断してS208に進む。
S208では、CPU32は、解析済みの複数個のオブジェクトが透明コマンドを含むのか否かを判断する。透明コマンドは、対象画像に含まれる文字、部分画像等の透明度を指示するオブジェクトである。本実施例では、プリンタ10は、透明コマンドをサポートしていない(即ち解釈不可能である)。CPU32は、複数個のオブジェクトが透明コマンドを含む場合には、S208でYESと判断し、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、複数個のオブジェクトが透明コマンドを含まない場合には、S208でNOと判断してS210に進む。
S210では、CPU32は、解析済みの複数個のオブジェクトを利用してPDFデータのラスタライズを実行して、ビットマップデータを生成する。当該ビットマップデータは、RGBの多階調(例えば256階調)のデータである。
S212では、CPU32は、S210でPDFデータのラスタライズを実行する過程において、メモリフルエラーが発生したのか否かを判断する。具体的には、CPU32は、図5の処理を実行する際に、メモリ34内にワーク領域を確保する。CPU32は、当該ワーク領域の全てにデータを書き込んだ状態になると、メモリフルエラーが発生したと判断し(S212でYES)、第1の印刷データを生成することなく、S250に進む。例えば、PDFデータが複雑なグラデーションコマンドを含む場合には、ラスタライズの際に多くのメモリ領域が利用され、メモリフルエラーが発生し得る。一方、CPU32は、メモリフルエラーが発生しなかったと判断する場合(S212でNO)には、S214に進む。
S214では、CPU32は、S210でPDFデータのラスタライズを実行する過程において各オブジェクトを利用する際に、プリンタ10がサポートしてないオブジェクト(以下では「非サポートコマンド」と記載する)が存在するのか否かを判断する。CPU32は、非サポートコマンドが存在すると判断する場合(S214でYES)には、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、非サポートコマンドが存在しないと判断する場合(S214でNO)には、S220に進む。
S220では、CPU32は、S210で生成されたビットマップデータが圧縮データを含む場合に、当該圧縮データを解凍して、解凍済みのデータを含むビットマップデータを生成する。
S222では、CPU32は、S220で圧縮データの解凍を実行する過程において、解凍済みデータが解釈不可能なデータを含むのか否かを判断する。例えば、サーバ100によってPDFデータが生成される過程において、暗号化に失敗している場合には、解釈不可能なデータが含まれ得る。CPU32は、解凍済みデータが解釈不可能なデータを含むと判断する場合(S222でYES)には、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、解凍済みデータが解釈不可能なデータを含まないと判断する場合(S222でNO)には、S230に進む。
S230では、CPU32は、S220で生成されたビットマップデータが複数のレイヤー構造を有する場合に、各レイヤーの合成を実行して、合成済みのビットマップデータを生成する。
S232では、CPU32は、S230でレイヤーの合成を実行する過程において、メモリフルエラーが発生したのか否かを判断する。CPU32は、ワーク領域の全てにデータを書き込んだ状態になると、メモリフルエラーが発生したと判断し(S232でYES)、第1の印刷データを生成することなく、S250に進む。一方、CPU32は、メモリフルエラーが発生しなかったと判断する場合(S232でNO)には、S240に進む。なお、図示省略しているが、CPU32は、S232でNOの場合には、S230で生成されたビットマップデータに対して、RGBからCMYKへの色変換を実行して、CMYKの多階調(例えば256階調)のビットマップデータを生成する。そして、CPU32は、CMYKの多階調のビットマップデータに対するハーフトーン処理を実行して、CMYKの低階調(例えば2階調、3階調等)のビットマップデータである第1の印刷データを生成する。
S240では、CPU32は、第1の印刷データの生成に成功したと判断する。S240が終了すると、図5の処理が終了する。この場合、図4のS40でYESと判断され、S50が実行される。
S250では、CPU32は、第1の印刷データの生成に失敗したと判断する。S250が終了すると、図5の処理が終了する。この場合、図4のS40でNOと判断され、S42が実行される。
(第2の印刷データ生成処理;図6)
続いて、図6を参照して、図4のS130で実行される第2の印刷データ生成処理の内容を説明する。PWGデータは、RGBの多階調(例えば256階調)のビットマップデータである。
続いて、図6を参照して、図4のS130で実行される第2の印刷データ生成処理の内容を説明する。PWGデータは、RGBの多階調(例えば256階調)のビットマップデータである。
S260では、CPU32は、PWGデータが圧縮データを含む場合に、当該圧縮データを解凍して、解凍済みのデータを含むビットマップデータを生成する。
S262では、CPU32は、S260で圧縮データの解凍を実行する過程において、解凍済みデータが解釈不可能なデータを含むのか否かを判断する。S262の処理は、図5のS222の処理と同様である。CPU32は、解凍済みデータが解釈不可能なデータを含むと判断する場合(S262でYES)には、第2の印刷データを生成することなく、S280に進む。一方、CPU32は、解凍済みデータが解釈不可能なデータを含まないと判断する場合(S262でNO)には、S270に進む。なお、図示省略しているが、CPU32は、S262でNOの場合には、第1の印刷データを生成する場合と同様に、RGBからCMYKへの色変換とハーフトーン処理とを実行して、CMYKの低階調(例えば2階調、3階調等)のビットマップデータである第2の印刷データを生成する。
S270では、CPU32は、第2の印刷データの生成に成功したと判断する。S270が終了すると、図6の処理が終了する。この場合、図4のS140でYESと判断され、S150が実行される。
S280では、CPU32は、第2の印刷データの生成に失敗したと判断する。S280が終了すると、図5の処理が終了する。この場合、図4のS140でNOと判断され、S142が実行される。
(印刷処理;図7)
続いて、図7を参照して、図4のS50又はS150で実行される印刷処理の内容を説明する。図4のS50の印刷処理では、S300において、CPU32は、図4のS30(即ち図5の処理)で生成された第1の印刷データを印刷実行部18に供給する。また、図4のS150の印刷処理では、S300において、CPU32は、図4のS130(即ち図6の処理)で生成された第2の印刷データを印刷実行部18に供給する。図示省略しているが、S300では、CPU32は、図3のT252で受信された印刷条件情報C1も印刷実行部18に供給する。S300が実行されると、印刷実行部18は、印刷条件情報C1に従って、第1又は第2の印刷データによって表わされる対象画像の印刷を開始する。
続いて、図7を参照して、図4のS50又はS150で実行される印刷処理の内容を説明する。図4のS50の印刷処理では、S300において、CPU32は、図4のS30(即ち図5の処理)で生成された第1の印刷データを印刷実行部18に供給する。また、図4のS150の印刷処理では、S300において、CPU32は、図4のS130(即ち図6の処理)で生成された第2の印刷データを印刷実行部18に供給する。図示省略しているが、S300では、CPU32は、図3のT252で受信された印刷条件情報C1も印刷実行部18に供給する。S300が実行されると、印刷実行部18は、印刷条件情報C1に従って、第1又は第2の印刷データによって表わされる対象画像の印刷を開始する。
S310では、CPU32は、S300で供給された第1又は第2の印刷データに従った印刷が完了することを監視する。具体的には、CPU32は、印刷実行部18から印刷の完了を示す情報を取得する場合には、印刷が完了したと判断する。図4のS50の印刷処理では、CPU32は、印刷が完了したと判断する場合(S310でYES)に、S312に進む。また、図4のS150の印刷処理では、CPU32は、印刷が完了したと判断する場合(S310でYES)に、S312をスキップして、図7の処理を終了する。
S312では、CPU32は、ジョブID「job1」と文字列「DONE」とを含むステータス通知をサーバ100に送信する。S312の処理は、図4のS162の処理と同様である。S312が終了すると、図7の処理が終了する。
S320では、CPU32は、S310の監視と並行して、解消不可能エラーが発生することを監視する。解消不可能エラーは、ユーザが自力で解消させることができないエラーである。即ち、解消不可能エラーは、ユーザがプリンタ10の修理サービスを依頼しなければ、解消させることができないエラーである。解消不可能エラーは、例えば、印刷実行部18を構成する部材の温度が予め決められている閾値を超える値まで上昇すること、印刷実行部18を構成する部材が破損すること等である。CPU32は、印刷実行部18から解消不可能エラーを示すエラーコードを取得する場合には、解消不可能エラーが発生したと判断し(S320でYES)、S322に進む。
S322では、CPU32は、ジョブID「job1」と文字列「ABORTED」とを含むステータス通知をサーバ100に送信する。S322の処理は、図4のS142の処理と同様である。S322が終了すると、図7の処理が終了する。
S330では、CPU32は、S310及びS320の監視と並行して、解消可能エラーが発生することを監視する。解消可能エラーは、ユーザが自力で解消させることができるエラーである。解消可能エラーは、例えば、色材(インク、トナー等)がなくなること、印刷用紙がなくなること、印刷用紙が詰まること(即ちジャム)等である。CPU32は、印刷実行部18から解消可能エラーを示すエラーコードを取得する場合には、解消可能エラーが発生したと判断し(S330でYES)、S332に進む。
S332では、CPU32は、ジョブID「job1」と文字列「STOPPED」とを含むステータス通知をサーバ100に送信する。当該ステータス通知がサーバ100によって受信されると、ジョブテーブル140において、ジョブID「job1」に関連付けられているステータスが「IN_PROGRESS」(図3のT240及びT242参照)から「STOPPED」に変更される。
S340では、CPU32は、エラーが解消することを監視する。CPU32は、エラーを解消させる動作がユーザによって実行されると、印刷実行部18からエラーの解消を示す情報を取得する。この場合、CPU32は、エラーが解消したと判断し(S340でYES)、S342に進む。
S342では、CPU32は、ジョブID「job1」と文字列「IN_PROGRESS」とを含むステータス通知をサーバ100に送信する。当該ステータス通知がサーバ100によって受信されると、ジョブテーブル140において、ジョブID「job1」に関連付けられているステータスが「STOPPED」(S332参照)から「IN_PROGRESS」に変更される。S342が終了すると、S310、S320、及び、S330の監視に戻る。
(具体的なケース;図8及び図9)
続いて、図8及び図9を参照して、図4〜図7の処理によって実現される具体的なケースについて説明する。図8、図9は、それぞれ、PDFデータから第1の印刷データを生成する処理が成功するケースA、当該処理が失敗するケースBを示す。
続いて、図8及び図9を参照して、図4〜図7の処理によって実現される具体的なケースについて説明する。図8、図9は、それぞれ、PDFデータから第1の印刷データを生成する処理が成功するケースA、当該処理が失敗するケースBを示す。
(ケースA;図8)
ケースAは、図3のサブミットプロセスが実行された後のケースである。従って、サーバ100のジョブテーブル140には、ジョブID「job1」等が記憶されている(図3のT236及びT242参照)。また、プリンタ10のメモリ34に記憶されている失敗回数は所定回数以下である。
ケースAは、図3のサブミットプロセスが実行された後のケースである。従って、サーバ100のジョブテーブル140には、ジョブID「job1」等が記憶されている(図3のT236及びT242参照)。また、プリンタ10のメモリ34に記憶されている失敗回数は所定回数以下である。
プリンタ10は、失敗回数が所定回数以下であると判断し(図4のS10でYES)、T300において、データURL「iURL1」を含むPDF要求をサーバ100に送信し(S20)、T302において、サーバ100から全てのPDFデータを受信する(S22)。本ケースAでは、T310において、PDFデータから第1の印刷データを生成する処理が成功し(S30(図5)、S40でYES)、プリンタ10は、第1の印刷データに従った印刷処理を実行する(S50(図7))。
ケースA1では、T320において、第1の印刷データに従った印刷が完了する(図7のS310でYES)。この場合、プリンタ10は、T322において、文字列「DONE」を含むステータス通知をサーバ100に送信する(S312)。この結果、T324において、ジョブID「job1」に関連付けられているステータスとして「DONE」がサーバ100に記憶され、その後、T326において、ジョブID「job1」等がサーバ100から消去される。
ケースA2では、T330において、解消不可能エラーが発生する(図7のS320でYES)。この場合、プリンタ10は、T332において、文字列「ABORTED」を含むステータス通知をサーバ100に送信する(S322)。この結果、T334において、ジョブID「job1」に関連付けられているステータスとして「ABORTED」がサーバ100に記憶され、その後、T336において、ジョブID「job1」等がサーバ100から消去される。
ケースA3では、T340において、解消可能エラーが発生する(図7のS330でYES)。この場合、プリンタ10は、T342において、文字列「STOPPED」を含むステータス通知をサーバ100に送信する(S332)。この結果、T344において、ジョブID「job1」に関連付けられているステータスとして「STOPPED」がサーバ100に記憶される。その後、T350において、エラーが解消する(図7のS340でYES)。この場合、プリンタ10は、T352において、文字列「IN_PROGRESS」を含むステータス通知をサーバ100に送信する(S342)。この結果、T354において、ジョブID「job1」に関連付けられているステータスとして「IN_PROGRESS」がサーバ100に記憶される。その後、T360において、第1の印刷データに従った印刷が完了する(S310でYES)。T362〜T366は、ケースA1のT322〜T326と同様である。
(ケースB;図9)
ケースBの初期状態は、図8のケースAの初期状態と同じである。プリンタ10は、失敗回数が所定回数以下であると判断し(図4のS10でYES)、T400において、データURL「iURL1」を含むPDF要求をサーバ100に送信し(S20)、T402において、サーバ100から全てのPDFデータを受信する(S22)。ここで、当該PDFデータは、透明コマンドを含む。このため、本ケースBでは、T410において、PDFデータから第1の印刷データを生成する処理が失敗する(S30、図5のS208でYES、S40でNO)。この場合、プリンタ10は、T412において、失敗回数を「1」だけインクリメントする(S42)。
ケースBの初期状態は、図8のケースAの初期状態と同じである。プリンタ10は、失敗回数が所定回数以下であると判断し(図4のS10でYES)、T400において、データURL「iURL1」を含むPDF要求をサーバ100に送信し(S20)、T402において、サーバ100から全てのPDFデータを受信する(S22)。ここで、当該PDFデータは、透明コマンドを含む。このため、本ケースBでは、T410において、PDFデータから第1の印刷データを生成する処理が失敗する(S30、図5のS208でYES、S40でNO)。この場合、プリンタ10は、T412において、失敗回数を「1」だけインクリメントする(S42)。
次いで、プリンタ10は、T430において、データURL「iURL2」を含むPWG要求をサーバ100に送信し(S120)、T432において、サーバ100から所定サイズのPWGデータを受信する(S122)。ここで、当該PWGデータがベクタデータではなくビットマップデータであるので、当該PWGデータは、透明コマンドを含まない。このため、T440において、当該PWGデータから第2の印刷データを生成する処理が成功し(S130(図6)、S140でYES)、プリンタ10は、当該第2の印刷データに従った印刷処理を実行する(S150(図7))。
T450において、T440で生成された第2の印刷データに従った印刷が完了すると(図7のS310でYES)、プリンタ10は、全てのPWGデータを受信済みでないと判断し(図4のS160でNO)、T452において、サーバ100から残りのPWGデータを受信する(S122)。T460において、当該PWGデータから第2の印刷データを生成する処理が成功し(S130(図6)、S140でYES)、プリンタ10は、当該第2の印刷データに従った印刷処理を実行する(S150(図7))。
T470において、T460で生成された第2の印刷データに従った印刷が完了すると(図7のS310でYES)、プリンタ10は、全てのPWGデータを受信済みであると判断する(図4のS160でYES)。T472〜T476は、図8のケースA1のT322〜T326と同様である。
(本実施例の効果)
上記の図9のケースBに示されるように、プリンタ10は、対象画像を表わすPDFデータが透明コマンドを含むことに起因して第1の印刷データの生成に失敗する場合(T410)に、同じ対象画像を表わすと共に透明コマンドを含まないPWGデータを利用して第2の印刷データを生成し(T440、T460)、第2の印刷データを利用して対象画像の印刷を実行する。従って、プリンタ10は、対象画像を表わすPDFデータを利用した第1の印刷データの生成に失敗しても、第2の印刷データを利用して対象画像の印刷を実行することができる。
上記の図9のケースBに示されるように、プリンタ10は、対象画像を表わすPDFデータが透明コマンドを含むことに起因して第1の印刷データの生成に失敗する場合(T410)に、同じ対象画像を表わすと共に透明コマンドを含まないPWGデータを利用して第2の印刷データを生成し(T440、T460)、第2の印刷データを利用して対象画像の印刷を実行する。従って、プリンタ10は、対象画像を表わすPDFデータを利用した第1の印刷データの生成に失敗しても、第2の印刷データを利用して対象画像の印刷を実行することができる。
なお、図9のケースBでは、PDFデータが透明コマンドを含むことに起因して第1の印刷データの生成に失敗する。ただし、PDFデータが、非サポートフォント情報(図5のS202)、非サポートフォーマット情報(S204)、非サポート暗号化情報(S206)、複雑なグラデーションコマンド(S212)、非サポートコマンド(S214)、又は、解釈不可能データ(S222)を含む場合にも、第1の印刷データの生成に失敗する。このような状況でも、プリンタ10は、これらの情報を含まないPWGデータを利用して第2の印刷データを生成し、第2の印刷データを利用して対象画像の印刷を実行することができる。
また、図8のケースAに示されるように、プリンタ10は、まず、PDF要求をサーバ100に送信して(T300)、サーバ100からPDFデータを受信する(T302)。ここで、第1の印刷データの生成が成功すれば(T320)、プリンタ10は、PWG要求をサーバ100に送信せず、サーバ100からPWGデータを受信しない。従って、プリンタ10が、PDFデータとPWGデータとの双方を受信した後に、PDFデータから第1の印刷データを生成する処理を実行する比較例の構成と比べると、プリンタ10とサーバ100との間の通信負荷を低減させることができる。
特に、PDFデータがベクタデータであり、PWGデータがビットマップデータであることから、対象画像を表わすPDFデータ(図9のT402参照)のデータサイズは、同じ対象画像を表わすPWGデータ(T432及びT452参照)のデータサイズよりも小さい。このために、プリンタ10は、PDF要求及びPWG要求のうちのPDF要求をサーバ100に先に送信して、比較的に小さいデータサイズを有するPDFデータを受信し、PDFデータに従った印刷を実行することを試行する。そして、ここで印刷が完了すれば、PWGデータの通信を実行せずに済む。従って、プリンタ10が、PDF要求及びPWG要求のうちのPWG要求をサーバ100に先に送信して、比較的に大きいデータサイズを有するPWGデータを受信する比較例の構成と比べると、プリンタ10とサーバ100との間の通信負荷を低減させることができる。
また、図8のケースA2に示されるように、プリンタ10は、解消不可能エラーが発生する場合(T330)には、文字列「ABORTED」を含むステータス通知をサーバ100に送信する(T332)。この結果、ジョブID「job1」等がサーバ100から消去される。一方、図9のケースBに示されるように、第1の印刷データの生成に失敗する場合(T410)には、プリンタ10は、文字列「ABORTED」を含むステータス通知をサーバ100に送信しない。この結果、ジョブID「job1」等は、サーバ100から消去されない。従って、プリンタ10は、サーバ100からPWGデータを受信することができる(T432及びT452)。
失敗回数が所定回数より大きい場合には、PDFデータから第1の印刷データを生成する処理が失敗する可能性が高い。従って、プリンタ10は、失敗回数が所定回数より大きいと判断する場合(図4のS10でYES)には、PDF要求をサーバ100に送信することなく、PWG要求をサーバ100に送信し(S120)、サーバ100からPWGデータを受信し(S122)、PWGデータに従った印刷を実行する(S130、S150)。これにより、プリンタ10は、失敗する可能性が高い処理を実行せずに済み、さらに、当該処理のためのPDFデータを受信せずに済む。プリンタ10の処理負荷を低減させることができると共に、プリンタ10とサーバ100との間の通信負荷を低減させることができる。
(対応関係)
PDF、PWGラスタが、それぞれ、「第1のデータフォーマット」、「第2のデータフォーマット」の一例である。PDFデータ、PWGデータが、それぞれ、「第1の画像データ」、「第2の画像データ」の一例である。PDF要求、PWG要求が、それぞれ、「第1のデータ要求」、「第2のデータ要求」の一例である。画像ファイルF1が、「対象画像データ」の一例である。文字列「ABORTED」を含むステータス通知が、「中止通知」の一例である。ジョブ通知が、「記憶通知」の一例である。透明コマンド、非サポートフォント情報が、それぞれ、「透明度情報」、「特定のフォント情報」の一例である。
PDF、PWGラスタが、それぞれ、「第1のデータフォーマット」、「第2のデータフォーマット」の一例である。PDFデータ、PWGデータが、それぞれ、「第1の画像データ」、「第2の画像データ」の一例である。PDF要求、PWG要求が、それぞれ、「第1のデータ要求」、「第2のデータ要求」の一例である。画像ファイルF1が、「対象画像データ」の一例である。文字列「ABORTED」を含むステータス通知が、「中止通知」の一例である。ジョブ通知が、「記憶通知」の一例である。透明コマンド、非サポートフォント情報が、それぞれ、「透明度情報」、「特定のフォント情報」の一例である。
図4のS22の処理、S122の処理が、それぞれ、「第1の受信部」、「第2の受信部」によって実行される処理の一例である。S30の処理、S50の処理が、それぞれ、「第1の生成部」、「第1の印刷制御部」によって実行される処理の一例である。S130の処理、S150の処理が、それぞれ、「第2の生成部」、「第2の印刷制御部」によって実行される処理の一例である。S20の処理が、「第1の要求送信部」によって実行される処理の一例である。S40でNOの場合に実行されるS120の処理、S10でNOの場合に実行されるS120の処理が、それぞれ、「第2の要求送信部」、「第3の要求送信部」によって実行される処理の一例である。図4のS50で実行される図7のS322の処理が、「通知送信部」によって実行される処理の一例である。図4のS10の処理が、「判断部」によって実行される処理の一例である。図2のT32の処理、T44及びT46の処理、図3のT232の処理が、それぞれ、「能力情報送信部」、「確立部」、「通知受信部」によって実行される処理の一例である。
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
(変形例1)プリンタ10は、サーバ100からPDFデータ及びPWGデータの双方を受信した後に、PDFデータから第1の印刷データを生成する処理を実行し、第1の印刷データの生成が失敗する場合に、PWGデータから第2の印刷データを生成する処理を実行してもよい。即ち、「第1の生成部」が第1の印刷データの生成を試行するタイミングは、上記の実施例のように、第1の画像データ及び第2の画像データのうちの第1の画像データのみが受信されたタイミングであってもよいし、本変形例のように、第1の画像データ及び第2の画像データの双方が受信されたタイミングであってもよい。即ち、本変形例では、「第2の要求送信部」は、第1の印刷データの生成が失敗する前に、第2のデータ要求をサーバに送信してもよい。
(変形例2)プリンタ10は、PDF要求及びPWG要求をサーバ100に送信することなく、XMPP接続を利用して、サーバ100からPDFデータ及びPWGデータの双方を含むジョブ通知を受信してもよい。本変形例では、「第1の要求送信部」及び「第2の要求送信部」を省略可能である。
(変形例3)プリンタ10は、図4のS22において、サーバ100から、PDFデータとは異なるデータフォーマット(例えばプリンタ10のベンダによって開発された独自フォーマット)を有する画像データを受信してもよい。そして、プリンタ10は、当該画像データから第1の印刷データを生成する処理が失敗する場合(S40でNO)に、サーバ100からPWGデータを受信してもよい。本変形例では、上記の独自フォーマットが、「第1のデータフォーマット」の一例である。また、本変形例では、上記の独自フォーマットを有する画像データのデータサイズは、PWGデータのデータサイズよりも大きくてもよい。即ち、第1の画像データのデータサイズは、第2の画像データのデータサイズよりも大きくてもよい。
(変形例4)プリンタ10は、図4のS122において、サーバ100から、PWGデータとは異なるデータフォーマット(例えば、JPEG、PCLm(Printer Command Language mの略))を有する画像データを受信してもよい。本変形例では、上記の異なるデータフォーマットが、「第2のデータフォーマット」の一例である。
(変形例5)プリンタ10は、図7のS320でYESの場合に、S322のステータス通知をサーバ100に送信しなくてもよい。本変形例では、「通知送信部」を省略可能である。
(変形例6)GCPサーバ100に代えて、Googleとは異なる事業者(例えばプリンタ10のベンダ)によって提供されるサーバが利用されてもよい。この場合、サーバがLAN6内に設置されてもよく、サーバとプリンタ10との間にXMPP接続が確立されなくてもよい。本変形例では、「確立部」及び「通知受信部」を省略可能である。
(変形例7)図2のT32において、プリンタ10は、能力情報CI1をサーバ100に送信しなくてもよい。この場合、サーバ100は、T36において、デフォルトのデータフォーマットとしてPDF及びPWGラスタを示す能力情報を記憶してもよい。本変形例では、「能力情報送信部」を省略可能である。
(変形例8)プリンタ10は、図4のS10を実行せずに、図4のS20を実行してもよい。この場合、S42も省略可能である。本変形例では、「判断部」を省略可能である。
(変形例9)プリンタ10は、図3のT232において、サーバ100からジョブ通知を受信した後に、ユーザがプリンタ10にログインすることを条件として、T234以降の処理を実行してもよい。この場合、プリンタ10は、図4のS40でNOと判断する場合に、ログインユーザを示すユーザ情報に対応付けて失敗回数を記憶してもよい。即ち、プリンタ10は、ユーザ毎に、失敗情報を記憶してもよい。そして、プリンタ10は、S10において、ログインユーザを示すユーザ情報に対応付けられている失敗回数が所定回数以上であるのか否かを判断してもよい。本変形例によると、プリンタ10は、第1の印刷データの生成が成功する可能性が高いユーザについては、サーバ100からPDFデータを受信し、第1の印刷データの生成が失敗する可能性が高いユーザについては、サーバ100からPDFデータを受信することなくPWGデータを受信することができる。
(変形例10)上記の各実施例では、図2〜図9の各処理がソフトウェア(即ちプログラム36)によって実現されるが、これらの各処理のうちの少なくとも1つが論理回路等のハードウェアによって実現されてもよい。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
2:通信システム、4:インターネット、6:LAN、10:プリンタ、12:操作部、14:表示部、16:ネットワークインターフェース、18:印刷実行部、30:制御部、32:CPU、34:メモリ、36:プログラム、90:PC、100:GCPサーバ、116:ネットワークインターフェース、130:制御部、132:CPU、134:メモリ、136:プログラム、138:アカウントテーブル、140:ジョブテーブル
Claims (12)
- プリンタであって、
印刷実行部と、
通信インターフェースと、
サーバから、前記通信インターフェースを介して、対象画像を表わす第1の画像データであって、第1のデータフォーマットを有する前記第1の画像データを受信する第1の受信部と、
前記サーバから、前記通信インターフェースを介して、前記対象画像を表わす第2の画像データであって、前記第1のデータフォーマットとは異なる第2のデータフォーマットを有する前記第2の画像データを受信する第2の受信部と、
前記第1の画像データを利用して、前記対象画像の印刷を前記印刷実行部に実行させるための第1の印刷データを生成することを試行する第1の生成部と、
前記第1の印刷データの生成に成功する場合に、生成済みの前記第1の印刷データを利用して、前記対象画像の印刷を前記印刷実行部に実行させる第1の印刷制御部と、
前記第1の画像データが特定情報を含むことに起因して前記第1の印刷データの生成に失敗する場合に、前記特定情報を含まない前記第2の画像データを利用して、前記対象画像の印刷を前記印刷実行部に実行させるための第2の印刷データを生成する第2の生成部と、
前記第1の印刷データの生成に失敗する場合に、生成済みの前記第2の印刷データを利用して、前記対象画像の印刷を前記印刷実行部に実行させる第2の印刷制御部と、
を備えるプリンタ。 - 前記プリンタは、さらに、
前記通信インターフェースを介して、第1のデータ要求を前記サーバに送信する第1の要求送信部であって、前記第1のデータ要求は、前記第1の画像データの送信を前記サーバに要求するための信号である、前記第1の要求送信部を備え、
前記第1の受信部は、前記第1のデータ要求の送信に応じて、前記サーバから前記第1の画像データを受信し、
前記プリンタは、さらに、
前記第1の印刷データの生成に失敗する場合に、前記通信インターフェースを介して、第2のデータ要求を前記サーバに送信する第2の要求送信部であって、前記第2のデータ要求は、前記第2の画像データの送信を前記サーバに要求するための信号であり、前記第1の印刷データの生成に成功する場合に、前記第2のデータ要求は送信されない、前記第2の要求送信部を備え、
前記第2の受信部は、前記第2のデータ要求の送信に応じて、前記サーバから前記第2の画像データを受信する、請求項1に記載のプリンタ。 - 前記第1の画像データのデータサイズは、前記第2の画像データのデータサイズよりも小さい、請求項2に記載のプリンタ。
- 前記プリンタは、さらに、
前記第1の印刷データの生成に成功し、かつ、前記第1の印刷データを利用した前記対象画像の印刷が前記印刷実行部において失敗する場合に、前記通信インターフェースを介して、前記対象画像の印刷を中止することを示す中止通知を前記サーバに送信する通知送信部であって、前記第1の印刷データの生成に失敗する場合に、前記中止通知は送信されない、前記通知送信部を備える、請求項2又は3に記載のプリンタ。 - 前記サーバは、GCP(Google(登録商標) Cloud Printの略)サーバであり、
前記中止通知は、前記対象画像の印刷を前記プリンタに実行させるための印刷ジョブであって、前記サーバに記憶されている前記印刷ジョブのステータスをABORTEDに変更するための通知である、請求項4に記載のプリンタ。 - 前記プリンタは、さらに、
前記第1のデータフォーマットを有する画像データを利用した印刷データの生成に失敗した回数である失敗回数を記憶するメモリと、
前記メモリに記憶されている前記失敗回数が所定回数以下であるのか否かを判断する判断部と、を備え、
前記第1の要求送信部は、前記失敗回数が前記所定回数以下であると判断される場合に、前記第1のデータ要求を前記サーバに送信し、
前記失敗回数が前記所定回数より大きいと判断される場合に、前記第1のデータ要求は送信されず、
前記通信装置は、さらに、
前記失敗回数が前記所定回数より大きいと判断される場合に、前記通信インターフェースを介して、前記第2のデータ要求を前記サーバに送信する第3の要求送信部を備える、請求項2から5のいずれか一項に記載のプリンタ。 - 前記プリンタは、さらに、
前記通信インターフェースを介して、XMPP(eXtensible Messaging and Presence Protocolの略)接続を前記サーバと確立する確立部と、
前記サーバから、前記XMPP接続を利用して、前記通信インターフェースを介して、記憶通知を受信する通知受信部であって、前記記憶通知は、前記対象画像を表わす対象画像データが前記サーバに記憶されたことを前記通信装置に通知するための信号である、前記通知受信部と、を備え、
前記第1の要求送信部は、前記サーバから前記記憶通知が受信される場合に、前記第1のデータ要求を前記サーバに送信する、請求項2から6のいずれか一項に記載のプリンタ。 - 前記プリンタは、さらに、
前記通信インターフェースを介して、能力情報を前記サーバに送信する能力情報送信部であって、前記能力情報は、前記プリンタが前記第1のデータフォーマットと前記第2のデータフォーマットとを含む複数個のデータフォーマットを解釈可能であることを示す、前記能力情報送信部を備え、
前記第1の受信部は、前記サーバから、送信済みの前記能力情報によって示される前記複数個のデータフォーマットのうちの前記第1のデータフォーマットを有する前記第1の画像データを受信し、
前記第2の受信部は、前記サーバから、送信済みの前記能力情報によって示される前記複数個のデータフォーマットのうちの前記第2のデータフォーマットを有する前記第2の画像データを受信する、請求項1から7のいずれか一項に記載のプリンタ。 - 前記特定情報は、前記対象画像に含まれるオブジェクトの透明度を示す透明度情報を含む、請求項1から8のいずれか一項に記載のプリンタ。
- 前記特定情報は、前記対象画像に含まれる文字を記述するための特定のフォントを示す特定のフォント情報であって、前記プリンタが解釈不可能である前記特定のフォント情報を含む、請求項1から9のいずれか一項に記載のプリンタ。
- 前記第1のデータフォーマットは、PDF(Portable Document Formatの略)であり、
前記第2のデータフォーマットは、PWG(Printer Working Groupの略)ラスタである、請求項1から10のいずれか一項に記載のプリンタ。 - プリンタのためのコンピュータプログラムであって、
前記プリンタのコンピュータを、以下の各部、即ち、
サーバから、前記プリンタの通信インターフェースを介して、対象画像を表わす第1の画像データであって、第1のデータフォーマットを有する前記第1の画像データを受信する第1の受信部と、
前記サーバから、前記通信インターフェースを介して、前記対象画像を表わす第2の画像データであって、前記第1のデータフォーマットとは異なる第2のデータフォーマットを有する前記第2の画像データを受信する第2の受信部と、
前記第1の画像データを利用して、前記対象画像の印刷を前記プリンタの印刷実行部に実行させるための第1の印刷データを生成することを試行する第1の生成部と、
前記第1の印刷データの生成に成功する場合に、生成済みの前記第1の印刷データを利用して、前記対象画像の印刷を前記印刷実行部に実行させる第1の印刷制御部と、
前記第1の画像データが特定情報を含むことに起因して前記第1の印刷データの生成に失敗する場合に、前記特定情報を含まない前記第2の画像データを利用して、前記対象画像の印刷を前記印刷実行部に実行させるための第2の印刷データを生成する第2の生成部と、
前記第1の印刷データの生成に失敗する場合に、生成済みの前記第2の印刷データを利用して、前記対象画像の印刷を前記印刷実行部に実行させる第2の印刷制御部と、
として機能させるコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019034549A JP2020138391A (ja) | 2019-02-27 | 2019-02-27 | プリンタ、及び、プリンタのためのコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019034549A JP2020138391A (ja) | 2019-02-27 | 2019-02-27 | プリンタ、及び、プリンタのためのコンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020138391A true JP2020138391A (ja) | 2020-09-03 |
Family
ID=72264185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019034549A Pending JP2020138391A (ja) | 2019-02-27 | 2019-02-27 | プリンタ、及び、プリンタのためのコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020138391A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021041654A (ja) * | 2019-09-13 | 2021-03-18 | キヤノン株式会社 | 印刷装置、および印刷装置の制御方法ならびにプログラム |
-
2019
- 2019-02-27 JP JP2019034549A patent/JP2020138391A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021041654A (ja) * | 2019-09-13 | 2021-03-18 | キヤノン株式会社 | 印刷装置、および印刷装置の制御方法ならびにプログラム |
JP7328095B2 (ja) | 2019-09-13 | 2023-08-16 | キヤノン株式会社 | 印刷装置、および印刷装置の制御方法ならびにプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8159707B2 (en) | Method and system for unified batch job processing | |
JP6402668B2 (ja) | 多機能機 | |
JP2007034846A (ja) | 印刷システム、情報処理装置、印刷装置及びそれらの制御方法、プログラム | |
US20120069391A1 (en) | Printing apparatus, printing system, and method of controlling printing apparatus | |
JP2000158774A (ja) | ネットワ―クプリントシステム及びそのプリントエラ―時の待機作業処理方法 | |
JP6178567B2 (ja) | 画像形成装置及びその制御方法とプログラム、及び情報処理システム | |
JP2014026562A (ja) | 印刷設定装置、プログラムおよび画像形成システム | |
US20200089440A1 (en) | Server system that improves availability of a plurality of printers, print controller, information processing apparatus, and print service system | |
JP5170141B2 (ja) | プリンタ及び端末装置 | |
JP2012231313A (ja) | 情報処理システム、情報処理システムの制御方法及びプログラム | |
JP2020138391A (ja) | プリンタ、及び、プリンタのためのコンピュータプログラム | |
US8665460B2 (en) | Print system, printing apparatus, printing method and printing program | |
JP6590056B2 (ja) | 多機能機 | |
JP7351126B2 (ja) | 情報処理システム、サーバ装置及び情報処理方法 | |
JP4938317B2 (ja) | 印刷文書登録プログラム及び記録媒体 | |
JP2020135136A (ja) | 印刷システム、プリンタ、及び、プリンタのためのコンピュータプログラム | |
US11233916B2 (en) | Printer and non-transitory computer-readable recording medium storing computer readable instructions for printer | |
JP2020152074A (ja) | プリンタ、及び、プリンタのためのコンピュータプログラム | |
JP7363509B2 (ja) | 印刷処理システム | |
JP2020155046A (ja) | プリンタ、及び、プリンタのためのコンピュータプログラム | |
JP7388218B2 (ja) | プリンタ及びプリンタのためのコンピュータプログラム | |
JP6996174B2 (ja) | 端末装置のためのコンピュータプログラムと端末装置 | |
JP2019117539A (ja) | 通信システム、端末装置のためのコンピュータプログラム、及び、サーバのためのコンピュータプログラム | |
JP7306016B2 (ja) | 通信装置、及び、通信装置のためのコンピュータプログラム | |
JP4631954B2 (ja) | ウェブサーバ機能を有するプリンタ |