説明

画像形成装置および画像形成システム

【課題】XPSファイルの効率的なデータ処理を可能とした画像形成システムを提供する。
【解決手段】画像処理装置12は、Zip構成のXPS形式データを生成するXPSデータ生成部20と、該XPS形式データの圧縮データサイズを算出する第1データ算出部35と、伸張後データサイズを算出する第2データ算出部30と、圧縮データサイズと伸張後のデータサイズを含むヘッダ情報を作成するヘッダ作成部25を備える。画像形成装置50は、画像処理装置が送信したXPS形式データのヘッダ情報を受信し、XPSデータの圧縮データサイズと伸張後データサイズを取得するヘッダ解析部60と、圧縮データサイズに基づいてXPS形式データの格納先を決定する第1判定部65と、伸張後データサイズに基づいてXPS形式データの伸張先を決定する第2判定部70を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置および画像形成システムに関するものである。
【背景技術】
【0002】
従来、ホストコンピュータが備えるアプリケーションプログラム上で作成された文章データや画像データ等の印刷データを画像形成装置(例えば、プリンタ)に送信して印刷処理する画像形成システムが知られている。
この印刷処理においては、ホストコンピュータにおいて、送信すべき印刷データをプリンタドライバにてプリンタが解析可能なページ記述言語(PDL:Page Description Language)データに変換し、プリンタ側に送信すると共に、プリンタ側において該ページ記述言語データを受信して、ビットマップデータに展開した後、印刷処理することが行われている。
【0003】
ところで、近年、ホストシステムよりプリンタに送信するPDLデータについては、従来のストリーム形式(データをダウンロードしながら順次変換処理する配信形式)ではなく、フォルダ構造を有する複数のデータを圧縮して一つのファイルに纏め、PDLファイルとして配信する形式が提案されている。
このような非ストリーム形式のPDLファイルとして、例えば、Microsoft社のXPSファイルが知られている。XPSファイルの配信では、プリンタ側に一度圧縮ファイルを転送し、プリンタ側では、この圧縮ファイルを伸張した後に構文解析(パース)処理が行われることになる(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−225264号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、上記XPSファイルは、Zip形式のデータであり、プリンタ側において、全てのデータを受信しないと受信データのサイズを把握することができない。従って、受信データをRAM等に格納している最中にメモリフルが発生すると、既にメモリ上に格納し終えたデータと、これからホスト側から受信する残りのデータを全てハードディスク(HDD)等の大容量記憶装置に格納し直す必要があった。
また、受信した全データをRAM等に格納できたとしても、格納されたZip形式のデータをZip伸張して再度RAMに格納する途中でメモリフルが発生すると、データ受信のときと同様に、既にメモリに格納し終えた伸張データと、以降の伸張データを全てHDD等へ格納し直す必要があった。
【0006】
このように、従来のXPSファイルの配信においては、受信側において無駄なデータ移動(データ読み出し処理と読み出したデータの別メモリへの再書き込み処理)が発生し、その分、データ処理に時間を要し、極めて非効率的であった。
【0007】
本発明は、上記問題に鑑みなされたもので、ホストシステムより受信したXPSファイルを効率的にデータ処理することが可能な画像形成装置および画像形成システムを提供することを目的としている。
【課題を解決するための手段】
【0008】
すなわち、本発明は、XPS形式データを送信可能な画像処理装置と、該画像処理装置から上記XPS形式データを受信し、該XPS形式データに基づいて印刷処理を行う画像形成装置とを備える画像形成システムにおいて、上記画像処理装置は、Zip構成の上記XPS形式データを生成するデータ生成部と、上記Zip構成のXPS形式データの圧縮データサイズを算出する第1データ算出部と、上記Zip構成のXPS形式データの伸張後データサイズを算出する第2データ算出部と、上記圧縮データサイズと上記伸張後のデータサイズを含むヘッダ情報を作成するヘッダ作成部と、上記ヘッダ情報を付加したXPS形式データを上記画像形成装置に送信する送信部とを備え、上記画像形成装置は、上記画像処理装置が送信した上記XPS形式データのヘッダ情報を受信し、該ヘッダ情報より上記XPSデータの圧縮データサイズと伸張後データサイズを取得するヘッダ解析部と、上記圧縮データサイズに基づいて前記XPS形式データの格納先を決定する第1判定部と、上記伸張後データサイズに基づいて上記XPS形式データの伸張先を決定する第2判定部と、上記XPS形式データの格納先または伸張先としての記憶媒体と、上記第2判定部が決定した伸張先に上記XPS形式データを伸張するデータ伸張部と、上記データ伸張部で伸張したXPS形式データを解析するデータ解析部と、上記データ解析部の解析結果に基づいて印刷処理を行う画像形成部とを備えることを特徴としている。
【0009】
また、別の発明は、Zip構成のXPS形式データを受信し、該XPS形式データに基づいて印刷処理を行う画像形成装置において、上記XPS形式データには、該XPS形式データの圧縮データサイズと伸張後のデータサイズを含むヘッダ情報が付加されており、上記XPS形式データのヘッダ情報を受信し、該ヘッダ情報より、上記XPSデータの圧縮データサイズと伸張後データサイズを取得するヘッダ解析部と、上記圧縮データサイズに基づいて上記XPS形式データの格納先を決定する第1判定部と、上記伸張後データサイズに基づいて上記XPS形式データの伸張先を決定する第2判定部と、上記XPS形式データの格納先または伸張先としての記憶媒体と、上記第2判定部で判定された伸張先に上記XPS形式データを伸張するデータ伸張部と、上記データ伸張部で伸張されたXPS形式データを解析するデータ解析部と、上記データ解析部の解析結果に基づいて印刷処理を行う画像形成部とを備えることを特徴としている。
【発明の効果】
【0010】
本発明によれば、XPSファイルに該XPSファイルのファイルサイズと伸張後のデータサイズを記述したヘッダ情報を付加するようにしたので、画像形成装置は、このヘッダ情報を参照することで、実際にXPSファイルの全データを受信しなくとも、XPSファイルのファイルサイズと伸張後のデータサイズを取得することが可能であり、これらの取得情報から、XPSデータの格納や伸張に最適な記憶媒体を決定することができる。その結果、格納・伸張時のメモリフルによるデータの無駄な読み出し動作と読み出したデータの再書き込み動作を無くすことができ、データ処理の効率アップを図ることができる。このことは、ひいては印刷処理時間の短縮にも寄与するものである。
【図面の簡単な説明】
【0011】
【図1】実施例1による画像形成システムの構成を示す機能ブロック図である。
【図2】Zipファイルの構造図である。
【図3】Local File Headerの構成図である。
【図4】Central Directory Headerの構成図である。
【図5】End of central directory recordの構成図である。
【図6】実施例1によるドライバの基本処理を示すフローチャートである。
【図7】実施例1によるZipファイルの伸張後データサイズの算出処理を示すフローチャートである。
【図8】XPSファイルのファイルサイズの取得処理を示すフローチャートである。
【図9】Central Directory Headerの更新処理を示すフローチャートである。
【図10】実施例1によるダミーヘッダの構成図である。
【図11】実施例1によるダミーヘッダを付加したXPSファイルの構造図である。
【図12】実施例1によるプリンタの基本処理を示すフローチャートである。
【図13】ダミーヘッダのチェック処理を示すフローチャートである。
【図14】実施例1によるダミーヘッダの解析処理を示すフローチャートである。
【図15】XPSファイルの既存の格納・伸張処理を示すフローチャートである。
【図16】実施例2による画像形成システムの構成を示す機能ブロック図である。
【図17】実施例2によるドライバの基本処理を示すフローチャートである。
【図18】実施例2によるZipファイル伸張後のテキストデータ及びバイナリデータサイズの算出処理を示すフローチャートである。
【図19】実施例2によるダミーヘッダの構成図である。
【図20】実施例2によるXPSファイルの構造図である。
【図21】実施例2によるプリンタの基本処理を示すフローチャートである。
【図22】実施例2によるダミーヘッダの解析処理を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、図1〜図22に基づいて、本発明に係る画像形成システム10の実施の形態を説明する。
【実施例1】
【0013】
先ず、図1〜図5を用いて実施例1による画像形成システム10の構成を説明する。
図1は、実施例1による画像形成システムの構成を示す機能ブロック図、図2は、Zipファイルの構造図、図3は、Local File Headerの構成図、図4は、Central Directory Headerの構成図、図5は、End of central directory recordの構成図である。
【0014】
図1に示すように、本実施例の画像形成システム10は、画像処理装置としてのホストPC12と画像形成装置としてのプリンタ50とで構成されている。
ホストPC12のオペレーティングシステム(OS)13は、ホストPC12の全体を管理するソフトウエアシステムであって、ホストPC12には、このOS13上で動作するドライバ15(プリンタドライバ)と、XPS形式の文書ファイル(文章データや画像データ)を作成してドライバ15に供給するアプリケーション18が搭載されている。
【0015】
上記ドライバ15は、XPSデータ生成部(データ生成部)20、ダミーヘッダ作成部(ヘッダ作成部)25、XPS伸張後サイズ算出部(第2データ算出部)30、XPSファイルサイズ算出部(第1データ算出部)35、XPSファイル更新部(データ更新部)40、データ送信部45を備える。これらは、ドライバ15が起動されることにより実現される機能部である。
【0016】
XPSデータ生成部20は、アプリケーション18よりベースとなるXPSファイルを受け取り、プリンタ50に適用可能なZip圧縮構成のXPSファイルを作成する部分である。
XPS伸張後サイズ算出部30は、XPSデータ生成部20で作成されたXPSファイルを伸張したときのデータサイズを算出する部分である。
XPSファイルサイズ算出部35は、XPSデータ生成部20で作成されたXPSファイルのファイルサイズを算出する部分である。
ダミーヘッダ作成部25は、XPS伸張後サイズ算出部30とXPSファイルサイズ算出部35で算出されたXPSファイルの伸張データサイズとファイルサイズを記述したダミーヘッダ(図10参照)を作成する部分である。尚、上記ダミーヘッダ作成部25で作成されるダミーヘッダは、Zip圧縮されていないデータである。
XPSファイル更新部40は、ダミーヘッダ作成部25で作成されたダミーヘッダをXPSファイルに付加すると共に、ダミーヘッダを付加したことによるXPSファイルの内部データの書き換えを行い、XPSファイルを更新する部分である。
データ送信部45は、XPSファイル更新部40で更新されたXPSファイルをプリンタ50へ送信する部分である。
【0017】
また、上記プリンタ50は、データ受信部55、ダミーヘッダ解析部(ヘッダ解析部)60、データ受信先判定部(第1判定部)65、データ伸張先判定部(第2判定部)70、XPSデータ伸張部(データ伸張部)75、XPSデータ解析部(データ解析部)80、印刷イメージ作成部85、データ格納部(記憶媒体)90、拡張データ格納部(記憶媒体)95、印刷部(画像形成部)100を備える。これらは、プリンタ50に搭載された図示しないCPUが所定の制御プログラムを実行することにより実現される機能部である。
【0018】
データ受信部55は、上記ドライバ15のデータ送信部45より送信されたXPSファイルを受信する部分である。
ダミーヘッダ解析部60は、データ受信部55が受信したXPSファイルのダミーヘッダを解析し、以降、ホストPC12から受信するXPSファイルのファイルサイズと伸張後のデータサイズを取得する部分である。
データ受信先判定部65は、ダミーヘッダ解析部60が取得したXPSファイルのファイルサイズを元にXPSファイルの格納先を決定する部分である。
データ伸張先判定部70は、ダミーヘッダ解析部60が取得した伸張後のデータサイズを元にXPSファイルの伸張先を決定する部分である。
XPSデータ伸張部75は、データ受信部55が受信したXPSファイルをデータ伸張先判定部70が決定した伸張先へ伸張(Zip伸張)する部分である。
XPSデータ解析部80は、伸張されたXPSデータのマークアップを解析する部分である。
印刷イメージ作成部85は、XPSデータ解析部80が解析したXPSデータをビットマップ形式に展開して印刷イメージデータを生成する部分である。
データ格納部90は、データのアクセス速度は速いが、下記拡張データ格納部95に比べてメモリ容量が小さい記憶媒体であり、本実施例では、RAM(Random Access Memory)を使用している。
拡張データ格納部95は、データのアクセス速度は遅いが、上記データ格納部90に比べてメモリ容量の大きい記憶媒体であり、上記データ格納部90(RAM)に容量不足が発生したときに使用される。拡張データ格納部95として、本実施例ではHDD(Hard Disk Drive)を使用している。
印刷部100は、印刷イメージ作成部85で作成された印刷イメージデータに基づく画像を記録媒体上に印刷する印刷処理を行う部分である。
【0019】
尚、上記XPSファイルは、イメージファイル、フォントファイル、テキストファイル等をZip形式にアーカイブ化(複数のファイルを一つのファイルに纏めることで、通常、圧縮が施される)したZip圧縮構成のファイルである。
【0020】
このZipファイル200は、図2に示すように、1つ以上(本実施例では、2つ)のLocal File Header210、230とFile Data220、240とCentral Directory Header270、280と、1つのEnd of central directory record295とで構成されている。
【0021】
Local File Header210は、File Data220のヘッダ情報であり、Local File Header230は、File Data240のヘッダ情報である。File Data220とFile Data240には、Zip圧縮された文書データが書き込まれている。
Central Directory Header270は、File Data220のディレクトリデータであり、Local File Header210の全ての情報と拡張情報が記述されている。
Central Directory Header280は、File Data240のディレクトリデータであり、Local File Header230の全ての情報と拡張情報が記述されている。
End of central directory record295は、Central Directory Headerの終端とZipファイルの終了を示している。
【0022】
XPSファイルをZip圧縮すると、そのファイルに対応するLocal File HeaderとFile DataとCentral Directory Headerが生成される。尚、Central Directory Headerの拡張情報を参照しないとZip伸張できない圧縮形式も存在しているため、Zipファイルの伸張時には、先ず、Central Directory Headerを参照する必要がある。
【0023】
上記したLocal File Headerの構成は図3に示され、Central Directory Headerの構成は図4に示され、End of central directory recordの構成は図5に示されている。
【0024】
次に、図6を用いて実施例1の動作を説明する。図6は、実施例1によるドライバ15の基本処理を示すフローチャートである。
【0025】
ホストPC12のユーザが、アプリケーション18上で作成した文書(XPSファイル)の印刷を指示すると、アプリケーション18よりXPSファイルがドライバ15のXPSデータ生成部20に供給される。
XPSデータ生成部20は、XPSファイルを受け取り、対応するプリンタ50に適したZip形式にて、XPSファイルを生成する(S1000)。
この際、XPS伸張後サイズ算出部30は、XPSデータ生成部20で作成されたXPSファイルを伸張したときのデータサイズを算出し、同時にXPSファイルサイズ算出部35は、該XPSファイルのファイルサイズを算出する。
【0026】
ダミーヘッダ作成部25は、XPS伸張後サイズ算出部30により算出された上記伸張データのトータルサイズを取得し(S1010)(詳細は後述)、次いで、XPSファイルサイズ算出部35で算出された上記ファイルサイズを取得する(S1020)(詳細は後述)。
【0027】
ダミーヘッダ作成部25は、先のS1010、S1020で取得したXPSファイルの伸張データサイズとファイルサイズを元にダミーヘッダを作成する(S1030)。
【0028】
図10は、上記ダミーヘッダの構成図である。
ダミーヘッダは、64バイトのデータファイルであり、Local File Headerと同じ構成を有し、先頭より30バイト目のfile name(ファイル名)にダミーヘッダであることを示す18バイトのシグネチャ情報が記述される。本実施例では、シグネチャ情報として(FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F FF)が記述される。
【0029】
また、先頭より48バイト目のextra field(拡張データフィールド)に16バイトで伸張前のデータサイズ(例えば、0x00000000 0x00200000)と伸張後のデータサイズ(例えば、0x00000000 0x00400000)が記述される。
【0030】
また、先頭より26バイト目のfile name length(ファイル名のサイズ)にバイト数18が、先頭より28バイト目のextra field length(拡張データのサイズ)にバイト数16が記述される。
【0031】
XPSファイル更新部40は、図11に示すように、先のS1030で作成されたダミーヘッダをXPSファイルの先頭に付加し(S1040)、同時に、このXPSファイルのCentral Directory Headerの内容を更新する(S1050)(詳細は後述)。図11は、64バイトのダミーヘッダが付加されたXPSファイルの構造図である。
【0032】
データ送信部45は、XPSファイル更新部40でダミーヘッダの付加と内部データの更新が行われたXPSファイルをプリンタ50に送信する(S1060)。
【0033】
次に、図7を用いて、図6のS1010における処理動作の詳細を説明する。図7は、実施例1によるZipファイルの伸張後データサイズの算出処理を示すフローチャートである。
先ず、XPSファイル伸張後のトータルデータサイズを格納しておく変数の値を0に初期化する(S1011)。
【0034】
XPSファイルの先頭よりCentral Directory Headerを検索する(S1012)。尚、Central Directory Headerは、図4のファイル中の「0x02014b50」で示されるシグネチャ(central file header signature)を発見することで検索可能である。
【0035】
ファイル中にCentral Directory Headerが存在するか否かをチェックし(S1013)、存在する場合は、そのCentral Directory Headerの記述情報より伸張後データサイズを取得する(S1014)。尚、伸張後データサイズは、Central Directory Headerの先頭より24バイト目から4バイトの情報(uncompressed size)に記述されている。
取得した伸張後データサイズを上記変数に加算し(S1015)、次のCentral Directory Headerの検索動作を続行する(S1012)。
S1013の判定処理で、Central Directory Headerが発見されなくなったときは検索動作を終了し、更新された上記変数にて伸張後トータルデータサイズを図6のS1010に返す(S1016)。
【0036】
次に、図8を用いて、図6のS1020における処理動作の詳細を説明する。図8は、XPSファイルのファイルサイズの取得処理を示すフローチャートである。
先ず、XPSファイルサイズ算出部35は、ドライバ15より取得したXPSファイルのファイル情報を取得する(S1021)。このファイル情報は、例えば、STAT関数を実行することにより取得可能である。STAT関数は、ファイルの入出力を行う関数であって、STAT関数を実行することで、所望のファイル情報を規定の配列形式で取得できる。該配列形式については記載していないが、具体的には、その配列中の7番目の要素よりファイルサイズを取得することができる(S1022)。取得したファイルサイズを図6のS1020に返す(S1023)。
【0037】
次に、図9を用いて、図6のS1050における処理動作の詳細を説明する。図9は、Central Directory Headerの更新処理を示すフローチャートである。
【0038】
先ず、XPSファイル更新部40は、XPSファイルの先頭よりCentral Directory Headerを検索する(S1051)。尚、Central Directory Headerは、図4のファイル情報中の「0x02014b50」で示されるシグネチャ(central file header signature)を発見することで検索可能である。
ファイル中にCentral Directory Headerが存在するか否かをチェックし(S1052)、存在する場合は、そのCentral Directory Headerに関連付けられているLocal File Headerまでのファイル先頭からのオフセット値をダミーヘッダのサイズ(64バイト)分加算した値に更新する(S1053)。
尚、Local File Headerへのオフセット値は、Central Directory Headerの先頭より42バイト目(relative offset of local header)に4バイトで記述されている。
【0039】
Local File Headerへのオフセット値を更新した後は、次のCentral Directory Headerについて検索を続行し(S1051)、シグネチャ「0x02014b50」が発見できなくなった場合は、全てのCentral Directory Headerの更新が完了したとして本処理を終了する。
【0040】
次に、図12を用いてプリンタ50の動作を説明する。図12は、実施例1によるプリンタの基本処理を示すフローチャートである。
【0041】
先ず、データ受信部55は、ホストPC12のドライバ15より送信されたXPSファイルの先頭64バイト分のデータファイルを受信し、データ格納部90(RAM)に格納する(S1500)。
【0042】
ダミーヘッダ解析部60は、受信した64バイトのデータを参照して(S1510)、受信したデータがダミーヘッダであるか否かをチェックする(S1520)(詳細は後述)。
【0043】
受信データがダミーヘッダである場合は、ダミーヘッダの内容(extra field)を解析し、続いて受信するXPSファイルのファイルサイズと伸張後のデータサイズを取得する(S1530)(詳細は後述)。
【0044】
データ受信先判定部65は、取得したXPSファイルのファイルサイズがRAMの容量より大きいか否かをチェックし(S1540)、大きい場合は、プリンタ50にRAMの代わりとなる大容量の拡張データ格納部95(HDD)が搭載されているか否かをチェックする(S1550)。
HDDが搭載されている場合は、以降受信するXPSファイルは全てHDDへ格納する(S1560)。また、HDDが搭載されていない場合は、全データの格納は不可であるとして、即座にその旨のエラーをユーザに通知し(S1600)、受信したデータは破棄して(S1630)、本処理を終了する。
尚、上記エラーは、ホストPC12が備える図示しない表示部に画面表示にて通知される。
【0045】
他方、先のS1540の判定処理で、取得したXPSファイルのファイルサイズがRAMの容量より小さい場合は、以降ホストPC12より受信するXPSファイルは全てデータ格納部90(RAM)に格納する(S1570)。
【0046】
ホストPC12より受信したXPSファイルの全データをRAMやHDDに格納し終えると、次に、データ伸張先判定部70は、取得したXPSファイルの伸張後サイズがRAMの容量より大きいか否かをチェックし(S1580)、大きい場合は、プリンタ50にRAMの代わりとなるHDDが搭載されているか否かをチェックする(S1590)。
HDDが搭載されている場合は、XPSデータ伸張部75は、RAMやHDDに格納されているXPSファイルをHDDに伸張する(S1610)。また、HDDが搭載されていない場合は、全伸張データの格納は不可であるとして、即座にその旨のエラーをユーザに通知すると共に(S1600)、既に受信したデータは全て破棄して(S1630)、本処理を終了する。
【0047】
他方、先のS1580の判定処理で、取得したXPSファイルの伸張後サイズがRAM容量より小さい場合は、XPSデータ伸張部75は、伸張データを全てRAMに格納できるとして、既にRAMに格納されているXPSファイルをRAMへ伸張する(S1620)。
【0048】
上記したXPSファイルの伸張処理が全て完了すると、XPSデータ解析部80は、伸張ファイルの中のテキストファイルに記述されているマークアップ言語の構文解析(文章の段落構造やフォントサイズ等の解析)を行い(S1640)、印刷イメージ作成部85は、XPSデータ解析部80の解析結果に基づく印刷イメージ(ビットマップイメージデータ)を作成し(S1650)、印刷部100は、作成された印刷イメージに基づき、画像を記録媒体上に印刷する(S1652)。
【0049】
また、先の、S1520の判定処理で、XPSファイルにダミーヘッダが付加されていない場合は、既存のXPSファイルの格納処理と伸張処理をおこなう(S1575)(詳細は後述)。
S1575の伸張処理においてエラー(メモリフル)が発生したか否かをチェックし(S1577)、正常であれば、既述したS1640〜S1652の処理を実行し、本処理を終了する。
他方、先のS1577の判定処理で、エラーが発生している場合は、印刷処理は行わずに本処理を終了する。
【0050】
次に、図13を用いて、図12のS1520における処理動作の詳細を説明する。図13は、ダミーヘッダのチェック処理を示すフローチャートである。
【0051】
先ず、ダミーヘッダ解析部60は、受信した64バイトのデータファイル(図10参照)の先頭から26バイト目に格納されているFile name length(ファイル名のサイズ)がダミーヘッダ作成時に記述した通りの18バイトであるか否かをチェックし(S1521)、18バイトでない場合は、ダミーヘッダでないと判断する(S1524)。
【0052】
S1521の判定処理で、ファイル名のサイズが18バイトである場合は、先頭より30バイト目から18バイト分のデータ(File name)を取得し、このデータがダミーヘッダシグネチャを示す「FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F FF」であるか否かチェックする(S1522)。
【0053】
取得した18バイトのデータがシグネチャと一致する場合はダミーヘッダであると判断し(S1523)、一致しない場合は、ダミーヘッダではないと判断する(S1524)。
【0054】
次に、図14を用いて、図12のS1530における処理動作の詳細を説明する。図14は、実施例1によるダミーヘッダの解析処理を示すフローチャートである。
【0055】
先ず、ダミーヘッダ解析部60は、ホストPC12より受信したダミーヘッダ(図10)の先頭より48バイト目から16バイト分のデータ(extra field)を取得し、始めの8バイトのデータを参照してXPSファイルの伸張前のデータサイズ、すなわち、ファイルサイズを取得し(S1531)、次の8バイトのデータを参照して伸張後のデータサイズを取得する(S1532)。
【0056】
次に、図15を用いて、図12のS1575における処理動作の詳細を説明する。図15は、XPSファイルの既存の格納・伸張処理を示すフローチャートである。
【0057】
先ず、データ受信部55は、ホストPC12より受信したXPSファイルをデータ格納部90(RAM)に格納していく(S1800)。データ格納中に(受信データ量がRAMの容量を超える)メモリフルが発生したか否かをチェックし(S1810)、メモリフルが発生しない場合は、RAMに格納したXPSファイルをRAMに伸張する(S1820)。
【0058】
次いで、この伸張処理中にメモリフルが発生したか否かをチェックし(S1830)、メモリフルが発生しなければ伸張処理が正常終了したものとし、伸張処理中にメモリフルが発生した場合は、RAM以外の大容量の記憶媒体として拡張データ格納部95(HDD)がプリンタ50に搭載されているか否かをチェックする(S1880)。
【0059】
S1880の判定処理で、HDDが搭載されている場合は、既にRAMに格納されている伸張済みのデータをHDDに移し替え(S1890)、以降、RAM内の未伸張のXPSファイルはHDDへ伸張する(S1900)。伸張処理が全て完了したら、本処理を終了する。
他方、HDDが搭載されていない場合は、伸張データの格納は不可としてエラーを通知し(S1910)、受信したデータを全て破棄して(S1920)、本処理を終了する。
【0060】
また、先のS1810の判定処理で、メモリフルが発生した場合は、HDDが搭載されているか否かをチェックし(S1840)、HDDが搭載されている場合は、RAMに格納された受信済みのXPSファイルをHDDに移し替え(S1850)、以降に受信するXPSファイルは全てHDDに格納する(S1860)。
【0061】
XPSファイルを全てHDDに格納し終えると、該XPSファイルをHDDに伸張し(S1870)、伸張処理が完了したら本処理を終了する。
【0062】
また、先のS1840の判定処理で、HDDが搭載されていない場合は、ユーザにエラーを通知し(S1910)、受信したデータを全て破棄して(S1920)、本処理を終了する。
【0063】
このように、XPSファイルにダミーヘッダが付加されてない場合の処理、すなわち、既存の格納・伸張処理では、受信したXPSファイルの格納処理や格納したXPSファイルの伸張処理が実行されるまで、XPSデータの記憶媒体への格納・伸張が可能か否か、即ち、印刷処理のためのデータの解析が可能か否かを判断することができないという非効率が生じ得る。また、係る非効率が生じた場合、ユーザへのエラー通知もXPSファイルにダミーヘッダが付加されている場合のように、即座に行うことができない。
【0064】
以上、実施例1によれば、XPSファイルの先頭にダミーヘッダを付加したので、プリンタ50は、このダミーヘッダを解析することで、実際にXPSファイルの全データを受信しなくとも、XPSファイルのファイルサイズと伸張後のデータサイズを取得することが可能であり、これらの取得情報から、XPSデータの格納や伸張に最適な記憶媒体を決定することが可能となる。その結果、メモリフルによるデータの無駄な読み出しや読み出したデータの再書き込みを無くし、データ処理の効率アップを図ることができる。
また、データ処理前に記憶媒体の容量不足を把握できれば、ユーザにその旨を即座に通知することができる。
【0065】
また、XPSファイルのCentral Directory Headerの内容を修正することで、XPSファイルのファイル形式を維持することが可能であり、ダミーヘッダを解析できないプリンタやXPSファイルをPC上で閲覧するビューア等でも正常に処理することができる。
【実施例2】
【0066】
次に、図16を用いて実施例2による画像形成システムの構成を説明する。図16は、実施例2による画像形成システムの構成を示す機能ブロック図である。
【0067】
図16に示すように、本実施例の画像形成システム10は、画像処理装置としてのホストPC12と画像形成装置としてのプリンタ50とで構成されている。
オペレーティングシステム(OS)13は、ホストPC12全体を管理するソフトウエアシステムであって、ホストPC12には、このOS13上で動作するドライバ15(プリンタドライバ)とXPS形式の文書ファイル(文章データや画像データ)を作成してドライバ15に供給するアプリケーション18が搭載されている。
【0068】
上記ドライバ15は、XPSデータ生成部(データ生成部)20、ダミーヘッダ作成部(ヘッダ作成部)25、データ別伸張後サイズ算出部(第2データ算出部)32、XPSファイルサイズ算出部(第1データ算出部)35、XPSファイル更新部(データ更新部)40、データ送信部45を備える。これらは、ドライバ15を起動することにより実現される機能部である。上記の内、ダミーヘッダ作成部25とデータ別伸張後サイズ算出部32以外は実施例1(図1)と同様であり、詳細な説明は省略する。
【0069】
データ別伸張後サイズ算出部32は、XPSデータ生成部20で作成されたXPSファイルに含まれる全テキストファイルの伸張後サイズと、全バイナリファイルの伸張後サイズを算出する部分である。
ダミーヘッダ作成部25は、データ別伸張後サイズ算出部32で算出されたXPSファイルの伸張後テキストデータサイズと伸張後バイナリデータサイズとXPSファイルサイズ算出部35で算出されたファイルサイズ等を記述したダミーヘッダ(図19参照)を作成する部分である。尚、上記ダミーヘッダ作成部25で作成されるダミーヘッダは、Zip圧縮されていないデータである。
【0070】
また、上記プリンタ50は、データ受信部55、ダミーヘッダ解析部(ヘッダ解析部)60、データ受信先判定部(第1判定部)65、テキストデータ伸張先判定部(第2判定部)76、バイナリデータ伸張先判定部(第2判定部)77、XPSデータ伸張部(データ伸張部)75、XPSデータ解析部(データ解析部)80、印刷イメージ作成部85、データ格納部(記憶媒体:RAM)90、拡張データ格納部(記憶媒体:HDD)95、印刷部(画像形成部)100を備える。これらは、プリンタ50に搭載された図示しないCPUが所定の制御プログラムを実行することにより実現される機能部である。
上記の内、ダミーヘッダ解析部60、テキストデータ伸張先判定部76、バイナリデータ伸張先判定部77、XPSデータ伸張部75以外は実施例1(図1)と同様であり、詳細な説明は省略する。
【0071】
ダミーヘッダ解析部60は、データ受信部55が受信したXPSファイルのダミーヘッダを解析し、これ以降に受信するXPSファイルのファイルサイズと伸張後のテキストデータサイズと伸張後のバイナリデータサイズを取得する部分である。
テキストデータ伸張先判定部76は、ダミーヘッダ解析部60が取得した伸張後のテキストデータサイズを元にテキストファイルの伸張先を決定する部分である。尚、テキストファイルとは、XPSマークアップ言語が記述されているファイルである。
バイナリデータ伸張先判定部77は、ダミーヘッダ解析部60が取得した伸張後のバイナリデータサイズを元にバイナリファイルの伸張先を決定する部分である。尚、バイナリファイルとは、XPSマークアップ以外のファイル(例えば、イメージファイルやフォントファイル)である。
XPSデータ伸張部75は、データ受信部55が受信したXPSファイルを伸張(Zip伸張)すると共に、テキストファイルをテキストデータ伸張先判定部76が決定した伸張先へ伸張し、バイナリファイルをバイナリデータ伸張先判定部77が決定した伸張先へ伸張する部分である。
【0072】
次に、図17を用いて実施例2の動作を説明する。図17は、実施例2によるドライバ15の基本処理を示すフローチャートである。
【0073】
ホストPC12のユーザが、アプリケーション18上で作成した文書(XPSファイル)の印刷を指示すると、アプリケーション18よりXPSファイルがXPSデータ生成部20に供給される。
XPSデータ生成部20は、アプリケーション18よりXPSファイルを受け取り、対応するプリンタ50に適したZip形式にて、XPSファイルを生成する(S2000)。
この際、データ別伸張後サイズ算出部32は、XPSデータ生成部20で作成されたXPSファイルに含まれる全テキストファイルの伸張後サイズと、全バイナリファイルの伸張後サイズを算出し、同時にXPSファイルサイズ算出部35は、該XPSファイルのファイルサイズを算出する。
【0074】
ダミーヘッダ作成部25は、データ別伸張後サイズ算出部32で算出されテキストファイルのトータルサイズとバイナリファイルのトータルサイズを取得し(S2010)(詳細は後述)、次いで、XPSファイルサイズ算出部35で算出された、XPSファイルのファイルサイズを取得し(S2020)、これらテキストファイルのトータルサイズとバイナリファイルのトータルサイズとファイルサイズを元に、ダミーヘッダを作成する(S2030)。
【0075】
図19は、上記ダミーヘッダの構成図である。
ダミーヘッダは、72バイトのデータファイルであり、Local File Headerと同じ構成を有し、先頭より30バイト目のfile name(ファイル名)にダミーヘッダであることを示す18バイトのシグネチャ情報(本実施例では、FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F FF)が記述される。
【0076】
また、先頭より48バイト目のextra filed(拡張データフィールド)に、最初の8バイトで伸張前のデータサイズ(例えば、0x00000000 0x00200000)が、次の8バイトで伸張後のテキストデータサイズ(例えば、0x00000000 0x00100000)が、さらに次の8バイトで伸張後のバイナリデータサイズ(例えば、0x00000000 0x00300000)が記述される。
【0077】
また、先頭より26バイト目のfile name length(ファイル名のサイズ)にバイト数18が、また、先頭より28バイト目のextra field length(拡張データのサイズ)にバイト数24が記述される。
【0078】
XPSファイル更新部40は、図20に示すように、先のS2030で作成されたダミーヘッダをXPSファイルの先頭に付加し(S2040)、このXPSファイルのCentral Directory Headerの内容を更新する(S2050)。図20は、72バイトのダミーヘッダが付加されたXPSファイルの構造図である。
【0079】
図17の処理に戻り、データ送信部45は、XPSファイル更新部40でダミーヘッダの付加と内部データの更新が行われたXPSファイルをプリンタ50に送信する(S2060)。
【0080】
ここで、S2020の処理の詳細は、図8の処理と同様であり、S2040の処理の詳細は、図9の処理と同様である。
【0081】
次に、図18を用いて、図17のS2010における処理動作の詳細を説明する。図18は、実施例2によるZipファイル伸張後のテキストデータ及びバイナリデータサイズの算出処理を示すフローチャートである。
【0082】
先ず、伸張後のテキストデータサイズを格納しておく変数の値を0に初期化し(S2070)、次いで、伸張後バイナリデータサイズを格納しておく変数の値を0に初期化する(S2080)。
【0083】
XPSファイルの先頭よりCentral Directory Headerを検索する(S2090)。尚、Central Directory Headerは、図4のファイル情報中の「0x02014b50」で示されるcentral file header signature(シグネチャ)を発見することで検索可能である。
【0084】
ファイル中にCentral Directory Headerが存在するか否かをチェックし(S2100)、存在する場合は、そのCentral Directory Headerの記述情報より伸張後データサイズを取得する(S2110)。尚、伸張後データサイズは、Central Directory Headerの先頭より24バイト目から4バイトの情報(uncompressed size)に記述されている。
【0085】
次に、Central Directory Headerの記述情報よりFile Dataのデータ属性をチェックする(S2120)。このデータ属性(internal file attributes)は、Central Directory Headerの先頭より36バイト目から2バイトで記載されており、「0」はバイナリデータを示し、「1」はテキストデータを示している。
【0086】
データ属性がテキストデータであれば、取得した伸張後データサイズを上記した伸張後データサイズ格納用の変数に加算し(S2130)、また、データ属性がバイナリデータであれば、取得した伸張後データサイズを伸張後バイナリデータサイズ格納用の変数に加算し(S2140)、次のCentral Directory Headerの検索動作を継続する(S2090)。
S2090の判定処理で、Central Directory Headerが発見されなくなったときは検索を終了し、更新された各変数にて伸張後テキストファイルのトータルサイズ(S2150)と、伸張後バイナリファイルのトータルサイズ(S2160)を図17のS2010に返す。
【0087】
尚、図17のS2050の処理の詳細は、既に説明した図9の処理と同様であるが、実施例2では、ダミーヘッダのサイズが72バイトである点が実施例1と相違している。
【0088】
次に、図21を用いてプリンタ50の動作を説明する。図21は、実施例2によるプリンタの基本処理を示すフローチャートである。
【0089】
先ず、データ受信部55は、ホストPC12のドライバ15より送信されたXPSファイルの先頭72バイト分のデータファイルを受信し、データ格納部90(RAM)に格納する(S2500)。
【0090】
ダミーヘッダ解析部60は、受信した72バイトのデータを参照して(S2510)、受信したデータがダミーヘッダであるか否かをチェックする(S2520)。尚、S2520の処理の詳細は、実施例1(図13)のS1520と同様である。
【0091】
S2520の判定処理で、受信したデータがダミーヘッダである場合は、ダミーヘッダの内容(extra field)を解析し、続いて受信するXPSファイルのファイルサイズと伸張後のテキストデータサイズと伸張後のバイナリデータサイズを取得する(S2530)(詳細は後述)。
【0092】
データ受信先判定部65は、取得したXPSファイルのファイルサイズがRAMの容量より大きいか否かをチェックし(S2540)、大きい場合は、プリンタ50にRAMの代わりとなる大容量の拡張データ格納部95(HDD)が搭載されているか否かをチェックする(S2550)。
HDDが搭載されている場合は、以降受信するXPSファイルは全てHDDへ格納する(S2560)。また、HDDが搭載されていない場合は、全データの格納は不可であるとして、即座にその旨のエラーをユーザに通知し(S2600)、受信したデータは破棄して(S2630)、本処理を終了する。
【0093】
他方、先のS2540の判定処理で、取得したXPSファイルのファイルサイズがRAMの容量より小さい場合は、以降ホストPC12より受信するXPSファイルは全てデータ格納部90(RAM)に格納する(S2570)。
【0094】
ホストPC12より受信したXPSファイルの全データをRAMやHDDに格納し終えると、次に、テキストデータ伸張先判定部76は、取得したXPSファイルの伸張後のテキストデータサイズがRAMの容量より大きいか否かをチェックし(S2580)、大きい場合は、プリンタ15にRAMの代わりとなるHDDが搭載されているか否かをチェックする(S2590)。
HDDが搭載されている場合は、XPSデータ伸張部75は、RAMやHDDに格納されているテキストファイルをHDDに伸張する(S2610)。
【0095】
次に、バイナリデータ伸張先判定部77は、取得したXPSファイルの伸張後のバイナリデータサイズがRAMの容量より大きいか否かをチェックし(S2640)、大きい場合は、格納されているバイナリファイルをHDDに伸張し(S2670)、小さい場合は、RAMに伸張する(S2680)。
【0096】
先のS2580の判定処理で、XPSファイルの伸張後のテキストデータサイズがRAMの容量より小さい場合は、テキストファイルをRAMへ伸張する(S2620)。
【0097】
S2620で、テキストファイルをRAMへ伸張した後、バイナリデータ伸張サイズがRAM容量からテキストファイル伸張サイズを引いた容量(すなわち、RAMの空き容量)より大きいか否かをチェックし(S2650)、大きい場合は、バイナリファイルのRAMへの伸張は不可と判断し、代わりにHDDが搭載されているかをチェックする(S2660)。
HDDが搭載されている場合は、バイナリファイルをHDDに伸張する(S2670)。
HDDが搭載されていない場合は、バイナリファイルの伸張は不可として、直ちにその旨のエラーをユーザに通知し(S2600)、受信したXPSファイルと伸張したファイルを破棄し(S2630)、本処理を終了する。
【0098】
先のS2650の判定処理で、RAMの空き容量よりバイナリデータ伸張サイズの方が小さい場合は、XPSファイルから伸張されるバイナリファイルはRAMへ伸張する(S2680)。
【0099】
上記したXPSファイルの伸張処理が全て完了すると、XPSデータ解析部80は、伸張ファイル中のテキストファイルに記述されているマークアップ言語の構文解析を行い(S2690)、印刷イメージ作成部85は、XPSデータ解析部80の解析結果に基づいて印刷イメージを作成し(S2700)、印刷部100は、作成された印刷イメージに基づき、画像を記録媒体上に印刷する(S2710)。
【0100】
尚、先の、S2520の判定処理で、ダミーヘッダが付加されていない場合は、既存のXPSファイルの格納処理と伸張処理をおこなう(S2675)(詳細は、図15参照)。
S2675の伸張処理においてエラー(メモリフル)が発生したか否かをチェックし(S2577)、正常であれば、既述したS2690〜S2710の処理を実行した後、本処理を終了する。
他方、先のS2577の判定処理で、エラーが発生した場合は、印刷処理を行わずに本処理を終了する。
【0101】
次に、図22を用いて、図21のS2530における処理動作の詳細を説明する。図22は、実施例2によるダミーヘッダの解析処理を示すフローチャートである。
先ず、ダミーヘッダ解析部60は、受信したダミーヘッダ(図19)の先頭より48バイト目から24バイト分のデータ(extra field)を取得し、始めの8バイトのデータを参照してXPSファイルのファイルサイズを取得し(S2531)、次の8バイトのデータを参照してテキストファイル伸張サイズを取得し、さらに最後の8バイトのデータを参照してバイナリファイル伸張サイズを取得する(S2533)。
【0102】
以上のように、実施例2によれば、XPSファイルから伸張されるテキストファイルとバイナリファイルの伸張サイズを別々に取得することにより、実施例1の効果に加えて、印刷データとしてアクセス頻度の高いテキストファイルをデータアクセス速度の速いRAMに優先的に格納することで、XPSマークアップの構文解析処理を高速化できる。
【産業上の利用可能性】
【0103】
本実施形態では、印刷装置としてプリンタを例示したが、この他、PDLデータを処理可能な装置であれば、ファクシミリ、複写機、或いは、これらの機能を備える複合機(MPF:Multiple Function Printer)にも適用可能である。
【符号の説明】
【0104】
10 画像形成システム
12 ホストPC(画像処理装置)
20 XPSデータ生成部(データ生成部)
25 ダミーヘッダ作成部(ヘッダ作成部)
30 XPS伸張後サイズ算出部(第2データ算出部)
35 XPSファイルサイズ算出部(第1データ算出部)
40 XPSファイル更新部(データ更新部)
50 プリンタ(画像形成装置)
60 ダミーヘッダ解析部(ヘッダ解析部)
65 データ受信先判定部(第1判定部)
70 データ伸張先判定部(第2判定部)
75 XPSデータ伸張部(データ伸張部)
80 XPSデータ解析部(データ解析部)
90 データ格納部(記憶媒体)
95 拡張データ格納部(記憶媒体)
100 印刷部(画像形成部)

【特許請求の範囲】
【請求項1】
XPS形式データを送信可能な画像処理装置と、該画像処理装置から前記XPS形式データを受信し、該XPS形式データに基づいて印刷処理を行う画像形成装置とを備える画像形成システムにおいて、
前記画像処理装置は、
Zip構成の前記XPS形式データを生成するデータ生成部と、
前記Zip構成のXPS形式データの圧縮データサイズを算出する第1データ算出部と、
前記Zip構成のXPS形式データの伸張後データサイズを算出する第2データ算出部と、
前記圧縮データサイズと前記伸張後のデータサイズを含むヘッダ情報を作成するヘッダ作成部と、
前記ヘッダ情報を付加したXPS形式データを前記画像形成装置に送信する送信部とを備え、
前記画像形成装置は、
前記画像処理装置が送信した前記XPS形式データのヘッダ情報を受信し、該ヘッダ情報より前記XPSデータの圧縮データサイズと伸張後データサイズを取得するヘッダ解析部と、
前記圧縮データサイズに基づいて前記XPS形式データの格納先を決定する第1判定部と、
前記伸張後データサイズに基づいて前記XPS形式データの伸張先を決定する第2判定部と、
前記XPS形式データの格納先または伸張先としての記憶媒体と、
前記第2判定部が決定した伸張先に前記XPS形式データを伸張するデータ伸張部と、
前記データ伸張部が伸張したXPS形式データを解析するデータ解析部と、
前記データ解析部の解析結果に基づいて印刷処理を行う画像形成部とを備えることを特徴とする画像形成システム。
【請求項2】
前記画像処理装置は、前記データ生成部が生成した前記XPSデータの先頭に前記ヘッダ情報を付加すると共に、該XPSデータのZip構成データを更新するデータ更新部を備えることを特徴とする請求項1に記載の画像形成システム。
【請求項3】
前記第2データ算出部は、前記XPS形式データの伸張後データサイズとして、テキストデータサイズとバイナリデータサイズを算出し、前記第2判定部は、前記テキストデータサイズと前記バイナリデータサイズのそれぞれについて伸張先を決定することを特徴とする請求項1または2に記載の画像形成システム。
【請求項4】
前記第2判定部は、前記ヘッダ解析部が取得した前記XPSデータの圧縮データサイズまたは伸張後データサイズと前記記録媒体のメモリ容量を比較し、前記圧縮データサイズまたは前記伸張後データサイズが前記記憶媒体のメモリ容量より大きい場合に前記画像処理装置にエラーを通知することを特徴とする請求項1乃至3に記載の画像形成システム。
【請求項5】
前記記憶媒体として、メモリ容量および処理速度の異なる複数の記憶媒体を備えており、少なくとも前記テキストデータの伸張先は、該記憶媒体の処理速度を優先して決定されることを特徴とする請求項3に記載の画像形成システム。
【請求項6】
Zip構成のXPS形式データを受信し、該XPS形式データに基づいて印刷処理を行う画像形成装置において、
前記XPS形式データには、該XPS形式データの圧縮データサイズと伸張後のデータサイズを含むヘッダ情報が付加されており、
前記XPS形式データのヘッダ情報を受信し、該ヘッダ情報より、前記XPSデータの圧縮データサイズと伸張後データサイズを取得するヘッダ解析部と、
前記圧縮データサイズに基づいて前記XPS形式データの格納先を決定する第1判定部と、
前記伸張後データサイズに基づいて前記XPS形式データの伸張先を決定する第2判定部と、
前記XPS形式データの格納先または伸張先としての記憶媒体と、
前記第2判定部で判定された伸張先に前記XPS形式データを伸張するデータ伸張部と、
前記データ伸張部が伸張したXPS形式データを解析するデータ解析部と、
前記データ解析部の解析結果に基づいて印刷処理を行う画像形成部とを備えることを特徴とする画像形成装置。
【請求項7】
前記ヘッダ情報の伸張後データサイズには、テキストデータサイズとバイナリデータサイズが含まれており、前記第2判定部は、前記テキストデータサイズと前記バイナリデータサイズのそれぞれについて伸張先を決定することを特徴とする請求項6に記載の画像形成装置。
【請求項8】
前記第2判定部は、前記ヘッダ解析部が取得した前記XPSデータの圧縮データサイズまたは伸張後データサイズと前記記録媒体のメモリ容量を比較し、前記圧縮データサイズまたは前記伸張後データサイズが前記記憶媒体のメモリ容量より大きい場合に前記XPSデータの送信元にエラーを通知することを特徴とする請求項6または7に記載の画像形成装置。
【請求項9】
前記記憶媒体として、メモリ容量および処理速度の異なる複数の記憶媒体を備えており、少なくとも前記テキストデータの伸張先は、該記憶媒体の処理速度を優先して決定されることを特徴とする請求項7に記載の画像形成装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2011−145745(P2011−145745A)
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2010−3864(P2010−3864)
【出願日】平成22年1月12日(2010.1.12)
【出願人】(591044164)株式会社沖データ (2,444)
【Fターム(参考)】