説明

情報処理装置及びその制御方法、印刷制御システム並びにプログラム

【課題】 メモリ容量の少ないプリンタであっても、リソースファイルを含むアーカイブデータ(XPSデータ)を適切に印刷処理することができる仕組みを提供する。
【解決手段】 プリンタ200と通信可能に接続されたホストコンピュータ100において、CPU101は、プリンタ200において印刷対象となるページの情報が記述された印刷対象データ(FP)のファイルと、FPに基づき参照されるリソースファイルとを含み構成されるアーカイブデータを取得し、FPのファイルを分割して、当該アーカイブデータに当該分割されたFPのファイルを反映させるとともに、当該アーカイブデータにFPにおいてリソースファイルを参照する参照回数の情報を含める処理を行う。そして、FPのファイルを分割する際には、前記参照回数の情報に応じて分割するようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プリンタと通信可能に接続された情報処理装置及びその制御方法、情報処理装置とプリンタとを含み構成される印刷制御システム、並びに、情報処理装置の制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【0002】
パーソナルコンピュータ(以下、「PC」と称する)等の情報処理装置は、キーボード入力や画像出力といった入出力機能や、ディスク或いはメモリの管理など、多くのアプリケーションソフトから共通して利用される基本的な機能を提供する。そして、このような機能を提供するために、情報処理装置には、コンピュータシステム全体を管理するソフトウェアであるオペレーティングシステム(以下、「OS」と称する)が存在する。このOSとしては、例えば、Microsoft社製のWindows(登録商標)_XPや、Windows_2000、Windows_Vistaなどが挙げられる。
【0003】
また、PC等の情報処理装置を用いてユーザが各種の文書を閲覧できるように様々な文書ファイルフォーマットが存在するが、その1つに、XML_Paper_Specification(以下、「XPS」と称する)という文書ファイルフォーマットがある。ここで、前述したWindows_Vistaでは、XPSが、文書ファイルフォーマットとしてのみでなく印刷スプールファイルのフォーマットとしても利用される。なお、XPSのフォーマットに従ったデータを「XPSデータ」、データがXPS形式のファイルを「XPSファイル」と称する。また、XML(Extensible Markup Language)とは、文書やデータの意味や、構造を記述するためのマークアップ言語の1つであり、構造化文書と呼ばれる。構造化文書は他には、HTMLやSGMLなどがある。
【0004】
ここで、PC等の情報処理装置とプリンタなどの出力装置と備えるシステムにおいて、印刷を実施する場合、通常、アプリケーションは、ユーザからの印刷実行命令を受けると、アプリケーションが起動しているOS、及び、当該OSが提供する印刷システムに応じた印刷命令の発行処理を行う。
【0005】
例えば、前述したWindows_XPやWindows_2000などのOS上で起動しているアプリケーションは、当該OSが提供するGDIプリントパスと呼ばれる印刷システムの形式に従って印刷命令を発行する。ここで、GDIとは、Graphics_Device_Interfaceの略称である。一方、前述したWindows_Vistaにおいては、前述したGDIプリントパスに加えて、XPSプリントパスと呼ばれる印刷システムが新たに提供されている。
【0006】
次に、XPSデータのフォーマットについて説明する。
XPSデータは、複数のファイルがZIP圧縮形式で1つのファイルに包含された形式を有するデータである。ここで包含されるファイルとしては、例えば、XMLファイル、JPEGファイル、PNGファイル、TIFFファイル、HD_Photoファイル、フォントファイルなどである。ここで、XMLとは、Extensible_Markup_Languageの略称であり、JPEGとは、Joint_Photographic_Experts_Groupの略称であり、PNGとは、Portable_Network_Graphicsの略称であり、TIFFとは、Tagged_Image_File_Formatの略称である。
【0007】
ここで、前述したXMLファイルには、文書を形成するための各種の情報がXML形式で記述される。なお、記述される情報ごとに複数のXMLファイルに分割されている。ここで、XPSでは、1つの文書は、複数もしくは1つのドキュメントという括りから成り、1つのドキュメントは、複数もしくは1つのページという括りから成るといったように、1つの文書は、幾つかの括りに分割されて考えられている。
【0008】
また、JPEG、PNG、TIFF、HD_Photoは、それぞれ、イメージを表現するためのフォーマットであり、以降、これらのファイルを総称して「イメージファイル」と称する。このイメージファイルやフォントファイルも、文書を構成するのに必要な数だけXPSデータに包含される。また、XPSデータに包含されるファイルを、それぞれ、「パーツ」と称する。つまり、1つのXPSデータには、複数のパーツが包含されている。
【0009】
図23は、XPSデータの構成のイメージの一例を示す模式図である。
ここで、XPSデータに包含された各パーツは、別のパーツへの参照を行うことができ、この参照を繰り返すことで全てのパーツが関係性を持つといった性質によって、1つの文書情報が形成される。以下、図23に示されるXPSデータに包含される各パーツについて説明を行う。
【0010】
a)_rels/.rels:
文書の開始点となるパーツである。後述するb)FixedDocumentSequenceへの参照を有する。
【0011】
b)FixedDocumentSequence(FDS):
1つの文書の構成情報が記述されるパーツである。後述するc)FixedDocumentへの参照を有する。なお、1つのデータは、複数のドキュメントを有することができる。即ち、FDSは、複数のFixedDocumentへの参照を有することができる。
【0012】
c)FixedDocument(FD):
1つのドキュメントに存在する複数のページをページ順に並べて束ねるためのパーツである。即ち、1つのドキュメントの構成情報が記述されるパーツであり、後述するd)FixedPageへの参照を有する。なお、1つのドキュメントは、複数のページを有することができる。即ち、FDは、複数のFixedPageへの参照を有することができる。
【0013】
d)FixedPage(FP):
1ページの描画内容が記述されたパーツである。必要に応じて、イメージファイルやフォントファイルへの参照を有することができる。例えば、当該ページにイメージの描画が存在する場合には、当該イメージファイルへの参照を有することになる。
【0014】
e)FixedPage.rels(FP.rels):
d)FixedPageに関連するパーツへの参照情報が記述されたパーツである。参照先としては、例えば、イメージファイル、フォントファイル、印刷設定情報が記述された後述するプリントチケットファイルなどである。このFP.relsは、1FixedPageにつき1つ存在する、もしくはFP.rels自体が存在しない。
【0015】
f)プリントチケット:
予め定義されたXMLスキーマの形式に従って記述された印刷条件の設定が記述されたファイルである。以下、印刷設定を行うために予め定義されたXMLスキーマの形式を「プリントスキーマ」と称し、印刷スキーマに従って印刷条件が記述されているXMLファイルを「プリントチケット」と称する。
【0016】
図24は、図23に示すXPSデータに包含される各パーツの参照関係の論理的構造の一例を示す模式図である。また、図25は、XMLファイルの記述に基づいた参照関係の一例を示す模式図である。
【0017】
次に、プリントチケットの詳細について説明する。
図26は、XMLファイルの記述に基づいたプリントチケットの一例を示す模式図である。
【0018】
プリントチケットのルートタグは、図26に示す<PrintTicket>である。このルートタグの子要素に、<Feature>タグが存在する。この<Feature>タグは、必須属性として、"name"を持つ。この"name"の値は、印刷対象プリンタの機能を示し、例えば、ページサイズ指定機能用の値が存在する。なお、この"name"の値は、プリントスキーマに定義されている値を使用してもよいし、ベンダが独自に定義した値を使用してもよい。また、プリントスキーマが所属するXML名前空間は、"http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework"と、"http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords"である。
【0019】
また、<Feature>タグは、通常、子要素に<Option>タグを1つ持つ。この<Option>タグは、親要素である<Feature>タグで指定された機能の設定を示し、その属性として、<Feature>タグと同様、"name"を持ち、この属性値で機能を設定する。この際の属性値は、プリントスキーマまたはベンダ独自のスキーマで定義されている値が入る。例えば、上位の<Feature>タグが、ページサイズ指定機能であれば、"A4"といった値が入ることが予想される。通常、この<Option>タグは、1つの<Feature>タグの子要素として、1つしか存在しない。また、<Option>タグは、子要素に、<ScoredProperty>を持つ。この際、<Option>タグは、<ScoredProperty>を複数持つこともある。
【0020】
<ScoredProperty>タグは、親要素である<Option>タグで指定された機能の設定の一部を示し、必須属性として、"name"を持ち、設定の一部を指定する。また、属性値には、プリントスキーマまたはベンダ独自のスキーマで定義されている値が入る。例えば、上位の<Option>タグが"A4"であれば、幅や高さといった値が入ることが予想される。この<ScoredProperty>タグは、子要素に、<Value>タグを1つ持つ。
【0021】
<Value>タグは、<ScoredProperty>タグの"name"属性で指定された内容の具体的な値が入る。例えば、上位の<ScoredProperty>タグの"name"属性値が幅であれば、"247000"と具体的な数値が入る。
【0022】
ところで、Windows_Vistaでは、XPSが、文書ファイルフォーマットとしてのみでなく印刷スプールファイルのフォーマットとしても利用できると前述したが、この際、前述したXPSプリントパスが使用される場合には、通常、OSが提供する印刷システムが自動で印刷スプールファイルをXPSファイルフォーマットの形式で生成する。ここで、ユーザが任意のXPSデータを作成してスプールすることも可能であり、また、後述するMXDWで作成されたXPSデータをスプールすることも可能である。
【0023】
また、XPSデータをプリントデータとして利用する場合、ZIP圧縮されたデータがPC等の情報処理装置からネットワークを介してプリンタなどの出力装置に送信される。なお、この際、送信データ(XPSデータ)は、全てが一括で送られるのではなく、幾つかに分割されて出力装置に送られるのが一般的である。そして、出力装置では、XPSデータを受信する処理を行った後、印刷処理を実施するために、受信したXPSデータを解析する処理を行う。なお、通常、出力装置は、受信処理と、既に受信済みのXPSデータの解析処理を並行して行うことが可能である。
【0024】
ところで、Windows_Vistaの機能の1つとして、Microsoft_XPS_Document_Writer(以下、「MXDW」と称する)なる、XPSファイルを生成するためのアプリケーションが存在する。このMXDWによって、XPSファイルを生成した場合、通常は、「_rels/.rels」の情報を有するファイルデータ部、「FixedDocumentSequence(FDS)」の情報を有するファイルデータ部、「FixedDocument(FD)」の情報を有するファイルデータ部、「FixedPage(FP)」の情報を有するファイルデータ部のデータは、それぞれ、図27のように、「FixedPage(FP)」→「FixedDocument(FD)」(2713、2714)→「FixedDocumentSequence(FDS)」(2715)→「_rels/.rels」(2716)の順序に並んで構成される。以降、この順序を「データ順」と称する。なお、図27は、MXDWが通常生成するXPSファイルのデータ順の一例を示す模式図である。
【0025】
ここで、XPSデータをプリントデータとして利用する場合、前述した通り、XPSデータは、幾つかに分割されて出力装置に送信される。この際、前述したデータ順に並んだXPSデータでは、送信開始後、「FixedPage(FP)」、「FixedDocument(FD)」、「FixedDocumentSequence(FDS)」の情報を有するファイルデータ部が全て送信された後に、「_rels/.rels」の情報を有するファイルデータ部が出力装置に送信されることになる。
【0026】
ここで、前述した通り、「_rels/.rels」は、文書の開始点となるパーツであるため、出力装置では、「_rels/.rels」の情報を有するファイルデータ部が受信されるまで、XPSデータの解析を開始できない。その結果、XPSデータの受信処理とXPSデータの解析処理と並行して行うことができず、全体としての印刷スループットが低下してしまう。なお、仮に、XPSデータの先頭に、「_rels/.rels」の情報を有するファイルデータ部があったとしても、次に、参照すべき「FixedDocumentSequence(FDS)」の情報を有するファイルデータ部が最後尾等にあるようなデータ順であった場合には、当該ファイルデータ部が受信されるまで、XPSデータの解析処理を中断せざるを得ず、この場合においても、全体としての印刷スループットが低下してしまう。
【0027】
ところで、XPSには、1つのパーツを複数のパーツに分割するインターリーブと呼ばれる仕様が存在し、MXDWの設定でインターリーブの仕様に則ったデータを作成することが可能である(例えば、非特許文献1、非特許文献2参照)。この仕様に即したXPSデータを「ピースデータ」と言う。つまり、XPSデータ内において、意味のある最小単位は「パーツ」であるが、物理的なデータとしての最小単位は「ピース」である。
【0028】
通常のXPSデータをインターリーブの仕様に即したデータに変換することをインターリーブ化と呼ぶ。図28は、図25に示すXPSデータをインターリーブ化した際のパーツデータの一例を示す模式図である。図28に示すインターリーブ化では、次のパーツへの参照が存在するところまで各パーツを分割している。また、図29は、インターリーブ化した際のXPSデータの構成のイメージの一例を示す模式図である。また、図30は、インターリーブ化した際のXPSファイルのデータ順の一例を示す模式図である。
【0029】
ここで、図28に示すように分割した各パーツを、図30に示すように、各参照部の直後に参照先データが配置されるようなデータ順に並び替えることにより、前述した印刷スループットが低下する問題は解決可能である。なお、図28〜図30では、リレーションシップパーツとプリントチケットが省略されている箇所があるが、図を簡略しているだけであり、実際は存在している。例えば、/Documents/1/Page/1.fpageのリレーションシップパーツとそのリレーションシップパーツから参照されるプリントチケットは、図30の3003と3004との間に存在している。
【0030】
さて、図30に示すように各参照部の直後に参照先データが配置されるようなデータ順に並び替えることにより、印刷スループットが低下する問題が解決可能な理由としては、出力装置では解析すべきパーツの情報を有するファイルデータ部を順番に受信していくため、当該ファイルデータ部の受信後すぐに当該ファイルデータ部の解析処理を行うことが可能になるためである。
【0031】
例えば、図29に示す例では、出力装置は、2個に分割された「_rels/.rels」の1個目のパーツの情報を有するファイルデータ部を受信する。ここで、出力装置は、最初に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始できる。
【0032】
続いて、出力装置は、n個に分割された「FixedDocumentSequence(FDS)」の1個目のパーツの情報を有するファイルデータ部を受信する。ここで、出力装置は、次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始できる。
【0033】
続いて、出力装置は、i個に分割された1つ目のドキュメントの構成情報が記述された「FixedDocument(FD)」の1個目のパーツの情報を有するファイルデータ部を受信する。ここで、出力装置は、次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始できる。
【0034】
続いて、出力装置は、1つ目のドキュメントの1ページ目のページ情報が記述された「FixedPage(FP)」の情報を有するファイルデータ部を受信する。ここで、出力装置は、次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始できる。その結果、1つ目のドキュメントの1ページ目の印刷を行うことができる。
【0035】
続いて、出力装置は、i個に分割された1つ目のドキュメントの構成情報が記述された「FixedDocument(FD)」の2個目のパーツの情報を有するファイルデータ部を受信する。ここで、出力装置は、次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始できる。
【0036】
続いて、出力装置は、1つ目のドキュメントの2ページ目のページ情報が記述された「FixedPage(FP)」の情報を有するファイルデータ部を受信する。ここで、出力装置は、次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始できる。その結果、1つ目のドキュメントの2ページ目の印刷を行うことができる。
【0037】
以降、同様に、ファイルデータ部を受信後すぐに当該パーツの解析ができるようになり、印刷スループットが低下する問題は解決される。
【0038】
次に、ZIP圧縮されたデータの構成及びデータの検索方法について説明する。
【0039】
ZIP圧縮データには、Local_File_Headerやファイルデータと呼ばれるデータ部分が存在する。ここで、ファイルデータの直前には、必ず、Local_File_Headerが存在し、このLocal_File_Headerとファイルデータとの組によって、伸張データの1つのファイルの情報が構成される。言い換えると、Local_File_Headerとファイルデータとの1組によって、伸張データの1つのファイルを伸張することができる。以降、Local_File_Headerとファイルデータとの組を合わせて「ファイルデータ部」と称する。また、伸張データに複数のファイルが存在する場合には、ファイルデータ部が複数組列挙される。図31は、ZIP圧縮データの構成の一例を示す模式図である。
【0040】
ところで、ZIP圧縮では、伸張データのディレクトリ構成を保持したままの圧縮が可能であるが、あるファイルが伸張データ時のディレクトリ構成では上位の階層に存在したとしても、圧縮時に当該ファイルを構成するファイルデータ部がデータの前方にあるとは限らない。言い換えると、伸張時のディレクトリ構成上の階層位置と圧縮時のファイルデータ部の位置に関連性はない。
【0041】
次に、XPSパーツ名が判明している場合、XPSからパーツデータを取得する方法について説明する。
図31に示すLocal_File_Headerの内部構造には、先頭データが"PK34"というバイナリデータであり、その後、既定の位置に当該Local_File_Headerと対になるファイルデータのデータ名とデータサイズが記述されている。よって、"PK34"というバイナリデータを先頭から順番に検索し、検索後、規定の位置に存在するファイルデータのデータ名を検索して取得・判定し、その結果、所望していたパーツデータでなければ、前記データサイズ分、後方に存在するLocal_File_Headerの"PK34"というバイナリデータを前回検索した位置から再度検索する。そして、上述した処理を目的のパーツデータを取得できるまで繰り返し行う。
【0042】
【非特許文献1】XML Paper Specification(XPS Specification and Reference Guide)の「17.1 Interleaving Optimization」、インターネット<URL:http://www.ecma−international.org/memento/TC46−availabledocs.htm>からダウンロード可能な文献
【非特許文献2】Office Open XML Part 2(Open Packaging Conventions)の「9.1.4 Interleaving」、インターネット<URL:http://www.ecma−international.org/publications/standards/Ecma−376.htm>からダウンロード可能な文献
【発明の開示】
【発明が解決しようとする課題】
【0043】
前述したMXDWで作成されたXPSファイル内のFixedPage(FP)が複数のイメージファイルを参照している場合、インターリーブ機能を使用して作成する/しないに関わらず、図32に示すように、FP(3210)よりも前方にイメージファイルが配置される。
【0044】
また、図33は、図32に示すFP(3210)の一例を示す模式図である。具体的に、図33には、図32のFP(3210)に示される「/Documents/1/Page/1.fpage」の内容が示されている。図33に示すように、FP(3210)は、「/Resource/Image/1.jpeg」を2度参照し、「/Resource/Image/2.jpeg」を1度参照し、「/Resource/Image/3.jpeg」を2度参照し、「/Resource/Image/4.jpeg」を1度参照している。そして、このようなデータがプリンタ(出力装置)に送信された場合、上述したイメージファイルをFixedPage(FP)の処理開始時まで保持しておかなければならず、記憶領域が少ないプリンタでは、印刷できない可能性がある。
【0045】
そこで、非特許文献1や非特許文献2に記載されているインターリーブをFixedPage(FP)に対しても適用し、図33に示すFPを、図34に示すようにイメージファイルを参照している箇所で分割し、直後に参照するイメージファイルを配置して、図35に示すようなXPSファイルを作成して、プリンタに送信するという方法が考えられる。この方法により、プリンタ側で、イメージファイルを受け取ると同時に処理を行い、処理の終了とともにイメージファイルを記憶領域から削除することで、記憶領域の少ないプリンタであっても印刷が可能になる。
【0046】
しかしながら、この方法では、FPの分割数が増えることによる、ZIP圧縮ファイルの解凍処理の増加によるスループット(印刷速度)の低下が問題となる。また、FPから、同一のイメージファイルを複数回参照することが可能であるため、イメージファイルの参照箇所ごとに分割送信して、プリンタ側で処理終了ごとに消去するのであれば、図35に示す3507と3511のようにイメージファイルを複数回送信する必要があり、ネットワーク回線の伝送効率の低い場合、スループットの低下が問題となる。
【0047】
そこで、プリンタのメモリ上に参照するイメージファイルを一時的に記憶しておき、同一のイメージファイルについては、プリンタにおいて、必要に応じてメモリから読み出すようにする方法が考えられる。
【0048】
しかしながら、この場合、例えば、メモリ容量が少ないローコストのプリンタにおいて、イメージファイルの多いXPSデータをダイレクト印刷する場合には、メモリオーバとなってしまうことが起こる。そして、メモリオーバになった場合、プリンタは、例えば、イメージファイルの解像度を落とすなどの処理を行って印刷を行うようにしてしまうため、ユーザの期待する適切な印刷物が得られないという問題があった。
【0049】
本発明は、このような問題点に鑑みてなされたものであり、メモリ容量の少ないプリンタであっても、リソースファイルを含むアーカイブデータ(XPSデータ)を適切に印刷処理することができる仕組みを提供することを目的とする。
【課題を解決するための手段】
【0050】
本発明の情報処理装置は、プリンタと通信可能に接続された情報処理装置であって、ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含むアーカイブデータを取得するアーカイブデータ取得手段と、前記印刷対象データのファイルを分割する分割手段と、前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割手段により分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成手段とを有する。
【0051】
本発明の印刷制御システムは、情報処理装置とプリンタとで構成される印刷制御システムであって、前記情報処理装置は、ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含み構成されるアーカイブデータを取得するアーカイブデータ取得手段と、前記印刷対象データのファイルを分割する分割手段と、前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割手段により分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成手段とを有し、前記プリンタは、前記アーカイブデータ生成手段で生成されたアーカイブデータを順次受信する受信手段と、前記アーカイブデータに含まれる属性情報ファイルの参照回数に従って、前記受信手段で受信したアーカイブデータに含まれるリソースファイルの削除を行う削除手段とを有する。
【0052】
本発明の情報処理装置の制御方法は、プリンタと通信可能に接続された情報処理装置の制御方法であって、ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含むアーカイブデータを取得するアーカイブデータ取得ステップと、前記印刷対象データのファイルを分割する分割ステップと、前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割ステップにより分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成ステップとを有する。
【0053】
本発明のプログラムは、プリンタと通信可能に接続された情報処理装置の制御方法をコンピュータに実行させるためのプログラムであって、ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含むアーカイブデータを取得するアーカイブデータ取得ステップと、前記印刷対象データのファイルを分割する分割ステップと、前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割ステップにより分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成ステップとをコンピュータに実行させるためのものである。
【発明の効果】
【0054】
本発明によれば、メモリ容量の少ないプリンタであっても、リソースファイルを含むアーカイブデータを適切に印刷処理することができる。
【発明を実施するための最良の形態】
【0055】
以下に、図面を参照しながら、本発明を実施するための最良の形態(実施形態)について説明する。なお、以下に示す本発明の実施形態においては、複数のデータ(ファイル)を1つのデータ(ファイル)にまとめたアーカイブデータ(アーカイブファイル)として、XPSデータ(XPSファイル)を適用した例について説明する。
【0056】
図1は、本発明の実施形態に係る印刷制御システム10の概略構成の一例を示す模式図である。なお、本発明の実施形態に係る印刷制御システム10は、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、更には、LAN、WAN等のネットワークを介して接続がなされて処理が行われるシステムであっても、適用できる。即ち、図1に示す印刷制御システム10(以降の説明では、図1に示す印刷制御システムを「印刷制御システム10−1」とする)は、一例を示したものであり、用途や目的に応じて様々な構成例があることは言うまでもない。
【0057】
図1に示す印刷制御システム10−1は、情報処理装置に相当するホストコンピュータ(クライアントコンピュータ)100と、出力装置(印刷装置)に相当するプリンタ200と、これらの装置を通信可能に接続するネットワーク300を有して構成されている。
【0058】
ホストコンピュータ100は、図1に示すように、CPU101、RAM102、ROM103、システムバス104、入力コントローラ(以下、「入力C」と称する)105、ビデオコントローラ(以下、「VC」と称する)106、メモリコントローラ(以下、「MC」と称する)107、通信インターフェース(以下、「通信I/F」と称する)108、キーボード(以下、「KB」と称する)109、CRTディスプレイ(以下、「CRT」と称する)110、及び、外部メモリ111を有して構成されている。
【0059】
CPU101は、ROM103或いは外部メモリ111に記憶されたプログラム等に基づいてシステムバス104に接続された各デバイスを制御して、当該ホストコンピュータ100における動作を統括的に制御する。
【0060】
RAM102は、CPU101の主メモリ、ワークエリア等として機能する。CPU101は、処理の実行に際して必要なプログラム等をRAM102にロードして、プログラムを実行することで各種の動作を実現する。
【0061】
ROM103には、CPU101の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)、CPU101が本実施形態に係るホストコンピュータ100の機能を実現するために必要な各種のプログラム等が記憶されている。なお、これらのプログラムは、外部メモリ111に記憶されている態様であってもよい。また、本実施形態で使用するOSは、例えばWindows_Vista(Microsoft社製)を想定するが、これに限定されるものではない。
【0062】
システムバス104は、CPU101、RAM102、ROM103、入力C105、VC106、MC107及び通信I/F108を、相互に通信可能に接続する。
【0063】
入力C105は、KB109やマウス等のポインティングデバイス(不図示)からの入力を制御する。
【0064】
VC106は、CRT110等の表示装置への表示を制御する。なお、表示装置は、CRTであっても、液晶ディスプレイ等のその他の表示装置であってもよい。
【0065】
MC107は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種のデータ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ111へのアクセスを制御する。
【0066】
通信I/F108は、ネットワーク300を介して、外部装置(図1に示す例では、プリンタ200)との通信を制御する。例えば、通信I/F108は、TCP/IPを用いたインターネット通信やプリンタ200との間でデータ送受信等が可能である。
【0067】
なお、CPU101は、例えばRAM102内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT110上での表示を可能としている。また、CPU101は、CRT110上のマウスカーソル(不図示)等でのユーザ指示を可能とする。
【0068】
プリンタ200は、CPU201、RAM202、ROM203、システムバス204、通信インターフェース(以下、「通信I/F」と称する)205、印刷部インターフェース(以下、「印刷部I/F」と称する)206、メモリコントローラ(以下、「MC」と称する)207、印刷部208、操作部209、及び、外部メモリ210を有して構成されている。
【0069】
CPU201は、ROM203或いは外部メモリ210に記憶されたプログラム等に基づいてシステムバス204に接続された各デバイスを制御して、当該プリンタ200における動作を統括的に制御する。例えば、CPU201は、ROM203或いは外部メモリ210に記憶されたプログラム等に基づいて印刷部(例えばプリンタエンジン)208に出力情報としての画像信号を出力する処理を行う。
【0070】
RAM202は、CPU201の主メモリ、ワークエリア等として機能する。なお、RAM202は、出力情報展開領域、環境データ格納領域、NVRAM等にも用いられる。CPU201は、処理の実行に際して必要なプログラム等をRAM202にロードして、プログラムを実行することで各種の動作を実現する。また、RAM202は、増設ポート(不図示)に接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
【0071】
ROM203には、フォントROM203a、プログラムROM203b、及び、データROM203cが設けられている。フォントROM203aには、上記出力情報を生成する際に使用する各種のフォントデータ等が記憶されている。プログラムROM203bには、CPU201がプリンタ200の各種機能を実現するために必要な各種のプログラムが記憶されている。データROM203cには、例えばCPU201が各種の処理を行う際に必要な各種のデータ(各種の情報も含む)が記憶され、また、外部メモリ210がないプリンタ200の場合には、ホストコンピュータ100で利用される情報等も記憶される。
【0072】
システムバス204は、CPU201、RAM202、ROM203、通信I/F205、印刷部I/F206、MC207、及び、操作部209を、相互に通信可能に接続する。
【0073】
通信I/F205は、ネットワーク300を介して、外部装置(図1に示す例では、ホストコンピュータ100)との通信を制御する。
【0074】
印刷部I/F206は、印刷部208との通信を制御する。
【0075】
MC207は、ハードディスク(HD)やICカード等の外部メモリ210へのアクセスを制御する。外部メモリ210は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、外部メモリ210は、1個に限らず、例えば、複数設けて、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。さらに、外部メモリ210は、例えば、NVRAM(不図示)を有し、操作部209からのプリンタモード設定情報を記憶するようにしてもよい。
【0076】
操作部209は、例えば、操作パネル及び操作パネルの操作のためのスイッチ、並びに、LED表示器等を備えて構成されており、ユーザにより操作されるものである。
【0077】
また、本実施形態では、プリンタ200がサポートするプリントデータは、XPSデータを想定しているが、同様のファイルフォーマットを有するデータであれば、これに限定されるものではない。
【0078】
図2は、本発明の実施形態に係る印刷制御システム10の概略構成の変形例を示す模式図である。
図2に示す印刷制御システム10−2は、図1に示すホストコンピュータ100(具体的には、100−1〜100−4)、図1に示すプリンタ200(具体的には、200−1〜200−2)、及び、図1に示すネットワーク300に加えて、ローカルインターフェース301と、プリントサーバコンピュータ400を有して構成されている。
【0079】
この場合、ホストコンピュータ100(100−1〜100−4)の通信I/F108は、ネットワークインターフェースカード(NIC)の機能を有するものとする。プリンタ200(200−1〜200−2)は、セントロニクスやUSB等のローカルインターフェース301を介してプリントサーバコンピュータ400と接続されて当該プリントサーバコンピュータ400を介してネットワーク300に接続される形態であっても、ネットワーク300に直接接続される形態であってもよい。なお、ネットワーク300に直接接続されているプリンタ200(具体的には、200−1)の通信I/F205は、ネットワークインターフェースカード(NIC)の機能を有するものとする。
【0080】
また、プリントサーバコンピュータ400を介してネットワーク300に接続されるプリンタ200(具体的には、200−2)に対して各ホストコンピュータ100から印刷ジョブを送信する場合、まず、各ホストコンピュータ100は、プリントサーバコンピュータ400へ印刷ジョブを送信する。そして、プリントサーバコンピュータ400は、各ホストコンピュータ100から送信されてきた印刷ジョブを、当該プリントサーバコンピュータ400のプリントサブシステム(不図示)を介して、プリンタ200へ送信する。これにより、各ホストコンピュータ100は、プリントサーバコンピュータ400を介して印刷ジョブをプリンタ200へ送信することができる。
【0081】
また、ネットワーク300に直接接続されているプリンタ200(具体的には、200−1)に対して各ホストコンピュータ100から印刷ジョブを送信する場合、各ホストコンピュータ100は、ネットワーク300に直接接続されているプリンタ200へ印刷ジョブを送信する。
【0082】
次に、ホストコンピュータ100による前述したGDIプリントパスを用いた印刷制御機能の機能構成について説明を行う。
【0083】
図3は、本発明の実施形態に係る印刷制御システム10のホストコンピュータ100によるGDIプリントパスを用いた印刷制御機能の機能構成の一例を示す模式図である。
ホストコンピュータ100には、GDIプリントパスを用いた際の印刷制御機能として、図3に示すように、アプリケーション131、GDI132、ユーザインターフェースドライバ133、スプーラ134、EMFスプールファイル135、プリントプロセッサ136、プリンタグラフィックスドライバ137及びランゲージモニタ138が構成される。
【0084】
ここで、アプリケーション131、GDI132、ユーザインターフェースドライバ133、スプーラ134、プリントプロセッサ136及びプリンタグラフィックスドライバ137は、例えば、図1に示すCPU101とROM103或いは外部メモリ111に記憶されているプログラムとから構成される。また、EMFスプールファイル135は、例えば、図1に示す外部メモリ111に構成される。また、ランゲージモニタ138は、例えば、図1に示すCPU101とROM103或いは外部メモリ111に記憶されているプログラム、並びに、通信I/F108から構成される。
【0085】
アプリケーション131は、GDI132を介してプリンタ200に対して印刷条件の設定を行う。より具体的に、アプリケーション131は、例えば、印刷に使用する用紙のサイズの設定や逆順で印刷するか否かの設定、製本の体裁で印刷を行う製本印刷を実施するか否かの設定など、各種の印刷条件を設定する処理を行う。さらに、アプリケーション131は、GDI132等を介してプリンタ200に対して文書や写真画像等の描画命令を発行して印刷実行を指示する。以下、図3の説明等において、描画命令の発行に伴ってGDI132を介してスプーラ134に通知される文書・画像データ及び描画命令を総称して「印刷データ」と称する。
【0086】
GDI132は、アプリケーション131等からの指示に基づき、GDIプリントパスに係る処理を行う。
【0087】
ユーザインターフェースドライバ133は、GDI132を介して通知された印刷条件をプリンタ200に適合する内容に変更し、最終的な印刷条件を確定する処理を行う。さらに、ユーザインターフェースドライバ133は、GDI132を介して、最終的に確定した印刷条件をスプーラ134に通知する処理を行う。
【0088】
スプーラ134は、GDI132を介して通知された印刷データ及び印刷条件をEMFスプールファイル135に格納する。
【0089】
プリントプロセッサ136は、スプーラ134を介してEMFスプールファイル135に格納された印刷データを取得し、当該印刷データを1ページ単位で処理する。
【0090】
プリンタグラフィックスドライバ137は、GDI132を介してプリントプロセッサ136で処理された印刷データを取得し、当該印刷データをプリンタ200で印刷出力可能なPDLデータに変換する処理を行う。
【0091】
ランゲージモニタ138は、プリンタ200と双方向の通信を行い、プリンタ200の情報を取得してCRT110に表示する処理を行う。また、ランゲージモニタ138は、プリンタグラフィックスドライバ137が生成したPDLデータをプリンタ200に供給する。なお、ランゲージモニタ138は、プリンタ200が備えるメモリ容量や、エンジンコントローラの構成により異なる転送方法を採用することができる。
【0092】
続いて、GDIプリントパスを用いた印刷制御機能における一連の動作について説明する。
【0093】
まず、アプリケーション131は、ユーザからの操作指示に従って、印刷条件の設定、及び任意の文書又は写真画像等の印刷実行の指示を行う。
【0094】
GDI132は、アプリケーション131から印刷実行の指示を受けると、ユーザインターフェースドライバ133に対して、プリンタ200での印刷条件の設定内容、及び、印刷開始のイベントを通知する。
【0095】
ユーザインターフェースドライバ133は、GDI132からプリンタ200での印刷条件の設定内容の通知を受けると、通知された印刷条件の設定内容を参照して、プリンタ200において印刷出力可能な設定内容であるか否かを判断する。ここで、ユーザインターフェースドライバ133は、GDI132から通知された印刷条件の設定内容が、プリンタ200において印刷出力可能な設定内容になっていないと判断した場合には、プリンタ200において印刷出力可能な設定内容になるように、印刷条件の設定内容を更新(一部更新も含む)し、印刷条件を確定する。
【0096】
続いて、アプリケーション131は、GDI132を介して、文書・画像データの描画命令を発行する。
【0097】
スプーラ134は、アプリケーション131における描画命令の発行に伴って生成された印刷データ、及び、ユーザインターフェースドライバ133が確定した印刷条件の通知を受けると、通知された印刷データ及び印刷条件をEMFスプールファイル135に格納する。
【0098】
プリントプロセッサ136は、スプーラ134を介してEMFスプールファイル135から印刷条件の設定内容及び印刷データを取得する。続いて、プリントプロセッサ136は、GDI132を介して、当該印刷条件の設定内容及び印刷データを1ページ単位で処理し、これをプリンタグラフィックスドライバ137に供給する。ここで、GDI132は、プリントプロセッサ136からプリンタグラフィックスドライバ137に印刷データを供給する際に、印刷データに含まれる描画命令をグラフィックス描画コマンドに変換する処理を行う。
【0099】
プリンタグラフィックスドライバ137は、GDI132により生成されたグラフィックス描画コマンド及びGDI132から通知された印刷条件の設定内容に基づいて、GDI132を介してプリントプロセッサ136から供給された印刷データから、プリンタ200が解釈できるPDLデータを生成する。
【0100】
ランゲージモニタ138は、当該ホストコンピュータ100からプリンタ200にPDLデータを伝送するために使用されるインターフェースを経由して、プリンタグラフィックスドライバ137から供給されたPDLデータをプリンタ200に供給(送信)する。
【0101】
そして、プリンタ200(例えばCPU201)は、ランゲージモニタ138から供給されたPDLデータを解釈し、印刷画像データを用紙上に印刷出力する処理を行う。
【0102】
次に、ホストコンピュータ100による前述したXPSプリントパスを用いた印刷制御機能の機能構成について説明を行う。
【0103】
図4は、本発明の実施形態に係る印刷制御システム10のホストコンピュータ100によるXPSプリントパスを用いた印刷制御機能の機能構成の一例を示す模式図である。ここで、図4においては、図3に示す構成と同様の機能を有する構成については、同じ符号を付している。
【0104】
ホストコンピュータ100には、XPSプリントパスを用いた際の印刷制御機能として、図4に示すように、アプリケーション131、WPF(Windows_Presentation_Foundation)印刷サポート141、ユーザインターフェースドライバ133、スプーラ134、XPSスプールファイル142、フィルタパイプラインマネージャ143、レイアウトフィルタ144、レンダリングフィルタ145及びランゲージモニタ138が構成される。
【0105】
ここで、アプリケーション131、WPF印刷サポート141、ユーザインターフェースドライバ133、スプーラ134、フィルタパイプラインマネージャ143、レイアウトフィルタ144及びレンダリングフィルタ145は、例えば、図1に示すCPU101とROM103或いは外部メモリ111に記憶されているプログラムとから構成される。また、XPSスプールファイル142は、例えば、図1に示す外部メモリ111に構成される。また、ランゲージモニタ138は、例えば、図1に示すCPU101とROM103或いは外部メモリ111に記憶されているプログラム、並びに、通信I/F108から構成される。
【0106】
アプリケーション131は、WPF印刷サポート141を介してXPSデータを作成する処理を行う。また、アプリケーション131は、文書や写真画像等のドキュメント、印刷条件、描画命令をXPSデータに対して設定する処理を行う。以下、図4の説明等において、XPSデータに含まれている文書や写真画像等のドキュメント及び描画命令を総称して「印刷データ」と称する。さらに、アプリケーション131は、WPF印刷サポート141を介して印刷実行を指示する。
【0107】
WPF印刷サポート141は、アプリケーション131からの指示に基づき、XPSデータを構成(作成)する処理を行う。また、WPF印刷サポート141は、当該XPSデータから印刷条件の設定内容を取り出して、ユーザインターフェースドライバ133に通知する処理を行う。また、WPF印刷サポート141は、ユーザインターフェースドライバ133が確定した印刷条件の設定内容をXPSデータに設定する処理を行う。さらに、WPF印刷サポート141は、XPSデータをスプーラ134に通知する処理を行う。
【0108】
ユーザインターフェースドライバ133は、WPF印刷サポート141から通知された印刷条件をプリンタ200に適合する内容に変更し、最終的な印刷条件を確定する処理を行う。さらに、ユーザインターフェースドライバ133は、最終的に確定した印刷条件をWPF印刷サポート141に通知する処理を行う。
【0109】
スプーラ134は、WPF印刷サポート141から通知されたXPSデータをXPSスプールファイル142に格納する。
【0110】
フィルタパイプラインマネージャ143は、まず、スプーラ134を介してXPSスプールファイル142に格納されたXPSデータを取得する。そして、フィルタパイプラインマネージャ143は、取得したXPSデータをレイアウトフィルタ144及びレンダリングフィルタ145を介してプリンタ200で印刷出力可能なPDLデータに変換する処理を行う。
【0111】
レイアウトフィルタ144は、XPSデータ内の印刷データやページ構成を編集する処理を行う。
【0112】
レンダリングフィルタ145は、レイアウトフィルタ144により編集されたXPSデータ内の印刷データをプリンタ200で印刷出力可能なPDLデータに変換する処理を行う。ただし、本発明の実施形態では、XPSデータをプリントデータとして用い、XPSデータをプリンタ200に送信して、プリンタ200でXPSデータから描画する画像データを生成するため、レンダリングフィルタ145は使用されない。つまり、このレンダリングフィルタ145を通さずに処理がされる(XPSデータダイレクトプリント)。そのため、レンダリングフィルタ145を備えないようにすることも可能である。
【0113】
ランゲージモニタ138は、プリンタ200と双方向の通信を行い、プリンタ200の情報を取得してCRT110に表示する処理を行う。また、ランゲージモニタ138は、フィルタパイプラインマネージャ143から通知されたXPSデータをプリンタ200に供給する。なお、ランゲージモニタ138は、プリンタ200が備えるメモリ容量や、エンジンコントローラの構成により異なる転送方法を採用することができる。
【0114】
ここで、前述したXPSデータに含まれるパーツデータについて再度説明する。
XPSデータには、前述したように、以下のa)〜f)に示すパーツが存在し、それぞれ、以下のような参照を有する。
【0115】
a)_rels/.rels:
文書の開始点となるパーツである。後述するb)FixedDocumentSequenceへの参照を有する。
【0116】
b)FixedDocumentSequence(FDS):
1つの文書の構成情報が記述されるパーツである。後述するc)FixedDocumentへの参照を有する。なお、1つのデータは、複数のドキュメントを有することができる。即ち、FDSは、複数のFixedDocumentへの参照を有することができる。
【0117】
c)FixedDocument(FD):
1つのドキュメントに存在する複数のページをページ順に並べて束ねるためのパーツである。即ち、1つのドキュメントの構成情報が記述されるパーツであり、後述するd)FixedPageへの参照を有する。なお、1つのドキュメントは、複数のページを有することができる。即ち、FDは、複数のFixedPageへの参照を有することができる。
【0118】
d)FixedPage(FP):
1ページの描画内容が記述されたパーツである。必要に応じて、イメージファイルやフォントファイルなどの外部リソースファイルへの参照を有することができる。例えば、当該ページにイメージの描画が存在する場合には、当該イメージファイルへの参照を有することになる。
【0119】
e)FixedPage.rels(FP.rels):
d)FixedPageに関連するパーツへの参照情報が記述されたパーツである。参照先としては、例えば、イメージファイル、フォントファイル、印刷設定情報が記述された後述するプリントチケットファイルなどである。
【0120】
f)プリントチケット:
予め定義されたXMLスキーマの形式に従って記述された印刷条件の設定が記述されたファイルである。以下、印刷設定を行うために予め定義されたXMLスキーマの形式を「プリントスキーマ」と称し、印刷スキーマに従って印刷条件が記述されているXMLファイルを「プリントチケット」と称する。なお、プリントチケットを言い換えると、印刷に用いられる属性を記憶する属性情報ファイルである。
【0121】
ここで、XPSデータに包含される各パーツの参照関係の論理的構造については、前述したように、図24にその一例が示され、また、XMLファイルの記述に基づいた参照関係については、前述したように、図25にその一例が示されている。
【0122】
続いて、XPSプリントパスを用いた印刷制御機能における一連の動作について説明する。
【0123】
まず、アプリケーション131は、ユーザからの操作指示に従って、任意の文書又は写真画像等のドキュメントを読み込む処理を行う。なお、前述した任意の文書には、予め作成されていたXPSデータも含まれる。
【0124】
続いて、アプリケーション131は、ユーザからの操作指示に従って、XPSデータの作成を行い、文書や写真画像等のドキュメント、印刷条件、描画命令をXPSデータに設定する。なお、アプリケーション131は、予め作成されていたXPSデータを読み込んだ場合には、新たにXPSデータを作成することはなく、読み込んだXPSデータに含まれる印刷条件や描画命令をユーザからの操作指示に従って編集すればよい。
【0125】
続いて、アプリケーション131は、ユーザからの操作指示に従って、XPSデータを用いて印刷実行の指示を行う。
【0126】
WPF印刷サポート141は、アプリケーション131から印刷実行の指示を受けると、XPSデータ内のプリントチケットを取り出し、印刷条件の設定内容として当該プリントチケットをユーザインターフェースドライバ133に通知する。
【0127】
ユーザインターフェースドライバ133は、WPF印刷サポート141からプリンタ200での印刷条件の設定内容の通知を受けると、通知された印刷条件の設定内容を参照して、プリンタ200において印刷出力可能な設定内容であるか否かを判断する。ここで、ユーザインターフェースドライバ133は、WPF印刷サポート141から通知された印刷条件の設定内容が、プリンタ200において印刷出力可能な設定内容になっていないと判断した場合には、プリンタ200において印刷出力可能な設定内容になるように、印刷条件の設定内容を更新(一部更新も含む)し、印刷条件を確定する。続いて、ユーザインターフェースドライバ133は、確定した印刷条件によりプリントチケットを更新し、WPF印刷サポート141に通知する。
【0128】
WPF印刷サポート141は、ユーザインターフェースドライバ133から通知されたプリントチケットをXPSデータに設定し、当該XPSデータをスプーラ134に通知する。
【0129】
スプーラ134は、WPF印刷サポート141からXPSデータの通知を受けると、通知されたXPSデータをXPSスプールファイル142に格納する。なお、WPF印刷サポート141を介さずにアプリケーション131からスプーラ134に任意のXPSデータを通知することも可能である。つまり、MXDWで作成したXPSデータを通知することも可能である。続いて、スプーラ134は、フィルタパイプラインマネージャ143に対して印刷開始のイベントを通知する。
【0130】
フィルタパイプラインマネージャ143は、スプーラ134から印刷開始のイベントの通知を受けると、スプーラ134を介してXPSスプールファイル142に格納されているXPSデータを取得する。続いて、フィルタパイプラインマネージャ143は、当該XPSデータをレイアウトフィルタ144に通知する。
【0131】
レイアウトフィルタ144は、通知されたXPSデータから印刷データ及びプリントチケットを取得する。続いて、レイアウトフィルタ144は、プリントチケットに記載されている印刷条件の設定内容に基づいて、印刷データの編集及びXPSデータのページ構成の編集を行う。なお、印刷データやページ構成の編集内容には、ビットマップの合成(ウォーターマーク)、ページ合成(割付)、ページ順序の変更(逆順)等が含まれる。続いて、レイアウトフィルタ144は、印刷データやページ構成の編集を終えた後のXPSデータをフィルタパイプラインマネージャ143に通知する。
【0132】
続いて、フィルタパイプラインマネージャ143は、レイアウトフィルタ144から通知されたXPSデータをレンダリングフィルタ145に通知する。
【0133】
レンダリングフィルタ145は、フィルタパイプラインマネージャ143から通知されたXPSデータから、印刷データ及びプリントチケットを取得する。続いて、レンダリングフィルタ145は、取得したプリントチケットに記載されている印刷条件の設定内容に基づいて、印刷データからプリンタ200が解釈できるPDLデータを生成し、当該PDLデータをフィルタパイプラインマネージャ143に通知する。
【0134】
続いて、フィルタパイプラインマネージャ143は、レンダリングフィルタ145から通知されたPDLデータをランゲージモニタ138に供給する。
【0135】
ランゲージモニタ138は、当該ホストコンピュータ100からプリンタ200にPDLデータを伝送するために使用されるインターフェースを経由して、フィルタパイプラインマネージャ143から供給されたPDLデータをプリンタ200に供給(送信)する。
【0136】
そして、プリンタ200(例えばCPU201)は、ランゲージモニタ138から供給されたPDLデータを解釈し、印刷画像データを用紙上に印刷出力する処理を行う。この本実施形態における処理は、特に、記憶領域が少ないプリンタ200において、XPSデータをPDLデータとして処理する場合に有効である。
【0137】
次に、ホストコンピュータ100によるXPSプリントパスを用いた印刷制御処理の処理手順について説明する。
【0138】
図5は、本発明の実施形態に係る印刷制御システム10のホストコンピュータ100によるXPSプリントパスを用いた印刷制御処理の処理手順の一例を示すフローチャートである。なお、以下の説明では、主として、レイアウトフィルタ144における処理について記載する。
【0139】
まず、図5のステップS101において、フィルタパイプラインマネージャ143は、スプーラ134から印刷開始のイベントの通知を受けると、スプーラ134を介して、XPSスプールファイル142に格納されているMXDWで作成されたXPSデータを取得する処理を行う。そして、フィルタパイプラインマネージャ143は、取得したXPSデータをレイアウトフィルタ144に通知する。
【0140】
続いて、ステップS102において、レイアウトフィルタ144は、フィルタパイプラインマネージャ143から通知されたXPSデータを解析して、当該XPSデータ内のプリントチケットに記載されている印刷条件の設定内容に基づいて、印刷データの編集及びXPSデータのページ構成の編集を行う。ここで、レイアウトフィルタ144は、記憶領域が少ないプリンタ200で処理可能なXPSデータに編集する。
【0141】
続いて、ステップS103において、レイアウトフィルタ144は、編集(生成)を終えた後のXPSデータをフィルタパイプラインマネージャ143に通知する処理を行う。
【0142】
その後、フィルタパイプラインマネージャ143は、レイアウトフィルタ144から通知されたXPSデータをレンダリングフィルタ145に通知する処理を行う。そして、レンダリングフィルタ145は、フィルタパイプラインマネージャ143から通知されたXPSデータから、プリンタ200が解釈できるPDLデータを生成し、当該PDLデータをフィルタパイプラインマネージャ143に通知する。ここで、本実施形態に係るプリンタ200は、XPSデータをプリントデータとして使用するものであるため、レンダリングフィルタ145では、レイアウトフィルタ144で処理されたXPSデータに対して、特に処理は行わない。
【0143】
そして、フィルタパイプラインマネージャ143は、レンダリングフィルタ145から通知されたプリントデータ(XPSデータ)をランゲージモニタ138に供給する。そして、ランゲージモニタ138は、当該ホストコンピュータ100からプリンタ200にPDLデータを伝送するために使用されるインターフェースを経由して、フィルタパイプラインマネージャ143から供給されたプリントデータ(XPSデータ)をプリンタ200に送信する(送信ステップ)。なお、プリンタ200へプリントデータ(XPSデータ)を送信する際には、プリンタ200で即時に印刷処理を実行できるようにするために、XPSデータを細分化データ(パケット)単位にしてプリンタ200に送信する。つまり、プリンタ200は、データストリームしながら、印刷を実行することが可能となる。
【0144】
次に、図5のステップS102におけるXPSデータの解析・編集処理の詳細について説明する。
図6は、図5のステップS102におけるXPSデータの解析・編集処理の詳細な処理手順の一例を示すフローチャートである。
【0145】
図5のステップS102の処理では、まず、図6のステップS201において、レイアウトフィルタ144は、未処理の「_rels/.rels」パーツデータが存在するか否かを判断する。ここで、未処理の「_rels/.rels」パーツデータが存在するか否かの判断は、この「_rels/.rels」パーツデータは前述したようにXML形式であるので、ルート要素の終了タグが未処理であるか否かによって判断する。具体的に、例えば図27に示すXPSファイルでは、2702に記述されている、</Relationships>の終了要素を検出したところで、「_rels/.rels」パーツデータの処理終了と判断する。なお、ルート要素の終了タグは、最後のピースに必ず存在する。また、インターリーブされていない場合には、「_rels/.rels」パーツデータは1つしか存在しない。以降、XML形式のパーツデータに関して、全て解析(処理)したか否かの判断は、同様の方法をとるものとする。
【0146】
ステップS201の判断の結果、未処理の「_rels/.rels」パーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図6におけるフローチャートの処理を終了する。即ち、図5のステップS102の処理を終了する。
【0147】
一方、ステップS201の判断の結果、未処理の「_rels/.rels」パーツデータが存在する場合には、ステップS202に進む。
【0148】
ステップS202に進むと、レイアウトフィルタ144は、未処理の「_rels/.rels」パーツデータを全て取得したか否かを判断する。ここで、「_rels/.rels」パーツデータを全て取得したか否かの判断は、インターリーブされている場合には、後述するXPSデータ内のパーツデータ(もしくはピースデータ)の検索時に最後のピース名が「/_rels/.rels/[i].last.piece」(iは0で始まる通し番号であり、1つのパーツが3つにインターリーブ(分割)処理されるのであれば、最後のピースのiは2となる)となっているので、Local_File_Headerの内容から当該ピースデータを取得し、前記ピース名のデータを取得した際に、全て取得したと判断する。以降、パーツデータを全て取得したか否かの判断は、同様の方法をとるものとする。また、インターリーブされていない場合には、「_rels/.rels」パーツデータは1データのみしか存在しないので、後述するステップS203の処理は1回しか行われない。
【0149】
ステップS202の判断の結果、未処理の「_rels/.rels」パーツデータの全てを取得していない場合には、ステップS203に進む。
【0150】
ステップS203に進むと、レイアウトフィルタ144は、次の「_rels/.rels」パーツデータまたはピースデータを検索し、これを伸長して取得する。この際、本実施形態では、当該検索の方法として、Local_File_Headerをデータの先頭から検索する方法を採用するものとする。また、このとき検索するLocal_File_Header内のデータ名としては、「_rels/.rels」或いはインターリーブされている場合の「_rels/.rels/[i].piece"である。以降、特に言及が無い限り、XPSデータ内のパーツデータ等の検索方法は、この方法を採用するものとする。また、本実施形態では、当該伸張の方法として、一般的なZIPデータの伸張方法を採用するものとし、伸張したデータはディレクトリ構成を保持したまま各種のファイルを外部メモリ111に書き出す形態で保存する。以降、XPSデータ内のパーツデータ等の伸長方法は、この方法を採用するものとする。
【0151】
ステップS203の処理が終了した場合、或いは、ステップS202において未処理の「_rels/.rels」パーツデータを全て取得したと判断された場合には、ステップS204に進む。
【0152】
続いて、ステップS204において、レイアウトフィルタ144は、取得した次の「_rels/.rels」パーツデータ(ピースデータ)を解析し、XPSデータ内のFDSのデータ名を取得する処理を行う。ここで、前述したように、「_rels/.rels」パーツデータ(ピースデータ)は、XML形式で記述されたファイルであり、本実施形態では、当該解析の方法として、一般的なXMLファイルの解析方法を採用するものとする。なお、以後、XML形式で記述されたファイルを解析する場合は、本例と同様に、一般的なXMLファイルの解析方法を採用するものとする。
【0153】
また、レイアウトフィルタ144は、「_rels/.rels」パーツデータ(ピースデータ)をXPSデータに追加する処理を行う。即ち、ここでの処理は、既に圧縮されている「_rels/.rels」パーツデータ(ピースデータ)を、元のXPSデータを利用して新たなXPSデータを生成するために当該元のXPSデータに追加する処理である。このXPSデータに追加された「_rels/.rels」パーツデータ(ピースデータ)は、例えば、図7の701のようになる。ここで、「_rels/.rels」パーツデータ(ピースデータ)は、初めのパーツデータ(ピースデータ)であるため、図7に示すように、XPSデータの先頭に配置(追加)される。
【0154】
続いて、ステップS205において、レイアウトフィルタ144は、ステップS204でFDSのデータ名を取得できたか否かを判断する。
【0155】
ステップS205の判断の結果、ステップS204でFDSのデータ名を取得できた場合には、ステップS206に進む。
【0156】
ステップS206に進むと、レイアウトフィルタ144は、当該FDSの処理を行う。
【0157】
ステップS206の処理が終了した場合、或いは、ステップS205においてFDSのデータ名を取得できなかったと判断された場合には、ステップS201に戻り、ステップS201以降の処理を再度行う。
【0158】
以上の図6に示すステップS201〜S206の処理を経ることにより、図5のステップS102におけるXPSデータの解析・編集処理が行われる。
【0159】
次に、図6のステップS206におけるFDSの処理の詳細について説明する。
図8は、図6のステップS206におけるFDSの処理の詳細な処理手順の一例を示すフローチャートである。
【0160】
図6のステップS206の処理では、まず、図8のステップS301において、レイアウトフィルタ144は、未処理のFDSパーツデータが存在するか否かを判断する。
【0161】
ステップS301の判断の結果、未処理のFDSパーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図8におけるフローチャートの処理を終了する。即ち、図6のステップS206の処理を終了する。
【0162】
一方、ステップS301の判断の結果、未処理のFDSパーツデータが存在する場合には、ステップS302に進む。
【0163】
ステップS302に進むと、レイアウトフィルタ144は、未処理のFDSパーツデータを全て取得したか否かを判断する。
【0164】
ステップS302の判断の結果、未処理のFDSパーツデータの全てを取得していない場合には、ステップS303に進む。
【0165】
ステップS303に進むと、レイアウトフィルタ144は、次のFDSパーツデータまたはピースデータを検索し、これを伸長して取得する。
【0166】
ステップS303の処理が終了した場合、或いは、ステップS302において未処理のFDSパーツデータを全て取得したと判断された場合には、ステップS304に進む。
【0167】
続いて、ステップS304において、レイアウトフィルタ144は、取得した次のFDSパーツデータ(ピースデータ)を解析し、XPSデータ内のFDのデータ名を1つ取得する処理を行う。
【0168】
また、レイアウトフィルタ144は、FDSパーツデータ(ピースデータ)をXPSデータに追加する処理を行う。即ち、ここでの処理は、既に圧縮されているFDSパーツデータ(ピースデータ)を、元のXPSデータのFDSパーツデータ(ピースデータ)を利用して新たなXPSデータを生成するために当該元のXPSデータに追加する処理である。このXPSデータに追加されたFDSパーツデータ(ピースデータ)は、例えば、図7の702のようになる。ここで、FDSパーツデータ(ピースデータ)は、図7に示すように、図6のステップS204の際に追加された「_rels/.rels」パーツデータ(ピースデータ)である701の後に配置(追加)される。
【0169】
続いて、ステップS305において、レイアウトフィルタ144は、ステップS304でFDのデータ名を取得できたか否かを判断する。
【0170】
ステップS305の判断の結果、ステップS304でFDのデータ名を取得できた場合には、ステップS306に進む。
【0171】
ステップS306に進むと、レイアウトフィルタ144は、当該FDの処理を行う。
【0172】
ステップS306の処理が終了した場合、或いは、ステップS305においてFDのデータ名を取得できなかったと判断された場合には、ステップS301に戻り、ステップS301以降の処理を再度行う。
【0173】
以上の図8に示すステップS301〜S306の処理を経ることにより、図6のステップS206におけるFDSの処理が行われる。
【0174】
次に、図8のステップS306におけるFDの処理の詳細について説明する。
図9は、図8のステップS306におけるFDの処理の詳細な処理手順の一例を示すフローチャートである。
【0175】
図8のステップS306の処理では、まず、図9のステップS401において、レイアウトフィルタ144は、未処理のFDパーツデータが存在するか否かを判断する。
【0176】
ステップS401の判断の結果、未処理のFDパーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図9におけるフローチャートの処理を終了する。即ち、図8のステップS306の処理を終了する。
【0177】
一方、ステップS401の判断の結果、未処理のFDパーツデータが存在する場合には、ステップS402に進む。
【0178】
ステップS402に進むと、レイアウトフィルタ144は、未処理のFDパーツデータを全て取得したか否かを判断する。
【0179】
ステップS402の判断の結果、未処理のFDパーツデータの全てを取得していない場合には、ステップS403に進む。
【0180】
ステップS403に進むと、レイアウトフィルタ144は、次のFDパーツデータまたはピースデータを検索し、これを伸長して取得する。
【0181】
ステップS403の処理が終了した場合、或いは、ステップS402において未処理のFDパーツデータを全て取得したと判断された場合には、ステップS404に進む。
【0182】
続いて、ステップS404において、レイアウトフィルタ144は、取得した次のFDパーツデータ(ピースデータ)を解析し、XPSデータ内のFPのデータ名を1つ取得する処理を行う。
【0183】
また、レイアウトフィルタ144は、FDパーツデータ(ピースデータ)をXPSデータに追加する処理を行う。即ち、ここでの処理は、既に圧縮されているFDパーツデータ(ピースデータ)を、元のXPSデータのFDパーツデータ(ピースデータ)を利用して新たなXPSデータを生成するために当該元のXPSデータに追加する処理である。このXPSデータに追加されたFDパーツデータ(ピースデータ)は、例えば、図7の703のようになる。ここで、FDパーツデータ(ピースデータ)は、図7に示すように、図8のステップS304の際に追加されたFDSパーツデータ(ピースデータ)である702の後に配置(追加)される。
【0184】
続いて、ステップS405において、レイアウトフィルタ144は、ステップS404でFPのデータ名を取得できたか否かを判断する。
【0185】
ステップS405の判断の結果、ステップS404でFPのデータ名を取得できた場合には、ステップS406に進む。
【0186】
ステップS406に進むと、レイアウトフィルタ144は、当該FPの処理を行う。
【0187】
ステップS406の処理が終了した場合、或いは、ステップS405の判断の結果、ステップS404でFPのデータ名を取得できなかった場合には、ステップS401に戻り、ステップS401以降の処理を再度行う。
【0188】
以上の図9に示すステップS401〜S406の処理を経ることにより、図8のステップS306におけるFDの処理が行われる。
【0189】
次に、図9のステップS406におけるFPの処理の詳細について説明する。
図10は、図9のステップS406におけるFPの処理の詳細な処理手順の一例を示すフローチャートである。
【0190】
図9のステップS406の処理では、まず、図10のステップS501において、レイアウトフィルタ144は、FPパーツデータを検索し、これを伸長して取得する。この際、MXDWで作成されたFPは、通常インターリーブされていない。
【0191】
続いて、ステップS502において、レイアウトフィルタ144は、ステップS501で取得したFPパーツデータを解析して、参照する外部リソースの参照回数を求めて、外部リソース参照リスト(外部リソース参照回数リスト)の作成処理を行う。
【0192】
続いて、ステップS503において、レイアウトフィルタ144は、プリントチケットを編集して、これをXPSデータの中に含める処理を行う。
【0193】
続いて、ステップS504において、レイアウトフィルタ144は、FPの分割処理を行う。
【0194】
以上の図10に示すステップS501〜S504の処理を経ることにより、図9のステップS406におけるFPの処理が行われる。
【0195】
次に、図10のステップS502における外部リソース参照回数リスト作成処理の詳細について説明する。
図11は、図10のステップS502における外部リソース参照回数リスト作成処理の詳細な処理手順の一例を示すフローチャートである。
【0196】
図10のステップS502の処理では、まず、図11のステップS601において、レイアウトフィルタ144は、図10のステップS501の処理で取得したFPパーツデータを解析して、描画命令を検出(抽出)する処理を行う。
【0197】
続いて、ステップS602において、レイアウトフィルタ144は、ステップS601で検出(抽出)した描画命令に、イメージデータやフォントデータ等への外部リソースの参照が含まれているか否かを判断する。
【0198】
ステップS602の判断の結果、ステップS601で検出した描画命令に外部リソースの参照が含まれている場合には、ステップS603に進む。
【0199】
ステップS603に進むと、レイアウトフィルタ144は、ステップS602で検出した外部リソースに係る外部リソース名が既に外部参照リソースリストに含まれているか否かを判断する。
【0200】
ここで、外部参照リソースリストについて説明を行う。
図12は、本発明の実施形態を示し、外部参照リソースリストの一例を示す模式図である。図12に示す外部参照リソースリストは、例えば、上述した図33に示すようなFPを解析した場合に作成されるものである。
【0201】
この図12に示す外部参照リソースリストは、レイアウトフィルタ144により作成されて、例えば、外部メモリ111に保存されるものである。また、図12に示すように、外部参照リソースリストには、各外部リソースごとに、外部リソース名、参照回数、及び、参照済みフラグの各項目が設定される。参照済みフラグは、図10のステップS504におけるFP分割処理で使用される領域である。
【0202】
ここで、再び、図11の説明に戻る。
ステップS603の判断の結果、ステップS602で検出した外部リソースに係る外部リソース名が既に図12に示す外部参照リソースリストに含まれている場合には、ステップS604に進む。
【0203】
ステップS604に進むと、レイアウトフィルタ144は、図12に示す外部参照リソースリスト内の当該外部リソース名の参照回数をインクリメントする処理を行う。
【0204】
一方、ステップS603の判断の結果、ステップS602で検出した外部リソースに係る外部リソース名が図12に示す外部参照リソースリストに含まれていない場合には、ステップS605に進む。
【0205】
ステップS605に進むと、レイアウトフィルタ144は、図12に示す外部参照リソースリストに、新規に検出した外部リソース名を追加し、その参照回数を1に設定する処理を行う。
【0206】
ステップS604もしくはステップS605の処理が終了した場合、または、ステップS602において描画命令に外部リソースの参照が含まれていないと判断された場合には、ステップS606に進む。
【0207】
ステップS606に進むと、レイアウトフィルタ144は、現在処理中のFPパーツデータの最後まで解析を行ったか否かを判断する。この判断の結果、現在処理中のFPパーツデータの最後までは未だ解析を行っていない場合には、ステップS601に戻り、ステップS601以降の処理を再度行う。
【0208】
一方、ステップS606の判断の結果、現在処理中のFPパーツデータの最後まで解析を行った場合には、図11におけるフローチャートの処理を終了する。即ち、図10のステップS502の処理を終了する。
【0209】
次に、図10のステップS503におけるプリントチケット編集処理の詳細について説明する。
図13は、図10のステップS503におけるプリントチケット編集処理の詳細な処理手順の一例を示すフローチャートである。
【0210】
図10のステップS503の処理では、まず、図13のステップS701において、レイアウトフィルタ144は、FP(FixedPage)パーツデータに関連付けられたプリントチケットが存在するか否かを判断する。
【0211】
ステップS701の判断の結果、FPパーツデータに関連付けられたプリントチケットが存在しない場合には、ステップS702に進む。
【0212】
ステップS702に進むと、レイアウトフィルタ144は、プリントチケットを作成して、これをXPSデータの中に含める処理を行う。
【0213】
ステップS702の処理が終了した場合、或いは、ステップS701においてFPパーツデータに関連付けられたプリントチケットが存在すると判断された場合には、ステップS703に進む。
【0214】
ステップS703に進むと、レイアウトフィルタ144は、図10のステップS502で作成した外部参照リソースリストの内容を、図14に示すように、<PrintTicket>ルートタグの1階層下の子要素として、<Feature>タグ1401を挿入する。
【0215】
ここで、図14は、本発明の実施形態を示し、プリントチケットの一例を示す模式図である。上述したように、レイアウトフィルタ144は、図10のステップS502で作成した外部参照リソースリストの内容を、<Feature>タグ1401に反映する。ここで反映されるのは、図12に示す外部参照リソースリストの「外部リソース名」と「参照回数」の情報である。具体的に、図14に示す<Feature>タグ1401の1402に「外部リソース名」の情報が反映され、<Feature>タグ1401の1403に「参照回数」の情報が反映されている。
【0216】
ここで、<Feature>タグ1401の挿入には、DOM等のインターフェースを備えた一般的なXML解析用モジュールを使用する。また、外部参照リソースリストの情報のプリントチケット内における表現の方法は、図12に示す外部参照リソースリストの情報を一意に復元することが可能であれば、どのような方法であってもよい。
【0217】
以上の図13に示すステップS701〜S703の処理を経ることにより、図10のステップS503におけるプリントチケット編集処理が行われる。
【0218】
次に、図10のステップS504におけるFPの分割処理の詳細について説明する。
図15は、図10のステップS504におけるFP分割処理の詳細な処理手順の一例を示すフローチャートである。
【0219】
図10のステップS504の処理では、まず、図15のステップS801において、レイアウトフィルタ144は、プリンタ200の限界メモリ量を取得する処理を行う。この限界メモリ量の値は、プリンタドライバ内に固定値として保持されている。
【0220】
続いて、ステップS802において、レイアウトフィルタ144は、例えば外部メモリ111の記憶領域に、外部リソースのメモリ量(合計)に相当する領域を確保し、その領域の値(外部リソースメモリ量合計)を0に設定する。
【0221】
続いて、ステップS803において、レイアウトフィルタ144は、例えば外部メモリ111の記憶領域に、処理中のFPデータのメモリ量(合計)に相当する領域を確保し、その領域の値(処理FPメモリ量合計)を0に設定する。
【0222】
ステップS802及びS803で確保した領域は、FPの分割処理中に使用される。
【0223】
続いて、ステップS804において、レイアウトフィルタ144は、描画命令を1つ検出(取得)する処理を行う。
【0224】
続いて、ステップS805において、レイアウトフィルタ144は、ステップS804の検出開始時から検出終了時までのXMLデータ量を、処理FPメモリ量合計に加算する処理を行う。
【0225】
続いて、ステップS806において、レイアウトフィルタ144は、ステップS804で検出した描画命令が外部リソースを参照するか否かを判断する。
【0226】
ステップS806の判断の結果、ステップS804で検出した描画命令が外部リソースを参照する場合には、ステップS807に進む。
【0227】
ステップS807に進むと、レイアウトフィルタ144は、ステップS806で検出した外部リソースが外部リソース参照リスト内に存在するか否かを判断する。ここで、外部リソースが外部リソース参照リスト内に存在しない場合は、既に、当該外部リソースがXPSデータに追加されているということである。
【0228】
ステップS807の判断の結果、ステップS806で検出した外部リソースが外部リソース参照リスト内に存在する場合には、ステップS808に進む。
【0229】
ステップS808に進むと、レイアウトフィルタ144は、外部参照リソースリスト内の当該外部リソースの参照回数をデクリメントし、参照済みフラグをONにする。
【0230】
続いて、ステップS809において、レイアウトフィルタ144は、外部参照リソースリスト内の当該外部リソースの参照回数が0であるか否かを判断する。
【0231】
ステップS809の判断の結果、外部参照リソースリスト内の当該外部リソースの参照回数が0である場合には、ステップS810に進む。
【0232】
ステップS810に進むと、レイアウトフィルタ144は、現在検出中の描画命令に基づいてFPの分割処理を行う。具体的には、FPピースデータを伸張して、伸張されたデータから現在検出中の描画命令のところまでを抽出し、当該抽出したデータを分割したFPピースデータ(パーツデータ)として作成する。より、詳細には、前回FPを分割した箇所より後から現在検出中の描画命令のところまででFPを分割し、これをFPピースデータ(パーツデータ)として作成する。そして、レイアウトフィルタ144は、作成したFPピースデータを圧縮してXPSデータに追加する。
【0233】
ここで、ステップS810で作成されたFPピースデータは、初めは、図9のステップS404で追加されたFDパーツデータ(ピースデータ)の後であって、図7の704及び705が追加された後に、図7の706として配置され追加される。また、次に作成されたFPピースデータは、後工程であるステップS811で追加された外部リソースの後に、図7の709として配置され追加される。
【0234】
続いて、ステップS811において、レイアウトフィルタ144は、外部参照リソースリストを先頭から検索し、現在検出した外部リソースを、分割したFPピースデータ(例えば、図7の706)の直後に続けてXPSデータに追加する。例えば、図7に示す例では、現在検出した外部リソースを、図7の707及び708として配置して追加する。
【0235】
続いて、ステップS812において、レイアウトフィルタ144は、外部参照リソースリストの先頭から現在検出した外部リソースまでを、当該外部参照リソースリストから削除する処理を行う。
【0236】
続いて、ステップS813において、レイアウトフィルタ144は、外部リソースメモリ量合計を0に設定する。
【0237】
続いて、ステップS814において、レイアウトフィルタ144は、処理FPメモリ量合計を0に設定する。
【0238】
また、ステップS809の判断の結果、外部参照リソースリスト内の当該外部リソースの参照回数が0でない場合には、ステップS815に進む。
【0239】
ステップS815に進むと、レイアウトフィルタ144は、外部リソースメモリ量合計に、検出した外部リソースのメモリ量(具体的には、外部リソースの展開後のメモリ量)を加算する処理を行う。この際、加算する外部リソースの展開後のメモリ量は、ZIPヘッダの中に記述されているのでそれを参照する。
【0240】
ステップS815の処理が終了した場合、ステップS806においてステップS804で検出した描画命令が外部リソースを参照しないと判断された場合、或いは、ステップS807においてステップS806で検出した外部リソースが外部リソース参照リスト内に存在しないと判断された場合には、ステップS816に進む。
【0241】
ステップS816に進むと、レイアウトフィルタ144は、処理FPメモリ量合計と外部リソースメモリ量合計との合計が、ステップS801で取得したプリンタ200の限界メモリ量を超えているか否かを判断する。
【0242】
ステップS816の判断の結果、処理FPメモリ量合計と外部リソースメモリ量合計との合計が、ステップS801で取得したプリンタ200の限界メモリ量を超えている場合には、ステップS817に進む。
【0243】
ステップS817に進むと、レイアウトフィルタ144は、ステップS810と同様の処理、即ち、現在検出中の描画命令に基づいてFPの分割を行い、当該分割により作成されたFPピースデータを圧縮してXPSデータに追加する。なお、追加するXPSデータは、ステップS801で取得したプリンタ200の限界メモリ量を超えない位置で分割されたデータである。
【0244】
続いて、ステップS818に進むと、レイアウトフィルタ144は、外部参照リソースリストを先頭から検索し、参照済みフラグがONになっている外部リソースを全て、ステップS817で追加したFPピースデータの直後に続けてXPSデータに追加する。
【0245】
続いて、ステップS819において、レイアウトフィルタ144は、外部参照リソースリストを先頭から検索し、参照済みフラグがONになっている外部リソースを全て、当該外部参照リソースリストから削除する処理を行う。
【0246】
続いて、ステップS820において、レイアウトフィルタ144は、ステップS813と同様の処理、即ち、外部リソースメモリ量合計を0に設定する。
【0247】
続いて、ステップS821において、レイアウトフィルタ144は、ステップS814と同様の処理、即ち、処理FPメモリ量合計を0に設定する。
【0248】
ステップS814の処理が終了した場合、ステップS821の処理が終了した場合、或いは、ステップS816において処理FPメモリ量合計と外部リソースメモリ量合計との合計がプリンタ200の限界メモリ量を超えていないと判断された場合には、ステップS822に進む。
【0249】
ステップS822に進むと、レイアウトフィルタ144は、現在処理中のFPパーツデータの最後まで解析を行ったか否かを判断する。この判断の結果、現在処理中のFPパーツデータの最後までは未だ解析を行っていない場合には、ステップS804に戻り、ステップS804以降の処理を再度行う。
【0250】
一方、ステップS822の判断の結果、現在処理中のFPパーツデータの最後まで解析を行った場合には、ステップS823に進む。
【0251】
ステップS823に進むと、レイアウトフィルタ144は、XPSデータに追加されていない箇所(処理部分)を最後のFPピースデータとして、XPSデータに追加する。その後、図15におけるフローチャートの処理を終了する。即ち、図10のステップS504の処理を終了する。これにより、FPパーツ(印刷対象データ)でリソースファイルを参照する参照回数を含む、FPパーツ(印刷対象データ)を印刷する際に利用される属性を記憶するプリントチケット(属性情報ファイル)と、分割により作成されたFPピースデータ(印刷対象データ)のファイルと、FDパーツ(ページ構成データ)のファイルと、リソースファイルとを含むアーカイブデータが生成される。
【0252】
図15において、ステップS810及びS811、または、ステップS818及びS819の処理を行うことによって、FPパーツデータを分割したXPSデータが生成され、メモリの少ないローコストプリンタでもXPSデータをダイレクト印刷することが可能となる。
【0253】
図16は、本発明の実施形態を示し、図4に示すレイアウトフィルタ144において分割されたFPの一例を示す模式図である。
図33に示すFPを図12に示す外部参照リソースリストを使用して分割処理した場合、プリンタ200の限界メモリ量を1度も超えることが無ければ、図16に示すようになる。そして、これを図7に示すように、XPSデータ内に配置することになる。なお、この場合、ステップS823で追加した最後のFPピースデータは、例えば、図16の1604及び図7の713で示される、「/Document/1/Page/1.Fpage/[3].Last.Piece」である。また、もしプリンタ200の限界メモリ量の値が小さければ、図34や図35のように参照箇所ごとに分割されることもあり得る。
【0254】
図17は、本発明の実施形態に係る印刷制御システム10のプリンタ200によるXPSプリントパスを用いた印刷制御処理の処理手順の一例を示すフローチャートである。
【0255】
まず、図17のステップS901において、プリンタ200のCPU201は、ホストコンピュータ100からXPSデータを受信する。この受信したXPSデータは、プリンタ200で即時に印刷処理させるために、ホストコンピュータ100でXPSデータを細分化データ(パケット)単位にして送信されたデータである。また、細分化データをデータストリームの受信に従って、順次プリンタ200の記憶領域(例えば、外部メモリ210)に記憶して格納する(データストリーム)。
なお、ステップS901のデータストリームは、後述するステップS902の処理を実行しながら行っている。また、ステップS902の処理は、データストリームしたデータをプリンタ200の記憶領域(例えば、外部メモリ210)から順次読み出し処理する。なお、ステップS902の処理は、各処理が実行できる単位(1つのファイル(パーツ)分)を受信していない(読み出しができない)場合は処理を待機する。
【0256】
続いて、ステップS902において、プリンタ200のCPU201は、ステップS901で取得したXPSデータの解析を行って、XPSデータの印刷処理を行う。
【0257】
次に、図17のステップS902におけるXPSデータの解析・印刷処理の詳細について説明する。
図18は、図17のステップS902におけるXPSデータの解析・印刷処理の詳細な処理手順の一例を示すフローチャートである。
【0258】
図17のステップS902の処理では、まず、図18のステップS1001において、プリンタ200のCPU201は、未処理の「_rels/.rels」パーツデータが存在するか否かを判断する。
【0259】
ステップS1001の判断の結果、未処理の「_rels/.rels」パーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図18におけるフローチャートの処理を終了する。即ち、図17のステップS902の処理を終了する。
【0260】
一方、ステップS1001の判断の結果、未処理の「_rels/.rels」パーツデータが存在する場合には、ステップS1002に進む。
【0261】
ステップS1002に進むと、プリンタ200のCPU201は、未処理の「_rels/.rels」パーツデータを全て取得したか否かを判断する。
【0262】
ステップS1002の判断の結果、未処理の「_rels/.rels」パーツデータの全てを取得していない場合には、ステップS1003に進む。
【0263】
ステップS1003に進むと、プリンタ200のCPU201は、次の「_rels/.rels」パーツデータまたはピースデータを検索し、これを伸長して取得する。
【0264】
ステップS1003の処理が終了した場合、或いは、ステップS1002において未処理の「_rels/.rels」パーツデータを全て取得したと判断された場合には、ステップS1004に進む。
【0265】
続いて、ステップS1004において、プリンタ200のCPU201は、取得した次の「_rels/.rels」パーツデータ(ピースデータ)を解析し、XPSデータ内のFDSのデータ名を取得する処理を行う。ここで、前述したように、「_rels/.rels」パーツデータ(ピースデータ)は、XML形式で記述されたファイルであり、本実施形態では、当該解析の方法として、一般的なXMLファイルの解析方法を採用するものとする。なお、以後、XML形式で記述されたファイルを解析する場合は、本例と同様に、一般的なXMLファイルの解析方法を採用するものとする。
【0266】
続いて、ステップS1005において、プリンタ200のCPU201は、ステップS1004でFDSのデータ名を取得できたか否かを判断する。
【0267】
ステップS1005の判断の結果、ステップS1004でFDSのデータ名を取得できた場合には、ステップS1006に進む。
【0268】
ステップS1006に進むと、プリンタ200のCPU201は、当該FDSの処理を行う。
【0269】
ステップS1006の処理が終了した場合、或いは、ステップS1005においてFDSのデータ名を取得できなかったと判断された場合には、ステップS1001に戻り、ステップS1001以降の処理を再度行う。
【0270】
以上の図18に示すステップS1001〜S1006の処理を経ることにより、図17のステップS902におけるXPSデータの解析・印刷処理が行われる。即ち、図18の処理は、ホストコンピュータ100のレイアウトフィルタ144で行われる図6の処理と同様の処理が行われる。
【0271】
次に、図18のステップS1006におけるFDSの処理の詳細について説明する。
図19は、図18のステップS1006におけるFDSの処理の詳細な処理手順の一例を示すフローチャートである。
【0272】
図18のステップS1006の処理では、まず、図19のステップS1101において、プリンタ200のCPU201は、未処理のFDSパーツデータが存在するか否かを判断する。
【0273】
ステップS1101の判断の結果、未処理のFDSパーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図19におけるフローチャートの処理を終了する。即ち、図18のステップS1006の処理を終了する。
【0274】
一方、ステップS1101の判断の結果、未処理のFDSパーツデータが存在する場合には、ステップS1102に進む。
【0275】
ステップS1102に進むと、プリンタ200のCPU201は、未処理のFDSパーツデータを全て取得したか否かを判断する。
【0276】
ステップS1102の判断の結果、未処理のFDSパーツデータの全てを取得していない場合には、ステップS1103に進む。
【0277】
ステップS1103に進むと、プリンタ200のCPU201は、次のFDSパーツデータまたはピースデータを検索し、これを伸長して取得する。
【0278】
ステップS1103の処理が終了した場合、或いは、ステップS1102において未処理のFDSパーツデータを全て取得したと判断された場合には、ステップS1104に進む。
【0279】
続いて、ステップS1104において、プリンタ200のCPU201は、取得した次のFDSパーツデータ(ピースデータ)を解析し、XPSデータ内のFDのデータ名を1つ取得する処理を行う。
【0280】
続いて、ステップS1105において、プリンタ200のCPU201は、ステップS1104でFDのデータ名を取得できたか否かを判断する。
【0281】
ステップS1105の判断の結果、ステップS1104でFDのデータ名を取得できた場合には、ステップS1106に進む。
【0282】
ステップS1106に進むと、プリンタ200のCPU201は、当該FDの処理を行う。
【0283】
ステップS1106の処理が終了した場合、或いは、ステップS1105においてFDのデータ名を取得できなかったと判断された場合には、ステップS1101に戻り、ステップS1101以降の処理を再度行う。
【0284】
以上の図19に示すステップS1101〜S1106の処理を経ることにより、図18のステップS1006におけるFDSの処理が行われる。即ち、図19の処理は、ホストコンピュータ100のレイアウトフィルタ144で行われる図8の処理と同様の処理が行われる。
【0285】
次に、図19のステップS1106におけるFDの処理の詳細について説明する。
図20は、図19のステップS1106におけるFDの処理の詳細な処理手順の一例を示すフローチャートである。
【0286】
図19のステップS1106の処理では、まず、図20のステップS1201において、プリンタ200のCPU201は、未処理のFDパーツデータが存在するか否かを判断する。
【0287】
ステップS1201の判断の結果、未処理のFDパーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図20におけるフローチャートの処理を終了する。即ち、図19のステップS1106の処理を終了する。
【0288】
一方、ステップS1201の判断の結果、未処理のFDパーツデータが存在する場合には、ステップS1202に進む。
【0289】
ステップS1202に進むと、プリンタ200のCPU201は、未処理のFDパーツデータを全て取得したか否かを判断する。
【0290】
ステップS1202の判断の結果、未処理のFDパーツデータの全てを取得していない場合には、ステップS1203に進む。
【0291】
ステップS1203に進むと、プリンタ200のCPU201は、次のFDパーツデータまたはピースデータを検索し、これを伸長して取得する。
【0292】
ステップS1203の処理が終了した場合、或いは、ステップS1202において未処理のFDパーツデータを全て取得したと判断された場合には、ステップS1204に進む。
【0293】
続いて、ステップS1204において、プリンタ200のCPU201は、取得した次のFDパーツデータ(ピースデータ)を解析し、XPSデータ内のFPのデータ名を1つ取得する処理を行う。
【0294】
続いて、ステップS1205において、プリンタ200のCPU201は、ステップS1204でFPのデータ名を取得できたか否かを判断する。
【0295】
ステップS1205の判断の結果、ステップS1204でFPのデータ名を取得できた場合には、ステップS1206に進む。
【0296】
ステップS1206に進むと、プリンタ200のCPU201は、当該FPの処理を行う。
【0297】
ステップS1206の処理が終了した場合、或いは、ステップS1205においてFPのデータ名を取得できなかったと判断された場合には、ステップS1201に戻り、ステップS1201以降の処理を再度行う。
【0298】
以上の図20に示すステップS1201〜S1206の処理を経ることにより、図19のステップS1106におけるFDの処理が行われる。即ち、図20の処理は、ホストコンピュータ100のレイアウトフィルタ144で行われる図9の処理と同様の処理が行われる。
【0299】
次に、図20のステップS1206におけるFPの処理の詳細について説明する。
図21は、図20のステップS1206におけるFPの処理の詳細な処理手順の一例を示すフローチャートである。
【0300】
図20のステップS1206の処理では、まず、図21のステップS1301において、プリンタ200のCPU201は、FPパーツデータに関連付けられたプリントチケット3505を検索し伸長して取得し、例えば、図12に示すような外部参照リソースリストを作成する。なお、プリントチケット3505は、FPパーツデータに先立ってプリンタ200は受信されるため、このタイミングで図12に示すような外部参照リソースリストを作成することが可能である。
【0301】
続いて、ステップS1302において、プリンタ200のCPU201は、未処理のFPパーツデータが存在するか否かを判断する。なお、FPパーツが分割されている場合、各FPパーツデータは、ステップS1204において取得したFPのデータ名に添え字[1][2][3]・・・[i]が付してある。つまり、FPパーツを分割した場合にも、FPのデータ名を用いて未処理のFPパーツデータが存在するか否かを判断することができる。
【0302】
ステップS1302の判断の結果、未処理のFPパーツデータが存在しない場合(即ち、全てのパーツデータについて解析(処理)済みである場合)には、図21におけるフローチャートの処理を終了する。即ち、図20のステップS1206の処理を終了する。
【0303】
一方、ステップS1302の判断の結果、未処理のFPパーツデータが存在する場合には、ステップS1303に進む。
【0304】
ステップS1303に進むと、プリンタ200のCPU201は、未処理のFPパーツデータを全て取得したか否かを判断する。
【0305】
ステップS1303の判断の結果、未処理のFPパーツデータの全てを取得していない場合には、ステップS1304に進む。
【0306】
ステップS1304に進むと、プリンタ200のCPU201は、次のFPパーツデータまたはピースデータを検索し、これを伸長して取得する。
【0307】
続いて、ステップS1305において、プリンタ200のCPU201は、ステップS1305で取得したFPパーツデータまたはピースデータの描画命令処理を行う。
【0308】
ステップS1305の処理が終了した場合、或いは、ステップS1303において未処理のFPパーツデータの全てを取得していないと判断された場合には、ステップS1302に戻り、ステップS1302以降の処理を再度行う。
【0309】
以上の図21に示すステップS1301〜S1305の処理を経ることにより、図20のステップS1206におけるFPの処理が行われる。
【0310】
次に、図21のステップS1305におけるFPパーツデータまたはピースデータの描画命令処理(FP描画命令処理)の詳細について説明する。
図22は、図21のステップS1305におけるFP描画命令処理の詳細な処理手順の一例を示すフローチャートである。
【0311】
図21のステップS1305の処理では、まず、図22のステップS1401において、プリンタ200のCPU201は、図21のステップS1304の処理で取得したFPデータを解析して、描画命令を検出(抽出)する処理を行う。
【0312】
続いて、ステップS1402において、プリンタ200のCPU201は、ステップS1401で検出(抽出)した描画命令に、イメージデータやフォントデータ等への外部リソースの参照が含まれているか否かを判断する。
【0313】
ステップS1402の判断の結果、ステップS1401で検出した描画命令に外部リソースの参照が含まれている場合には、ステップS1403に進む。
【0314】
ステップS1403に進むと、プリンタ200のCPU201は、プリンタ200の記憶領域(例えば、外部メモリ210)に格納されている外部リソースを取得し、描画処理を行う。この際、ステップS1401で検出した描画命令から参照される外部リソースは、当該描画命令が記述されているFPピースデータの直後に、後工程であるステップS1404の処理において配置されるため、プリンタ200の記憶領域に存在しているものである。
【0315】
続いて、ステップS1404において、プリンタ200のCPU201は、ステップS1301の処理で作成した外部参照リソースリスト内の当該検出した外部リソースの参照回数をデクリメントする。
【0316】
続いて、ステップS1405において、プリンタ200のCPU201は、外部参照リソースリスト内の当該外部リソースの参照回数が0であるか否かを判断する。
【0317】
ステップS1405の判断の結果、外部参照リソースリスト内の当該外部リソースの参照回数が0である場合には、ステップS1406に進む。
【0318】
ステップS1406に進むと、プリンタ200のCPU201は、プリンタ200の記憶領域に格納されている当該外部リソースの削除処理を行う。これは、参照回数が0であれば、プリンタ200の記憶領域に格納されている当該外部リソースは、処理中のFPにおいて今後二度と参照されることが無く、当該記憶領域から削除しても問題無いからである。このように、今後、参照されない外部リソースを削除することにより、プリンタ200の記憶領域に余裕を与えることでできる。
【0319】
ステップS1406の処理が終了した場合、ステップS1402において描画命令に外部リソースの参照が含まれていないと判断された場合、或いは、ステップS1405において外部参照リソースリスト内の当該外部リソースの参照回数が0でないと判断された場合には、ステップS1407に進む。
【0320】
ステップS1407に進むと、プリンタ200のCPU201は、現在処理中のFPパーツデータまたはピースデータも今後参照されることはないので、プリンタ200の記憶領域(例えば、外部メモリ210)から削除する処理を行う。
【0321】
続いて、ステップS1408において、プリンタ200のCPU201は、現在処理中のFPパーツデータまたはピースデータの最後まで解析を行ったか否かを判断する。この判断の結果、現在処理中のFPパーツデータまたはピースデータの最後までは未だ解析を行っていない場合には、ステップS1401に戻り、ステップS1401以降の処理を再度行う。
【0322】
一方、ステップS1408の判断の結果、現在処理中のFPパーツデータまたはピースデータの最後まで解析を行った場合には、図22におけるフローチャートの処理を終了する。即ち、図21のステップS1305の処理を終了する。
【0323】
以上説明したように、本実施形態に係る印刷制御システム10のホストコンピュータ100(情報処理装置)では、以下の処理を行うようにしている。
まず、ドキュメントの構成情報が記述されたページ構成データ(FD)のファイルと、FDに基づき参照され、プリンタ200において印刷対象となるページの情報が記述された印刷対象データ(FP)のファイルと、FPに基づき参照されるリソースファイルとを含み構成されるXPSデータ(アーカイブデータ)を取得するようにしている(例えば、図5のS101:アーカイブデータ取得ステップ)。その後、FPのファイルを分割するようにしている(例えば、図15のS810、S817:分割ステップ)。そして、印刷対象データ(FP)でリソースファイルを参照する参照回数を含む、FPを印刷する際に利用される属性を記憶するプリントチケット(属性情報ファイル)と、前記分割ステップにより分割されたFPのファイルと、FDのファイルと、リソースファイルとを含むXPSデータ(アーカイブデータ)を生成するようにしている(例えば、図15のS823:アーカイブデータ生成ステップ)。
かかる構成によれば、プリンタ200側で、ホストコンピュータ100で処理されたXPSデータの印刷処理を行う際に、メモリ容量の少ないプリンタであっても、リソースファイルを含むXPSデータを適切に印刷処理することができる。
【0324】
さらに、ホストコンピュータ100では、プリンタ200のメモリ量(第1のメモリ量)を取得し(図15のS801:プリンタメモリ量取得ステップ)、FPのデータ量に基づくメモリ量がS801で取得したメモリ量(第2のメモリ量)を超えるか否かを判断し(図15のS816:判断ステップ)、前記分割ステップでは、前記リソースファイルを参照する参照回数の情報に加えて、前記判断ステップによる判断の結果に基づいて、FPのファイルを分割するようにしている。さらに、前記分割ステップでは、前記リソースファイルを参照する参照回数の情報と前記判断ステップによる判断の結果に加えて、更に参照済みのリソースファイルの情報(参照済みフラグ)に基づいて、FPのファイルを分割するようにしている。
【0325】
また、本実施形態に係る印刷制御システム10のプリンタ200では、以下の処理を行うようにしている。
まず、ホストコンピュータ100で編集処理されたXPSデータを受信して、当該XPSデータをプリンタ200の記憶領域(例えば、外部メモリ210)に記憶するようにしている(図17のS901)。そして、XPSデータの印刷処理を行った際に、当該XPSデータに含まれる前記参照回数の情報に応じて、プリンタ200の記憶領域に記憶されているXPSデータに含まれるリソースファイルの削除を行うようにしている(図22のS1406:削除ステップ)。
【0326】
(本発明の他の実施形態)
前述した本発明の実施形態に係る印刷制御システム10のホストコンピュータ100を構成する図3及び図4の各構成部、並びに、ホストコンピュータ100及びプリンタ200における印刷制御処理を示す図5、図6、図8〜図11、図13、図15、図17〜図22の各ステップは、コンピュータのCPUがROMなどに記憶されたプログラムを実行することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【0327】
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
【0328】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図5、図6、図8〜図11、図13、図15、図17〜図22に示すフローチャートに対応したプログラム)を、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0329】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0330】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0331】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
【0332】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0333】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0334】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0335】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0336】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0337】
なお、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【0338】
【図1】本発明の実施形態に係る印刷制御システムの概略構成の一例を示す模式図である。
【図2】本発明の実施形態に係る印刷制御システムの概略構成の変形例を示す模式図である。
【図3】本発明の実施形態に係る印刷制御システムのホストコンピュータによるGDIプリントパスを用いた印刷制御機能の機能構成の一例を示す模式図である。
【図4】本発明の実施形態に係る印刷制御システムのホストコンピュータによるXPSプリントパスを用いた印刷制御機能の機能構成の一例を示す模式図である。
【図5】本発明の実施形態に係る印刷制御システムのホストコンピュータによるXPSプリントパスを用いた印刷制御処理の処理手順の一例を示すフローチャートである。
【図6】図5のステップS102におけるXPSデータの解析・編集処理の詳細な処理手順の一例を示すフローチャートである。
【図7】本発明の実施形態を示し、FPを含むXPSデータの一例を示す模式図である。
【図8】図6のステップS206におけるFDSの処理の詳細な処理手順の一例を示すフローチャートである。
【図9】図8のステップS306におけるFDの処理の詳細な処理手順の一例を示すフローチャートである。
【図10】図9のステップS406におけるFPの処理の詳細な処理手順の一例を示すフローチャートである。
【図11】図10のステップS502における外部リソース参照回数リスト作成処理の詳細な処理手順の一例を示すフローチャートである。
【図12】本発明の実施形態を示し、外部参照リソースリストの一例を示す模式図である。
【図13】図10のステップS503におけるプリントチケット編集処理の詳細な処理手順の一例を示すフローチャートである。
【図14】本発明の実施形態を示し、プリントチケットの一例を示す模式図である。
【図15】図10のステップS504におけるFP分割処理の詳細な処理手順の一例を示すフローチャートである。
【図16】本発明の実施形態を示し、図4に示すレイアウトフィルタにおいて分割されたFPの一例を示す模式図である。
【図17】本発明の実施形態に係る印刷制御システムのプリンタによるXPSプリントパスを用いた印刷制御処理の処理手順の一例を示すフローチャートである。
【図18】図17のステップS902におけるXPSデータの解析・印刷処理の詳細な処理手順の一例を示すフローチャートである。
【図19】図18のステップS1006におけるFDSの処理の詳細な処理手順の一例を示すフローチャートである。
【図20】図19のステップS1106におけるFDの処理の詳細な処理手順の一例を示すフローチャートである。
【図21】図20のステップS1206におけるFPの処理の詳細な処理手順の一例を示すフローチャートである。
【図22】図21のステップS1305におけるFP描画命令処理の詳細な処理手順の一例を示すフローチャートである。
【図23】XPSデータの構成のイメージの一例を示す模式図である。
【図24】図23に示すXPSデータに包含される各パーツの参照関係の論理的構造の一例を示す模式図である。
【図25】XMLファイルの記述に基づいた参照関係の一例を示す模式図である。
【図26】XMLファイルの記述に基づいたプリントチケットの一例を示す模式図である。
【図27】MXDWが通常生成するXPSファイルのデータ順の一例を示す模式図である。
【図28】図25に示すXPSデータをインターリーブ化した際のパーツデータの一例を示す模式図である。
【図29】インターリーブ化した際のXPSデータの構成のイメージの一例を示す模式図である。
【図30】インターリーブ化した際のXPSファイルのデータ順の一例を示す模式図である。
【図31】ZIP圧縮データの構成の一例を示す模式図である。
【図32】インターリーブ化したXPSファイルのデータ順の一例を示す模式図である。
【図33】図32に示すXPSファイル内のFPの一例を示す模式図である。
【図34】FPの分割処理の一例を示す模式図である。
【図35】XPSファイルのデータ順の一例を示す模式図である。
【符号の説明】
【0339】
10−1 印刷制御システム
100 ホストコンピュータ(クライアントコンピュータ)
101 CPU
102 RAM
103 ROM
104 システムバス
105 入力C(入力コントローラ)
106 VC(ビデオコントローラ)
107 MC(メモリコントローラ)
108 通信I/F(通信インターフェース)
109 KB(キーボード)
110 CRT(CRTディスプレイ)
111 外部メモリ
200 プリンタ
201 CPU
202 RAM
203 ROM
204 システムバス
205 通信I/F(通信インターフェース)
206 印刷部I/F(印刷部インターフェース)
207 MC(メモリコントローラ)
208 印刷部
209 操作部
210 外部メモリ
300 ネットワーク

