<<通信システム>>
図1は、本発明の一実施形態に係る通信システムの全体構成図である。以下、通信端末を単に端末と表す。図1に示されているように、通信システム1は、端末10A,10B、画像形成装置20A,20B、およびクラウドサービス50によって構築されている。端末10A,10Bのうち任意のものを端末10と表す。画像形成装置20A,20Bのうち任意のものを画像形成装置20と表す。通信システム1において、端末10、画像形成装置20、およびクラウドサービス50の数は、特に限定されない。
端末10は、通信機能を有する情報処理装置であり、例えば、タブレット、スマートフォンなどのスマートデバイス、ノートPC(Personal Computer)、テレビ会議端末、電子黒板、又はカメラである。端末10Aは、例えば、ノートPCであり、端末10Bはスマートデバイスである。
画像形成装置20は、画像処理機能および通信機能を有する情報処理装置であり、例えば、MFP(Multifunction Peripheral/Printer/Product)、ファクシミリ、スキャナ、又はプリンタである。画像形成装置20Aは、例えば、ファクシミリ、スキャナ、およびプリンタ機能を有するMFPであり、画像形成装置20Bは、例えば、プリンタである。
クラウドサービス50は、通信機能を有する情報処理装置である。クラウドサービス50は、端末10又は画像形成装置20からの要求に基づいて画像形成装置20へ文書ファイルを送信するサーバとして機能する。
端末10および画像形成装置20は、直接、あるいは無線LANルータ2Rを介して、LAN2L(Local Area Network)に接続している。端末10および画像形成装置20は、LAN2Lからインターネット2Iに接続し、インターネット2I上のクラウドサービス50に接続する。LAN2Lおよびインターネット2Iのうち任意のものを通信ネットワーク2と表す。通信ネットワーク2の全部又は一部には、Wi−Fi(Wireless Fidelity)などの無線による通信が行われる箇所があってもよい。
端末10、およびクラウドサービス50は、任意のアプリケーション又はドライバを用いて、PDF(Portable Document Format)ファイルなどのランダムアクセス形式の文書ファイルを生成する。ランダムアクセス形式の文書ファイルは、各ページのデータにランダムアクセス可能なファイル構造を有する。端末10およびクラウドサービス50は、PDFファイルを含む印刷要求を画像形成装置20へ送信する。また、画像形成装置20Aは、スキャナ機能により画像を読み取り、任意のアプリケーション又はドライバを用いてPDFファイルを生成する。画像形成装置20は、端末10、クラウドサービス50、又は他の画像形成装置20によって送信されたPDFファイルを受信して印刷処理を実行する。
<<ハードウェア構成>>
図2は、一実施形態に係る端末のハードウェア構成図である。図2を用いて、端末10のハードウェア構成について説明する。
端末10は、CPU101(Central Processing Unit)と、ROM102(Read Only Memory)と、RAM103(Random Access Memory)と、SSD104(Solid State Drive)と、メディアI/F105(Interface)と、ネットワークI/F107と、ユーザI/F108と、バスライン110と、を有する。
CPU101は、端末10全体の動作を制御する。ROM102は、端末10上で動作する各種プログラムおよびアプリケーションを記憶する。以下、アプリケーションを単にアプリと表す。RAM103は、CPU101のワークエリアとして使用される。SSD104は、各種プログラム又はアプリで利用されるデータを記憶する。メディアI/F105は、外部メモリなどの記録メディア106に記憶されている情報を読み出したり、記録メディア106に情報を書き込んだりするためのインタフェースである。ネットワークI/F107は、通信ネットワーク2を介して他の装置と通信するためのインタフェースである。ユーザI/F108は、ユーザによる操作入力を受け付けるためのインタフェースである。ユーザI/F108は、例えば、タッチパネル機能を搭載した液晶表示装置又は有機EL(Electro Luminescence)表示装置、もしくはキーボードおよびマウスである。バスライン110は、上記各構成要素を図2に示されているように電気的に接続するためのアドレスバス又はデータバスである。
クラウドサービス50のハードウェア構成は、端末10のハードウェア構成と同様であるので説明を省略する。
図3は、一実施形態に係る画像形成装置20のハードウェア構成図である。図3を用いて、画像形成装置20のハードウェア構成について説明する。
画像形成装置20のコントローラ200は、CPU201と、ROM202と、RAM203と、NVRAM204(Non−volatile RAM)と、HDD205(hard Disk Drive)と、ネットワークI/F206と、エンジンI/F207と、パネルI/F208と、スキャナI/F209と、メディアI/F215と、バスライン210と、を有する。また、画像形成装置20は、プロッタエンジン211と、操作パネル212と、スキャナエンジン213と、を有する。
CPU201は、画像形成装置20全体の動作を制御する。ROM202は、画像形成装置20上で動作する各種プログラムおよびアプリを記憶する。RAM203は、CPU201のワークエリアとして使用される。NVRAM204およびHDD205は、各種プログラム又はアプリで利用されるデータを記憶する。ネットワークI/F206は、通信ネットワーク2を介して他の装置と通信するためのインタフェースである。エンジンI/F207は、プロッタエンジン211と接続するためのインタフェースである。パネルI/F208は、操作パネル212と接続するためのインタフェースである。スキャナI/F209は、スキャナエンジン213と接続するためのインタフェースである。メディアI/F215は、外部メモリなどの記録メディア216に記憶されている情報を読み出したり、記録メディア216に情報を書き込んだりするためのインタフェースである。バスライン210は、上記各構成要素を図3に示されているように電気的に接続するためのアドレスバス又はデータバスである。
プロッタエンジン211は、記録媒体への画像の印刷処理において、画像形成装置20のプロッタの動作を制御する。プロッタは、任意の印刷装置であり、インクジェット方式の場合、例えば、インクジェットヘッドであり、レーザープリンタ方式の場合、例えば、感光体、レーザー照射装置、あるいは転写装置である。操作パネル212は、ユーザから設定、条件、指示などの入力を受け付けるためのパネルであり、例えば、タッチパネル機能を搭載した液晶表示装置又は有機EL表示装置、もしくはキーボードおよびマウスである。スキャナエンジン213は、画像形成装置20におけるスキャナの動作を制御する。なお、スキャナは、特に限定されないが、例えば、圧版、ADF(Auto Document Feeder)、および撮像素子を有する公知のものが例示される。
<<機能構成>>
次に、一実施形態に係る画像形成装置20の機能構成について説明する。図4は、一実施形態に係る画像形成装置20の機能ブロック図である。
画像形成装置20は、画像読取部2100と、印刷部2200と、通信部2300と、表示部2400と、を有する。これら各部は、図3に示されている各構成要素のいずれかが、ROM202からRAM203上に展開された画像形成装置20用のプログラム又はアプリに従ったCPU201からの命令によって動作することで実現される機能である。また、画像形成装置20は、ROM202、RAM203、NVRAM204、又はHDD205により構築される記憶部2000を有する。
画像読取部2100は、CPU201からの命令に基づいて、スキャナによる画像の読み取り、および読み取られた画像からファイルを生成する処理を実行する。画像読取部2100は、読取制御部2110と、画像生成部2120とを有する。
読取制御部2110は、CPU101からの命令に基づくスキャナエンジン213の動作により、画像を読み取るための制御を行う。
画像生成部2120は、CPU201からの命令により、読み取られた画像からPDFファイルを生成する。
印刷部2200は、CPU201からの命令に基づいて、ファイルに基づく印刷処理を実行する。印刷部2200は、ページデータ生成部2210と、印刷データ処理部2220と、を有する。
ページデータ生成部2210は、CPU201からの命令に基づいて、一つの複数ページのPDFファイルから、複数のページごとのPDFファイルを生成する。
印刷データ処理部2220は、CPU101からの命令に基づくプロッタエンジン211の動作により、画像を印刷するための制御を行う。
通信部2300は、CPU201からの命令、およびネットワークI/F206の処理により、通信ネットワーク2を介した他の装置との通信を制御する。
表示部2400は、CPU201からの命令により、操作パネル212のディスプレイから画像を表示する制御を行う。
<<処理>>
続いて、画像形成装置20における処理について説明する。図5は、画像を印刷する処理の一例を示すシーケンス図である。
端末10のSSD104には、端末10において生成された複数ページのPDFファイルが記憶されている。端末10は、ユーザによる操作入力に応じて、印刷要求を、通信ネットワーク2を介して画像形成装置20へ送信する(ステップS11)。印刷要求には、SSD104から読み出されたPDFファイル、ならびに印刷設定として、印刷するページを特定するための情報、あるいは2−in−1などの割り付けを示す情報などが含まれている。
なお、印刷要求の送信元は、端末10に限定されない。印刷要求の送信元は、クラウドサービス50であってもよい。また、画像形成装置20Aは、スキャナで読み込まれた画像に基づいてPDFファイルを生成し、このPDFファイルを他方の画像形成装置20Bへ印刷要求に含めて送信してもよい。印刷の形式は、特に限定されず、例えば、AirPrint(登録商標)、又はMopria(登録商標)などのモバイルプリントであってもよいし、ftpやlprなどのプロトコルを利用して直接PDFファイルを画像形成装置20に送信するダイレクトプリントであってもよいし、GoogleCloudPrint(登録商標)などのクラウドプリントであってもよい。また、印刷形式はメディアプリントでもよい。この場合、ステップS11の処理は、画像形成装置20に接続されたUSB(Universal Serial Bus)メモリなどの記録メディア216から、画像形成装置20へのPDFファイルを送信する処理に置き換えられる。
画像形成装置20の通信部2300は、端末10によって送信された印刷要求を受信する。通信部2300は、印刷要求に含まれるPDFファイルの受信を開始すると、受信されたPDFファイルを、バッファとしてRAM203に順次記憶(バッファリング)する。画像形成装置20は、バッファリングの完了を待機することなく、以下の印刷処理を継続する。
通信部2300は、印刷を開始するための印刷開始通知をページデータ生成部2210へ送信する(ステップS12)。
ページデータ生成部2210は、印刷開始通知を受信すると、RAM203に記憶されている受信バッファから、ページごとに分割されたPDFファイルを生成可能であるか判断する(ステップS13)。ページごとに分割されたPDFファイルとは、印刷要求に含まれる複数ページのPDFファイルから、印刷する各ページのデータが分割された各PDFファイルを示す。例えば、印刷要求に含まれるPDFファイルのページ数が10であり、全ページ印刷する場合、ページごとに分割されたPDFファイルは、10個のページごとのPDFファイルを示す。以下、ページごとに分割されたPDFファイルを、分割ファイルと表す。
分割ファイルの生成可否を説明するにあたり、PDFファイルの構造について説明する。図6は、PDFファイルの構造の一例を示す概念図である。PDFファイルは、国際標準化機構(ISO: International Organization for Standardization)で管理されているオープンスタンダードに準拠して、先頭から順に、ヘッダPH、ボディPB、相互参照表PR(位置情報の一例)、およびトレイラーPTを有する。
ヘッダPHには、PDFのバージョン情報などが含まれる。
ボディPBには、オブジェクト番号ごとに、ドキュメントカタログ、ページ情報、各ページのオブジェクト情報などが定義されている。オブジェクト番号は、オブジェクトの識別子であり、例えば、「1 0 obj」のように、参照番号(x)、生成番号(y)、および「obj」を並べてなる。ドキュメントカタログは、オブジェクト階層のルート(最上位)である。ページ情報は、各ページのオブジェクト情報への参照などが含まれる。各ページのオブジェクト情報には、各ページを描画するためのデータが含まれる。
相互参照表PRには、ボディPBに定義されている各オブジェクト番号のオブジェクトのアドレス情報(位置情報)が含まれている。アドレス情報は、オブジェクトがヘッダPHの先頭から何バイト目かを示すオフセット情報である。画像形成装置20は、相互参照表PRに基づいて、オブジェクトの位置を特定し、アクセスする。
トレイラーPTには、相互参照表PRの位置を示すアドレス情報(startxref)、ドキュメントカタログのオブジェクト番号(Root)、およびPDFファイルの作成日時への参照(Info)などが含まれている。
PDFファイルの構造上、画像形成装置20は、ドキュメントカタログのオブジェクト番号をトレイラーPTから特定し、このオブジェクト番号に対応するアドレス情報を相互参照表PRから特定することで、ドキュメントカタログにアクセスする。すなわち、画像形成装置20による通常の動作では、PDFファイルのトレイラーPTまでを読み込んだ上で、PDFファイルに係る画像処理を開始する。
続いて、ステップS13の分割ファイルの生成可否を判断する処理の具体例について説明する。図7は、一実施形態に係るPDFファイルの構造を示す概念図である。
以下、ページの各種情報を定義したオブジェクトを単にページのオブジェクトと表す。PDFファイルのボディPBには、ページのオブジェクトがランダムに配置され得る。これに対し、図7の(A)乃至(D)の本実施形態のPDFファイルによると、ボディPBにおいて、各ページのオブジェクトが、シーケンシャルに配置される。
本実施形態では、ページ分割できると判断するために意図的に付与された情報を「判断情報」という。また、所定のページに含まれるオブジェクト等のデータの位置を特定するための情報を「特定情報」という。特定情報と判断情報は共通する場合がある。特定情報のうち、一部の情報を「境界情報」という。
図7の(A)および(B)のPDFファイルのヘッダPHiには、分割ファイルの生成の可否を判断するための判断情報として、分割ファイルを生成可能であることを示す「%Enable Page Split Mode」が付されている。また、図7の(A)および(B)のPDFファイルのボディPBには、各ページのオブジェクトが記録された領域の境界に、境界情報が付されている。図7の(A)のPDFファイルには、境界情報「%Page Object」が、各ページのオブジェクトの前に付されており、図7の(B)のPDFファイルには、境界情報「%End Page」が、各ページのオブジェクトの後に付されている。%Page1 Objectおよび%End Pageは判断情報かつ特定情報である。また、%Page1 Objectと%End Pageはページ間に挿入されている情報という意味で境界情報である。
図7の(C)のPDFファイルのヘッダPHiには、判断情報かつ特定情報として、ボディPBにおける各ページのオブジェクトの位置を示すアドレス情報「%Page1 = xxxx」「%Page1 = yyyy」がオフセット情報として付されている。
また、図7の(D)のPDFファイルのボディPBには、各ページのオブジェクトが記録された領域の端部に、PDF言語に準拠したコマンド「/Type/Page」が境界情報として配置されている。また、「/Type/Page」はオブジェクトの位置を特定する情報となるため特定情報でもある。
ページデータ生成部2210は、PDFファイルのトレイラーPTを参照することなく、受信バッファにおけるヘッダPHiの部分を読み込んだ時点で、判断情報に基づいて、分割ファイルを生成可能であると判断することができる。
ステップS13において、分割ファイルを生成可能ではないと判断された場合、ページデータ生成部2210は、端末10から送られてきたPDFファイルの受信が完了するのを待って、受信されたバッファ全体をPDFファイルとして記憶部2000に記憶する。続いて、ページデータ生成部2210は、PDFファイルを分割することなく、全体のPDFファイルを印刷データ処理部2220へ送信する(ステップS14)。
印刷データ処理部2220は、受信された全体のPDFファイルを言語解析し、各ページを描画するためのデータにランダムアクセスしながらフレームメモリにページごとの画像を描画することで印刷画像を生成する。印刷データ処理部2220は、印刷画像を含む印刷指示をプロッタエンジン211へ送信して、印刷処理を実行させる(ステップS15)。プロッタエンジンは印刷処理の指示を受けると、印刷画像を形成し、排紙する処理を繰り返す。
ステップS13において、分割ファイルを生成可能であると判断された場合、ページデータ生成部2210は、PDFファイルのうち、各ページのオブジェクトが受信されるたびに、ページごとの分割ファイルを生成する(ステップS21)。
図8は、分割ファイルを生成する処理の一例を示すフロー図である。図8を用いてステップS21の処理を詳細に説明する。なお、ステップS21の処理は、端末10から送られてきたPDFファイルの受信の完了を待つことなく実行される。
RAM203には、通信部2300によって受信されたPDFファイルの一部が、バッファとして順次記憶される。図9は、PDFファイルの構造を示す概念図である。図9の(A)は、バッファとして記憶されているPDFファイルの一部を示す概念図である。ページデータ生成部2210は、バッファのPDFファイルをレコードごとに読み込む(ステップS21−1)。レコードとは1項目をいい、図9では1行が1レコードである。
ページデータ生成部2210は、読み込まれたレコードが、相互参照表PR、ドキュメントカタログPBc、ページ情報PBp、又はトレイラーPTに該当するか判断する(ステップS21−2)。
ステップS21−2において、レコードが、相互参照表PR、ドキュメントカタログPBc、ページ情報PBp、又はトレイラーPTのいずれかに該当する(YES)と判断された場合、ページデータ生成部2210は、読み込まれたレコードを削除する(ステップS21−3)。相互参照表PR、ドキュメントカタログPBc、ページ情報PBp、およびトレイラーPTの各レコードは、後述の処理で、分割ファイルを作成する際に、新たに生成されるためである。
ステップS21−2において、該当しない(NO)と判断された場合、ページデータ生成部2210は、読み込まれたレコードを、記憶部2000に記憶する(ステップS21−4)。
ページデータ生成部2210は、ステップS21−1乃至S21−4の処理を、1ページ分のレコード、すなわちオブジェクトを読み終えるまで繰り返す。なお、ページデータ生成部2210は、ボディPBにおける境界情報を読み込むことで(図7の(A),(B))、あるいは、ヘッダに含まれた特定情報(図7の(C))に基づいて、1ページ分のレコードを読み終えたか判断することができる。
上記のループ処理が完了した時点で、記憶部2000にはPDFファイルから抽出された1ページ分のレコードのうち、相互参照表PR、ドキュメントカタログPBc、ページ情報PBp、又はトレイラーPTが除かれた各レコード、すなわち1ページを描画するためのデータを示す各レコード、すなわちオブジェクトが記憶される。ページデータ生成部2210は、記憶部2000に記憶されたレコードを、分割ファイルにおけるボディPBとする。図9の(B)は、ループ処理後に生成される分割ファイルのボディPBを示す概念図である。
図9の(B)のボディには、ステップS21−3の処理で読み捨てられる相互参照表、ドキュメントカタログ、ページ情報、およびトレイラーなどが含まれない。このため、図9の(B)のボディPBを分割ファイルとして、印刷データ処理部2220に送信しても、印刷データ処理部2220は、印刷処理を実行できない。そこで、ページデータ生成部2210は、図9の(B)のボディPBに、必要な情報を追加して、PDF言語仕様に基づいたPDFファイルを完成させる。
まず、ページデータ生成部2210は、ヘッダPHを生成して、生成過程にある分割ファイルの先頭に追加する。追加されるヘッダPHには、PDFのバージョン情報などの定型文が含まれる。
ページデータ生成部2210は、分割ファイルにおいて、印刷ジョブに必要なページ情報Bpを生成する。ページ情報のオブジェクト番号には、予め定められた値が割り当てられる。ページ情報には、ページ数と、ページを描画するためのオブジェクトへの参照が含まれる。分割ファイルには、1ページ分を描画するためのデータが含まれているのでページ数は1である。オブジェクトへの参照は、分割ファイルに含まれるページを描画するためのオブジェクトのオブジェクト番号である。
ページデータ生成部2210は、分割後のPDFファイルにおいて、印刷ジョブに必要なジョブ情報としてドキュメントカタログを生成する。ドキュメントカタログのオブジェクト番号は予め定められた値が割り当てられる。印刷ジョブに必要なジョブ情報には、ページ情報のオブジェクトへの参照が含まれる。上記のように、ページ情報のオブジェクトのオブジェクト番号は予め定められているので、ページ情報への参照は予め定められた値となる。
図9の(C)は、生成過程にある分割ファイルを示す概念図である。図9の(C)に示すように、ページデータ生成部2210は生成されたドキュメントカタログ、およびページ情報を、ボディPBの後端に追加する(ステップS21−5)。
続いて、ページデータ生成部2210は、相互参照表PRを生成して、生成過程にある分割ファイルにおけるボディPBの後に追加する(ステップS21−6)。相互参照表PRは、ボディPBにおける各オブジェクトの位置をオフセット情報として表したアドレス情報である。ページデータ生成部2210は、先に生成したボディPBから、各オブジェクトを検索し、検索された各オブジェクトの位置を示すアドレス情報をオフセット情報として記述することで、相互参照表PRを生成する。図9の(D)は、ヘッダPHおよび相互参照表PRが追加されたPDFファイルを示す概念図である。
ページデータ生成部2210は、分割ファイルにおけるトレイラーを生成する。トレイラーには、相互参照表PRのサイズおよびドキュメントカタログへの参照が含まれる。相互参照表PRのサイズは、ステップS21−6における相互参照表PRの生成結果に基づいて算出される。ドキュメントカタログへの参照は、予め定められたドキュメントカタログのオブジェクト番号が用いられる。
図9の(E)は、分割ファイルを示す概念図である。図9の(E)に示すように、ページデータ生成部2210は生成されたトレイラーPTを、生成過程にある分割PDFファイルにおける相互参照表PRの後に追加することで、PDF言語に従った分割ファイルを完成させる(ステップS21−7)。図9(E)と同様のPDFファイルがページ数だけ作成される。
1ページ分の分割ファイルが完成してからの処理について、図5に戻って説明を続ける。ページデータ生成部2210は、生成された分割ファイルを印刷データ処理部2220へ送信する(ステップS22)。
印刷データ処理部2220は、受信された分割ファイルを言語解析し、ページを描画するためのオブジェクトにアクセスしながらフレームメモリに1ページ分の画像を描画することで印刷画像を生成する。印刷データ処理部2220は、印刷画像を含む印刷指示をプロッタエンジン211へ送信して、印刷処理を実行させる(ステップS23)。プロッタエンジンは印刷処理の指示を受けると、用紙に1ページの印刷画像を転写し、排紙する。
ページデータ生成部2210は、印刷対象のページのデータのうち、分割ファイルの生成が完了していない未処理のページのデータがバッファに含まれているか判断する。未処理のページのデータが含まれていると判断された場合には、画像形成装置20は、ステップS21乃至S23の処理を繰り返す。このようにして、ステップS21乃至S23の処理を繰り返すことで、印刷する各ページを描画するための分割ファイルが生成され、1ページずつ印刷処理が実行される。
印刷対象のすべてのページの印刷処理が完了してから、ページデータ生成部2210は、バッファとして残っている情報を削除する(ステップS24)。これにより、バッファがクリアされた状態で、次のデータの受信待ち状態に遷移するので、バッファに必要な容量は、1ページ分の受信データで足りることになる。
図10は、PDFファイルの印刷処理に要する時間を示す概念図である。図10の各図において、横軸の左端は、画像形成装置20がPDFファイルの受信を開始する時点を示し、横軸に対し右へ進むほど、PDFファイルの受信を開始してからの時間が経過していることを示す。PDFファイルの印刷処理には、PDFファイルを受信してバッファリングするスプール処理、言語解析するパース処理、画像を形成するレンダリング処理、画像を印刷して排紙するフィード処理が含まれる。
図10の(A)は、複数ページのPDFファイルを受信して印刷するときの各処理に要する時間を示す概念図である。複数ページのPDFファイルを印刷する場合には、PDFファイルのスプール処理が律速となって、PDFファイルの印刷に長い時間を要する。
例えば、100kBの1ページのPDFファイルのスプール処理に0.1秒要する場合、100MBの1000ページのPDFファイルのスプール処理には、100秒(=0.1×1000)秒要する。よって、100秒後に1ページ目のパース処理が開始される。画像形成装置20の処理速度が50PPMであるとすると、1000ページの印刷には、1200秒要することになる。スプール処理からフィード処理までのジョブ全体が完了するまでの時間は、1300秒(=100+1200)である。
さらに、この場合、画像形成装置20は、バッファリングのため、少なくとも100MBのサイズのストレージを要する。100MBのサイズのストレージを備えていない画像形成装置では、スプール処理を実行できないため、印刷ジョブはキャンセルされる。
図10の(B)は、複数ページの線形化PDFファイルを受信して印刷するときの各処理に要する時間を示す概念図である。線形化PDFファイルを印刷する場合、画像形成装置20は、PDFファイルの全体を読み込む前に1ページ目を描画するためのデータを特定できるので、1ページ目のデータのスプール処理が完了してから、1ページ目の印刷処理を実行できる。しかし、画像形成装置20は、PDFファイルの残りの全部を読み込むまで、2ページ以降の各ページを描画するためのデータを特定できないため印刷処理を開始できないこのため、PDFファイルの残りの部分のスプール処理が律速となり、PDFファイルの全体の印刷には長い時間を要する。
図10の(C)は、1ページのPDFファイルを複数印刷するときの各処理に要する時間を示す概念図である。1ページのPDFファイルを複数印刷する場合には、PDFファイルのスプール処理に要する時間が短く、スプール処理が律速とならないので、全体の印刷時間が短縮される。
例えば、100kBの1ページのPDFファイルを1000個、印刷する場合に、画像形成装置20は、1ページ目のPDFファイルを受信してスプール処理したのち、連続して印刷処理を実行できる。50PPMの画像形成装置20において、1ページ目のPDFファイルのスプール処理に0.1秒要し、1000個のおPDFに係る画像を印刷するのに1200秒要する場合、印刷ジョブ全体に要する時間は、1200.1秒である。
さらに、画像形成装置20は、少なくとも100kBのサイズのストレージを有していれば、印刷ジョブを実行できる。すなわち、画像形成装置20のストレージの容量が小さい場合でも、印刷ジョブがキャンセルされることが少なくなる。
<<<実施形態の変形例A>>>
続いて、実施形態の変形例Aについて、上記の実施形態と異なる点について説明する。実施形態の変形例Aでは、PDFファイルのヘッダに、分割ファイルを生成可能であるかを特定するための判断情報が付されていない場合の処理例について説明する。例えば、原稿がスキャナにより読み取られた場合、一般に判断情報は付与されない。しかし、以下で説明するように、判断情報が付与されていない場合でも、分割ファイルを作成することができる。
図11は、ページ分割モードの受付画面の一例である。画像形成装置20は、操作パネル212におけるディスプレイに、図11に示す受付画面を表示させて、ページ分割モードへの移行するための入力をユーザから受け付ける。ページ分割モードは、複数ページのPDFファイルから分割ファイルを自動で作成して、印刷するモードである。
図12は、PDFファイルの構造を示す概念図である。図12の(A)は、分割ファイルを生成可能なPDFファイルの構造の一例を示す。図12の(A)のように、PDFファイルのボディPBには、ページ情報として、参照先のオブジェクト番号が含まれている。この場合、例えば、「7 0 obj」のような参照先のオブジェクトまでをあるページのオブジェクトPB1とみなし、オブジェクトPB1の次のオブジェクトから次のページのオブジェクトPB2とみなすことができる。
図12の(B)は、分割ファイルを生成不可能なPDFファイルの構造の一例を示す。PDFファイルのボディPBはシーケンシャルでなくてもよいため、図12の(B)のように、ページ情報として、先出のオブジェクトが参照されることがある。この場合、先出のオブジェクトが前のページのオブジェクトとして処理され、バッファとして残らない場合には、画像形成装置20は、参照先のオブジェクトにアクセスすることができない。したがって、一般に、先出のオブジェクトを参照するページがある場合、分割ファイルを生成することが不可能と判断してもよいし、さらに、バッファを検索しても先出のオブジェクトがない場合に分割ファイルを生成することが不可能と判断してもよい。また、所定のページのデータより後ろ(後出)のオブジェクトを参照するようなケースも分割不可と判断してもよい。
このように、画像形成装置20のページデータ生成部2210は、PDFファイルに判断情報が含まれない場合でも、バッファのデータを読み込みながら、分割ファイルを生成可能であるか判断することができる。
図13は、実施形態の変形例Aにおいて、分割ファイルを生成する処理を示すフロー図である。図13において、図8のフロー図と同じ処理には同じ符号が付されている。
ページデータ生成部2210は、ステップS21−2において読み込まれたレコードを、読み捨てずに記憶部2000に記憶する(ステップS21−A1)。
ページデータ生成部2210は、ステップS21−2において読み込まれたレコードに、例えば、図12の(A)の「70R」のように、参照先のオブジェクト番号が含まれていれば、そのオブジェクト番号を保持する(ステップS21−A2)。
ページデータ生成部2210は、読み込んだPDFファイルのバッファ解析を繰り返し、保持された参照先のオブジェクト番号のオブジェクトまでを1ページのオブジェクトと判断する。読み込んだ範囲に図12の(B)に示すような構造が含まれていなければ、ページデータ生成部2210は、分割ファイルを生成可能と判断し(ステップS21−A3のYES)、読み込んだレコードのうち、ページを描画するためのオブジェクトに基づいて分割ファイルを生成し、印刷処理を実行する。分割ファイルを生成し、印刷する処理は上記の実施形態と同様である。
読み込んだファイルにおいて図12の(B)のような構造が含まれていた場合、ページデータ生成部2210は、分割ファイルを生成できないと判断する(ステップS21−A3のNO)。この場合、画像形成装置20は、印刷ジョブをキャンセルする(中止する)か、PDFファイルのすべてが受信されるのを待って、記憶部2000にバッファとして記憶されたPDFファイルを用いて印刷処理を実行する。この処理は、上記実施形態のステップS14と同様である。したがって、途中のページで分割ファイルを作成できないと判断された場合は、いったん、印刷を中止して、記憶手段に記憶されたファイルを使って印刷を再開(継続)することができる。この場合、未排紙のページから印刷を再開する。
なお、読み込んだPDFファイルに図12の(B)のような構造が含まれている場合でも、参照先のオブジェクトが記憶部2000に記憶されていれば、ページデータ生成部2210は、記憶部2000に残されている参照先のオブジェクトを、生成過程の分割ファイルのボディPBに追加することで、分割ファイルを生成し、処理を継続してもよい。
<<<実施形態の変形例B>>>
続いて、実施形態の変形例Bについて、上記の実施形態と異なる点について説明する。図14は、画像を印刷する処理の一例を示すフロー図である。図14において、図8のフロー図と同じ処理には同じ符号が付されている。
実施形態の変形例Bでは、画像形成装置20は、設定された印刷単位ごとに、ステップS21−1乃至S21−4のループ処理を繰り返す。設定された印刷単位は、端末10から画像形成装置20へ送信される印刷要求に含まれている。例えば、画像形成装置20において印刷するページが1ページ目と3ページ目に設定されている場合、画像形成装置20は、PDFファイルにおける1ページ目と3ページ目に対応するオブジェクトに関してループ処理を繰り返し、2ページ目のオブジェクトは読み飛ばす。この場合、例えば、画像形成装置20において受信されたPDFファイルが図7の(A)であれば、「%Page1 Object」に追随するオブジェクトについてループ処理が実行された後、「%Page2 Object」に追随するオブジェクトが読み飛ばされて、「%Page3 Object」に追随するオブジェクトについてループ処理が実行される。
また、例えば、画像形成装置20において2−in−1、すなわち2ページを1枚に印刷する設定がされている場合、ページデータ生成部2210は、図7の(A)のPDFファイルについて、1,2ページ目の内容を含むPDFファイルと3ページ目の内容を含むPDFファイルとを生成する。すなわち、ページデータ生成部2210は、「%Page1 Object」に追随するオブジェクト、および「%Page2 Object」に追随するオブジェクトに基づいて、1つのPDFファイルを生成し、「%Page3 Object」に追随するオブジェクトに基づいて、1つのPDFファイルを生成する。
つまり、「分割ファイル」は1ページ=1ファイルとは限らず、ファイル数=ページ数とも限らない。2−in−1の場合は、2ページ=1ファイルとすることで、パース処理およびレンダリング処理の単位(用紙)と一致する。また、印刷するページが指定されていた場合、そのページのみのPDFファイルを生成した方が効率的となる。ページデータ生成部2210は1枚の用紙(片面)で印刷される1つ以上のページで1つのファイルを生成する。したがって、分割ファイルには、決定したページ数のページが含まれる。
また、ページデータ生成部2210は両面分のページ数を分割されたファイルに含めるページ数に決定してもよい。また、集約印刷の場合に1つのファイルに1ページを含めると決定してもよい(例えば、2−in−1のA4縦の場合、上下で画像が分割されるので、それぞれの領域に並列して描画処理する)。
図15は、実施形態の変形例Bにおいて生成されるページ情報の一例を示す概念図である。ページデータ生成部2210は、ステップS21−6において、分割ファイルの印刷ジョブに必要なページ情報PBpを生成する。ページ情報には、ページ数とページを描画するためのオブジェクトへの参照が含まれる。2−in−1において、2ページごとに分割されたPDFファイルにおけるページ数は2である。また、オブジェクトへの参照には、設定に応じて、2ページ分のオブジェクトにかかるオブジェクト番号が記録される。
<<<実施形態の変形例C>>>
続いて、実施形態の変形例Cについて、上記の実施形態と異なる点を説明する。実施形態の変形例Cでは、本実施形態のPDFファイルの生成方法について説明する。原稿がスキャナにより読み取られた場合、上記のように一般に判断情報は付与されない。判断情報が付与されていない場合でも、図12,図13にて説明したように分割ファイルを作成するか否かを判断することができるが、判断情報が付与されていることでより確実に判断が可能になる。
図16は、分割可能なPDFファイルを生成するモードへの移行を受け付ける受付画面の一例である。画像形成装置20は、操作パネル212におけるディスプレイに、図16の受付画面を表示させて、分割可能なPDFファイルを生成するモードへの移行するための入力をユーザから受け付ける。
図17は、PDFファイルを生成する処理を示すフロー図である。画像形成装置20において、ADFにより供給された原稿がスキャナにより読み取られると、画像生成部2120は、分割可能なPDFファイルを生成するモードに設定されているか判断する(ステップS41)。
ステップS41においてYESと判断された場合、画像生成部2120は、予め定められた判断情報「%Enable Page Split Mode」を含むPDFファイルのヘッダPHiを生成する(ステップS42)。図18は、PDFファイルの構造を示す概念図である。図18の(A)は、判断情報を含むPDFファイルのヘッダPHiを示す概念図である。
続いて、画像形成装置20は、原稿の枚数分、以下のループ処理を繰り返す。ループ処理で、まず、読取制御部2110は、ADFから供給される1枚目の原稿の画像をスキャンして読み取る(ステップS43)。
画像生成部2120は、ステップS43で読み取られた画像に基づいて、PDF言語に従い、ページを描画するためのオブジェクトを生成する(ステップS44)。生成されたオブジェクトは、ステップS42で生成されたヘッダPHiの後にボディPBとして追加される。図18の(B)は、ページを描画するためのオブジェクトが追加された生成過程にあるPDFファイルを示す概念図である。
画像生成部2120は、境界情報として、予め定められたコメント「%End Page」をボディの終端に追加する(ステップS45)。図18の(C)は、ページ終端のコメントが追加された生成過程にあるPDFファイルを示す概念図である。なお、画像生成部2120は、ページのデータを構築するある特定のオブジェクト、例えば(/Page)を、必ずページ終端に並べ替えて配置することで、ページ順にオブジェクトが並んでいることがわかるボディを生成してもよい。
画像形成装置20は、原稿ごとに、ステップS43乃至S45の処理を繰り返す。このとき、ステップS44において、画像生成部2120は、新たに読み込まれたページを描画するためのオブジェクトを、コメント「%End Page」の後に追加する。図18の(D)は、ループ処理を2回繰り返した後に生成される生成過程にあるPDFファイルを示す概念図である。
すべての原稿に対するループ処理が完了したら、画像形成装置20は、生成されたPDFファイルに対し、ドキュメントカタログPBc、ページ情報PBp、相互参照表PR、およびトレイラーPTを追加する(ステップS46)。これらの情報の追加方法は、ステップS21−5乃至S21−7の処理と同様であるので説明を省略する。ステップS46の処理が完了すると、分割ファイルを生成可能な本実施形態のPDFファイルが完成する(図18の(E)参照)。
一方、ステップS41において、分割可能なPDFファイルを生成するモードではないと判断された場合、画像形成装置20は、スキャナによって読み込まれた画像に基づいて、シリアライズすることなく公知の方法によりPDFファイルを生成する(ステップS51)。
図10では1ページのPDFファイルを複数印刷することで全体の印刷時間が短縮されると説明した。本実施例では、画像形成装置20のCPU201がマルチコア環境である場合に、スプール処理とパース処理/レンダリング処理を並列に実行する画像形成装置20について説明する。なお、本実施例において「パース処理/レンダリング処理」という記載はパース処理とレンダリング処理のいずれかを意味する。パース処理とレンダリング処理は並列処理されないものとして説明するが、これらが並列処理されてもよい。
図21は、スプール処理とパース処理/レンダリング処理が並列に処理される場合のタイミング図の一例を示す図である。図21では、縦方向のスプール処理、パース処理、レンダリング、印刷と排紙、の各処理が、時間に対しどのように実行されるかが示されている。1つのマスが1ページ分の処理に対応している。
図21ではスプール処理がパース処理/レンダリング処理と非同期に実行されている。つまり、スプール処理とパース処理/レンダリング処理が同じ時間帯に実行されている。マルチコアであるためこのような並列処理が可能になる。シングルCPUではスプール処理とパース処理/レンダリング処理は並列して実行できないので、図10(c)では、スプール処理とパース処理/レンダリング処理は並列して実行できなかった。したがって、本実施例のようにマルチコアであることを利用すると、図10(c)よりもさらにPDFファイルの印刷に要する時間を短縮できる。
しかしながら、図21のような並列実行のスプール処理では、1ページずつPDFファイルがスプールされるわけではないので分割ファイルの全体を画像形成装置20が一時的に記憶しておかなければならない。すなわち、それだけの記憶容量が記憶手段(RAM203又はHDD205等)に必要となる。
そこで、記憶手段の空き容量と利用可能なCPUコアの状況によって「分割ファイル」を一時的に保持する上限のページ数を印刷データ処理部2220が決定することが有効になる。つまり、記憶手段の空き容量と利用可能なCPUコアの状況によって分割ファイルに含める上限のページ数を決定する。印刷データ処理部2220は表1のようなスプールページ数決定テーブルを参照して、「分割ファイル」を一時的に保持する上限のページ数を決定する。
表1はスプールページ数決定テーブルの一例を示す。スプールページ数決定テーブルでは、利用可能なCPUコア数と記憶手段の空き容量に対応付けて、一時的に保持される「分割ファイル」が有することができる上限のページ数が設定されている。利用可能なコア数が多くかつ空き容量が大きいほど、上限のページ数が大きくなる。なお、利用可能なCPUコア数と記憶手段の空き容量は画像形成装置のOSなどに印刷データ処理部2220が問い合わせることで検出できる。
図22は、3ページ分しか一時的に保持できない(上限が3ページ)と判断された場合のタイミング図の一例を示す。分割ファイルの上限のページ数が3ページであると判断されたため、印刷データ処理部2220はP1〜P3を一時保持する。P1のパース処理とレンダリング処理が完了すると、一時保存されているP1は削除可能なため、印刷データ処理部2220はP4をスプールする。P5以降も同様であり、P2のパース処理とレンダリング処理が完了すると、P5がスプール処理され、P3のパース処理とレンダリング処理が完了すると、P6がスプール処理される。
図23は、印刷データ処理部2220がスプール処理する手順を示す一例のフローチャート図である。図23の処理は分割ファイルが生成されるとスタートする。
まず、ページデータ生成部2210はスプールページ数決定テーブルを参照して、利用可能なCPUコア数と記憶手段の空き容量に応じてスプール処理する上限のページ数を決定する(S201)。
ページデータ生成部2210はステップS201で決定した上限のページ数のページを含む分割ファイルを生成する(S202)。
次に、ページデータ生成部2210はステップS202で生成した分割ファイルをスプールする(S203)。
そして、ページデータ生成部2210は分割ファイルの全てのページをスプールしたか否かを判断する(S204)。ステップS204の判断がYesの場合、図23の処理は終了する。
ステップS204の判断がNoの場合、印刷データ処理部2220はスプール済みの1ページのパース処理とレンダリング処理が終了したか否かを判断する(S205)。印刷データ処理部2220は終了するまで待機する。
1ページのパース処理とレンダリング処理が終了した場合(S205のYes)、ページデータ生成部2210は次のページをスプールする(S206)。ステップS206の後は、ステップS204が実行される。
このように、本実施例の画像形成装置20は、スプールするページ数を適切に決定し、マルチコアのCPU201がスプールとパース処理/レンダリング処理を並列に実行するので、PDFファイルの印刷に要する時間を短縮できる。
また、CPUコアの数が十分に多い場合、複数のパース処理およびレンダリング処理を並列に実行することも可能となる。CPUコアの数が十分に多い場合とは、パース処理およびレンダリング処理を1つのCPUコアが行うとすると、さらに別のCPUコアがパース処理およびレンダリング処理に利用できることをいう。
図24は、2つのパース処理およびレンダリング処理が並列して実行される場合のタイミング図を示す。図24ではパース処理1とパース処理2が並列して実行されており、レンダリング処理1とレンダリング処理2が並列して実行されている。したがって、図21と比較すると、6ページ分のパース処理およびレンダリング処理がより短時間で終了している。図24の例では1ページあたりの印刷と排紙の処理が長いため、印刷が完了するまでの時間は図21と同程度であるが、集約印刷のような場合は、印刷が完了するまでの時間を大きく短縮できる。
<<実施形態の主な効果>>
上記実施形態の画像形成方法によると、画像形成装置20の通信部2300(受信手段の一例)は、ページを描画するためのオブジェクト(データの一例)、およびこのオブジェクトの位置情報が記録された相互参照表PRを含み、相互参照表PRが、オブジェクトよりも、後に読み出されるPDFファイルを受信する(受信処理の一例)。相互参照表PRが、オブジェクトよりも、後に読み出されるとは、相互参照表PRが、オブジェクトよりも、PDFファイルにおいて大きいオフセットを有することを表す。なお、PDFファイルは、ランダムアクセス形式の任意のファイルに置き換えられる。画像形成装置20の印刷データ処理部2220(開始手段の一例)は、通信部2300において、PDFファイルにおける相互参照表PRが読み出される前に、所定のページのオブジェクトの位置を特定するための特定情報又は境界情報が読み出された場合に、通信部2300によるPDFファイルの受信の完了を待機することなく、特定情報等によって特定されるオブジェクトに基づいて、所定のページの画像の印刷を開始する(開始処理の一例)。なお、特定情報等が相互参照表PRよりも先に読み出されるとは、特定情報等が、相互参照表PRよりもPDFファイルにおいて小さいオフセットを有することを表す。これにより、画像形成装置20は、PDFファイルの受信の完了を待たずに印刷を開始できるので、PDFファイルの印刷に要する時間を短縮できる。
画像形成装置20のページデータ生成部2210(生成手段の一例)は、特定情報等に基づいて、PDFファイルから所定のページのオブジェクトが分割された分割ファイルを生成する。画像形成装置20の印刷データ処理部2220は、ページデータ生成部2210によって生成される分割ファイルに基づいて、所定のページの画像の印刷を開始する。これにより、画像形成装置20は、既存のプロッタエンジン211の機能により分割ファイルを印刷することができる。
PDFファイルに、分割ファイルを生成可能であることを示す判断情報が含まれている場合に、印刷データ処理部2220は、所定のページの画像の印刷を開始する。これにより、画像形成装置20は、特定情報を読み込んだときに、分割ファイルを生成するか即時に判断できる。
PDFファイルにおいて、境界情報は、所定のページのオブジェクトと、他のページのオブジェクトとの間に配置される。これにより、画像形成装置20は、所定のページのオブジェクトを読み込みながら、他のページのオブジェクトとの境界を検知することができる。
PDFファイルにおいて、特定情報は、所定のページのオブジェクトの位置を示す位置情報である。これにより、画像形成装置20は、相互参照表PRを参照することなく、所定のページのオブジェクトを特定できる。
画像形成装置20のページデータ生成部2210(判断手段の一例)は、PDFファイルから所定のページのオブジェクトが分割された分割ファイルを生成可能であるか判断する。生成可能であると判断した場合、ページデータ生成部2210は、所定のページの分割ファイルを生成する。これにより、画像形成装置20は判断情報が含まれないPDFファイルに対しても分割ファイルを生成することが可能になる。
画像形成装置20の記憶部2000(記憶手段の一例)は、通信部2300によって受信されたオブジェクトを記憶する。画像形成装置20のページデータ生成部2210は、記憶部2000に記憶されたオブジェクトに基づいて、分割ファイルを生成する。これにより、画像形成装置20は、所定のページの分割ファイルを生成するときに、参照先のオブジェクトがバッファに残っていない場合でも、記憶部2000に記憶されたオブジェクトを用いて分割ファイルを生成することができる。
画像形成装置20A(生成装置の一例)の読取制御部2110(読取手段の一例)は、原稿の画像を読み取る。画像形成装置20Aの画像生成部2120(生成手段の一例)は、読取制御部2110によって読み取られた画像を示すオブジェクト、このオブジェクトの位置を示す相互参照表PR、および所定のページのオブジェクトの位置を特定するための特定情報等を含み、相互参照表PRが、オブジェクトおよび特定情報等よりも後に読み出されるファイルを生成する。相互参照表PRが、オブジェクトおよび特定情報等よりも後に読み出されるとは、相互参照表PRが、オブジェクトおよび特定情報等よりも大きいオフセットを有することを表す。これにより、画像形成装置20Aは、分割ファイルを生成可能なPDFファイルを生成できる。なお、画像生成機能を有する画像形成装置20Aと、印刷機能を有する画像形成装置20Bと、で画像形成システムを構築してもよい。この場合、画像形成装置20AはPDFファイルを端末10から受信して、分割ファイルを作成し、分割ファイルを画像形成装置20Bに送信する。画像形成装置20Bは分割ファイルを受信すると、印刷処理を開始する。
<<実施形態の補足>>
端末10および画像形成装置20用のプログラムは、インストール可能な形式又は実行可能な形式のファイルによって、コンピュータで読み取り可能な記録媒体に記録されて流通されるようにしてもよい。また、上記記録媒体の他の例として、CD−R(Compact Disc Recordable)、DVD(Digital Versatile Disk)、ブルーレイディスク等が挙げられる。また、上記記録媒体、あるいは、これらプログラムが記憶されたHD(Hard Disk)は、プログラム製品(Program Product)として、国内又は国外へ提供できる。
また、上記実施形態における端末10、および画像形成装置20は、単一の装置によって構築されてもよいし、各部(機能又は手段)を分割して任意に割り当てられた複数の装置によって構築されていてもよい。
上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路を含むプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)や従来の回路モジュール等のデバイスを含むものとする。