【特許請求の範囲】
【請求項1】
プリンタと通信可能に接続された情報処理装置であって、
ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含むアーカイブデータを取得するアーカイブデータ取得手段と、
前記印刷対象データのファイルを分割する分割手段と、
前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割手段により分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成手段と
を有することを特徴とする情報処理装置。
【請求項2】
前記分割手段は、前記属性情報ファイルに記憶する参照回数に応じて前記印刷対象データのファイルを分割することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記プリンタの第1のメモリ量を取得するプリンタメモリ量取得手段と、
前記印刷対象データのファイルのデータ量に基づく第2のメモリ量が前記プリンタメモリ量取得手段により取得された前記第1のメモリ量を超えるか否かを判断する判断手段と
を更に有し、
前記分割手段は、前記判断手段で前記第2のメモリ量が前記第1のメモリ量を超えると判断される場合、前記第1のメモリ量を超えない位置で前記印刷対象データのファイルを分割することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記属性情報ファイルが存在するか否かを判定する属性情報ファイル判定手段と、
前記印刷対象データで前記リソースファイルを参照する参照回数を記憶する、前記属性情報ファイルを生成する属性情報ファイル生成手段と、
前記属性情報ファイルが存在しないと判定される場合には、前記属性情報ファイル生成手段で生成された属性情報ファイルに、前記属性情報ファイルが存在すると判定される場合には、既に存在する属性情報ファイルに、前記参照回数を入力する参照回数入力手段と
を更に有することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記リソースファイルは、イメージファイルまたはフォントファイルであり、
前記参照回数入力手段は、前記印刷対象データにおいて参照する前記イメージファイルまたは前記フォントファイルごとの前記参照回数を前記属性情報ファイルに入力することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記アーカイブデータ生成手段で生成されたアーカイブデータを前記プリンタに送信する送信手段を更に有することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
情報処理装置とプリンタとで構成される印刷制御システムであって、
前記情報処理装置は、
ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含み構成されるアーカイブデータを取得するアーカイブデータ取得手段と、
前記印刷対象データのファイルを分割する分割手段と、
前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割手段により分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成手段と
を有し、
前記プリンタは、
前記アーカイブデータ生成手段で生成されたアーカイブデータを順次受信する受信手段と、
前記アーカイブデータに含まれる属性情報ファイルの参照回数に従って、前記受信手段で受信したアーカイブデータに含まれるリソースファイルの削除を行う削除手段と
を有することを特徴とする印刷制御システム。
【請求項8】
プリンタと通信可能に接続された情報処理装置の制御方法であって、
ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含むアーカイブデータを取得するアーカイブデータ取得ステップと、
前記印刷対象データのファイルを分割する分割ステップと、
前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割ステップにより分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成ステップと
を有することを特徴とする情報処理装置の制御方法。
【請求項9】
プリンタと通信可能に接続された情報処理装置の制御方法をコンピュータに実行させるためのプログラムであって、
ドキュメントの構成情報が記述されたページ構成データのファイルと、前記ページ構成データに基づき参照され、前記プリンタにおいて印刷対象となるページの情報が記述された印刷対象データのファイルと、前記印刷対象データに基づき参照されるリソースファイルとを含むアーカイブデータを取得するアーカイブデータ取得ステップと、
前記印刷対象データのファイルを分割する分割ステップと、
前記印刷対象データで前記リソースファイルを参照する参照回数を含む、前記印刷対象データを印刷する際に利用される属性を記憶する属性情報ファイルと、前記分割ステップにより分割された前記印刷対象データのファイルと、前記ページ構成データのファイルと、前記リソースファイルとを含むアーカイブデータを生成するアーカイブデータ生成ステップと
をコンピュータに実行させるためのプログラム。

【図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

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate


【公開番号】特開2010−128962(P2010−128962A)
【公開日】平成22年6月10日(2010.6.10)
【国際特許分類】
【出願番号】特願2008−305097(P2008−305097)
【出願日】平成20年11月28日(2008.11.28)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Windows_Vista
【出願人】(592135203)キヤノンITソリューションズ株式会社 (528)
【Fターム(参考)】