JP4619433B2 - 印刷制御装置及び印刷制御方法、並びにプログラム - Google Patents

印刷制御装置及び印刷制御方法、並びにプログラム Download PDF

Info

Publication number
JP4619433B2
JP4619433B2 JP2008315612A JP2008315612A JP4619433B2 JP 4619433 B2 JP4619433 B2 JP 4619433B2 JP 2008315612 A JP2008315612 A JP 2008315612A JP 2008315612 A JP2008315612 A JP 2008315612A JP 4619433 B2 JP4619433 B2 JP 4619433B2
Authority
JP
Japan
Prior art keywords
data
search
file
print
xps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008315612A
Other languages
English (en)
Other versions
JP2009163727A (ja
Inventor
紀明 酒井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon IT Solutions Inc
Original Assignee
Canon IT Solutions Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon IT Solutions Inc filed Critical Canon IT Solutions Inc
Priority to JP2008315612A priority Critical patent/JP4619433B2/ja
Publication of JP2009163727A publication Critical patent/JP2009163727A/ja
Application granted granted Critical
Publication of JP4619433B2 publication Critical patent/JP4619433B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、印刷制御及び印刷制御方法、並びにプログラムに関し、特に、XPSデータを解析する印刷制御装置及び印刷制御方法、並びにプログラムに関する。
パーソナルコンピュータ等の情報処理装置には、キーボード入力や画像出力といった入出力機能、ディスクやメモリの管理機能などの多くのアプリケーションソフト(以下、単に「アプリケーション」と呼ぶ。)により共通して利用される基本的な機能を提供し、情報処理装置全体を管理するソフトウェアであるオペレーティングシステム(Operating System:OS)が搭載されている。例えば、Microsoft社製のW
indows(登録商標) XP、Windows(登録商標) 2000やWindows(登録商標) Vistaなどが挙げられる。
このような情報処理装置を用いてユーザが各種文書を閲覧できるように様々な文書ファイルフォーマットが存在するが、その一つにXML Paper Specification(XPS)という文書ファイルフォーマットがある。上述のWindows(登録商標) Vistaでは、XPSが文書ファイルフォーマットとしてのみでなく印刷スプールファイルのフォーマットとしても利用される。
XPSのフォーマットに従ったデータをXPSデータ、データがXPS形式のファイルをXPSファイルと呼ぶ。また、XML(Extensible Markup Language)とは、文書やデータの意味や、構造を記述するためのマークアップ言語の1つであり、構造化文書と呼ばれる。構造化文書は他には、HTMLやSGMLなどがある。
ところで、情報処理装置とプリンタなどの印刷装置とからなるシステムにおいて印刷を実施する場合、通常、情報処理装置内のアプリケーションがユーザからの印刷実行命令を受けると、当該アプリケーションが起動しているOS及びOSが提供する印刷システムに応じた印刷命令の発行処理を行う。例えば、Windows(登録商標) XPやWindows(登録商標) 2000などのOS上で起動しているアプリケーションは、OS
が提供するGDI(Graphics Device Interface)プリントパスと呼ばれる印刷システムの形式に従って印刷命令を発行している。
一方、Windows(登録商標) Vistaにおいては、前述したGDIプリントパスに加えて、XPSプリントパスと呼ばれる印刷システムが新たに提供されている。GDIプリントパス、XPSプリントパスの詳細については後述する。
ここで、XPSデータのフォーマットについて説明する。
XPSデータは、複数のファイルがZIP圧縮形式で圧縮されて一つのファイルにアーカイブされたアーカイブデータである。アーカイブされるファイルは、XML(Extensible Markup Language)ファイル、JPEG(Joint Photographic Experts Group)ファイル、PNG(Portable Network Graphics)ファイル、TIFF(Tagged Image File Format)ファイル、HD Photoファイル、及びフォントファイルなどである。XMLファイルには、文書を形成するための各種情報がXML形式で記述される。なお、記述される情報毎に複数のXMLファイルに分割されている。XPSでは、一つの文書は幾つかの括りに分割されて構成されているものと考えられている。すなわち、一つの文書は複数若しくは一つのドキュメントという括りから成り、一つのドキュメントは複数若しくは一つのページという括りから成る。
また、JPEG、PNG、TIFF、HD Photoは各々イメージを表現するためのフォーマットであり、これらのファイルを総称してイメージファイルと呼ぶ。XPSデータには、一つの文書を構成するのに必要な数のイメージファイルやフォントファイルが包含される。また、これらのXPSデータに包含されるファイルを各々パーツと呼ぶ。つまり、一つのXPSデータには、複数のパーツが包含されている。XPSデータの構成例を図4に示す。
XPSデータに包含された各パーツは他のパーツへの参照を有する。この参照により、XPSデータ内の全パーツが関係性を持つ一つの文書情報として形成されている。XPSデータには、イメージファイル808,809やフォントファイル807の他に、例えば、以下のような複数種類のパーツが包含され、各々が以下のような参照を有する。
a)_rels/.rels801:文書データの開始点となるパーツである。後述するFixedDocumentSequence(以下、「FDS」と略す。)への参照を有する。
b)FDS810:一つの文書データの構成情報が記述されたパーツである。後述するFixedDocument(以下、「FD」と略す。)への参照を有する。なお、一つのデータは複数のドキュメントを有する場合がある。つまり、FDSは、複数のFDへの参照を有する場合がある。
c)FD804,806:一つのドキュメントに存在する複数のページをページ順に並べ、束ねるためのパーツである。一つのドキュメントの構成情報が記述されたパーツであり、FixedPage(以下、「FP」と略す。)への参照を有する。なお、一つのドキュメントは複数のページを有する場合がある。つまり、FDは、複数のFPへの参照を有する場合がある。
d)FP802,803,805:1ページの描画内容が記述されたパーツである。必要に応じて、イメージファイル808,809やフォントファイル807への参照を有する。例えば、当該ページにイメージの描画が存在する場合は、当該イメージファイルへの参照を有することになる。
e)FP.rels3201:FixedPageに関連するパーツへの参照情報が記述されたパーツである。1FPにつき1つ対応するFP.relsが存在する。対応するFPから参照される全ての、イメージファイルへの参照を有することになる。
図5は、図4のXPSデータにおけるパーツ間の参照関係の論理的構造の一例を示す参考図であり、図6及び図32は、パーツデータのXMLファイルの記述に基づいたパーツ間の参照関係の一例を示す参考図である。
図示では、_rels/.rels801はFDS810を参照し、FDS810はFD804,806を参照し、FD804はFP802,803を参照し、FD806はFP805を参照し、FP802はイメージファイル808及びフォントファイル807を参照し、FP803はイメージファイル809を参照し、FP805はイメージファイル809を参照している。
また、図32に示すように、FP.rels3201は、イメージファイル808及びフォントファイル807等のリソースファイルを参照している。
次に、XPSデータを構成するZIP圧縮形式で圧縮(以下、「ZIP圧縮」と呼ぶ。)されたデータについて図7を参照して説明する。
図7は、XPSデータを構成するZIP圧縮形式で圧縮されたデータの構成例を示す参考図である。
ZIP圧縮されたデータには、Local File Header601やファイルデータ602と呼ばれるデータ部分が存在する。図示のように、ファイルデータ602の直前には、必ずLocal File Header601が存在し、Local File Header601とファイルデータ602の組によって伸張データの一つのファイルの情報が構成される。言い換えると、Local File Header601とファイルデータ602の一組によって伸張データの一つのファイルを伸張することができる。以下、Local File Header601とファイルデータ602の組み合わせをファイルデータ部と呼ぶ。伸張データに複数のファイルが存在する場合には、ファイルデータ部が複数組列挙される。
ZIP圧縮では、伸張データ時のディレクトリ構成を保持したままの圧縮が可能である。しかし、あるファイルが伸張データ時のディレクトリ構成では上位の階層に存在したとしても、圧縮データ時に当該ファイルを構成するファイルデータ部がデータの前方にあるとは限らない。言い換えると、伸張データ時のディレクトリ構成上の階層位置と圧縮データ時(データストリームにおける位置)のファイルデータ部の位置に関連性はない。
Windows(登録商標) Vistaでは、XPSを文書ファイルフォーマットとしてのみでなく印刷スプールファイルのフォーマットとして利用することができる。XPSプリントパスが使用される場合、通常OSにより提供される印刷システムが自動で印刷スプールファイルをXPSファイルフォーマットの形で生成するが、ユーザが任意のXPSデータを作成してスプールすることも可能であり、後述するMXDWで作成されたXPSデータをスプールすることも可能である。
また、XPSデータをプリントデータとして利用する場合、例えば、ZIP圧縮されたデータが情報処理装置からネットワークを介して印刷装置に送信される。なお、送信されるデータは全てが一括で送られるのではなく、幾つかに分割されて印刷装置に送られるのが一般的である。その後、印刷装置は、データを受信する処理を行った後、印刷処理を実施するために受信したデータ(XPSデータ)を解析する処理を行う。なお、印刷装置は、通常、データ受信処理と既に受信済みのXPSデータの解析処理とを並行して行うことが可能である。
Windows(登録商標) Vistaの機能の一つとして、Microsoft XPS Document Writer(MXDW)なるXPSファイルを生成するためのアプリケーションが存在する。MXDWによってXPSファイルが生成された場合、通常は、上述した_rels/.relsの情報を有するファイルデータ部、FDSの情報を有するファイルデータ部、FDの情報を有するファイルデータ部、及びFPの情報を有するファイルデータ部のデータは各々、図8に示すように、FP802,803,805→FD804,806→FDS810→_rels/.rels801の順序に並んで構成される。以降、この順序をデータストリームにおけるデータ順と呼ぶ。
XPSをプリントデータとして利用する場合、前述した通り、XPSデータは幾つかに分割されて印刷装置に送信されるが、データ順に並んだXPSデータは、送信開始後、FP、FD、FDSの情報を有するファイルデータ部が全て送信された後に、_rels/.relsの情報を有するファイルデータ部が印刷装置に送信される。前述した通り、_rels/.relsは文書の開始点となるパーツであるため、印刷装置は_rels/.relsの情報を有するファイルデータ部を受信するまでXPSデータの解析を開始できない。その結果、印刷装置は、XPSデータの受信処理とXPSデータの解析処理と並行して行うことができず、全体としての印刷スループットが低下してしまう。
仮に、XPSデータの先頭に_rels/.relsの情報を有するファイルデータ部があったとしても、次に参照すべきFDSの情報を有するファイルデータ部がXPSデータの最後尾等にあるようなデータ順であった場合には、印刷装置は当該ファイルデータ部を受信するまでXPSデータの解析処理を中断せざるを得ず、同様に、全体としての印刷スループットが低下してしまう。
XPSには、一つのパーツを複数のパーツに分割するインタリーブと呼ばれる仕様が存在し、MXDWの設定でインタリーブの仕様に則ったデータを作成することが可能である。この仕様に即したXPSデータがピースデータである。XPSデータ内において、意味のある最小単位が「パーツ」であり、物理的なデータとしての最小単位が「ピース」である。
通常のXPSデータをインタリーブの仕様に即したデータに変換することをインタリーブ化と呼び、インタリーブ化されたXPSデータをインタリーブデータと呼ぶ。例えば、図6に示すXPSデータを、図9に示すインタリーブデータのように、インタリーブ化することができる。図9のインタリーブデータでは、次のパーツへの参照が存在するところまでで各パーツが分割されている。インタリーブ化されたXPSデータの構成例を図10に示す。
図10に示すXPSデータでは、_rels/.relsは2個のパーツ851,852に分割され、FDSは3個のパーツ858,859,860に分割され、1個目のFDは3個のパーツ853,854,855に分割され、2個目のFDは2個のパーツ856,857に分割されている。
図9のように分割された各パーツを、図11に示すように、各参照部の直後に参照先データが配置されるようなデータ順に並び替えることにより、印刷スループットが低下する問題を解決することが可能である。何故ならば、印刷装置は、解析すべきパーツの情報を有するファイルデータ部を順番に受信していくので、当該ファイルデータ部の受信後すぐに当該ファイルデータ部の解析処理を行うことが可能になるからである。
例えば、図10では、2個に分割された_rels/.rels(パーツ851,852)の1個目のパーツ851の情報を有するファイルデータ部を受信する。ここで、印刷装置は最初に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始することができる。続いて、3個に分割されたFDSの1個目のパーツ858の情報を有するファイルデータ部を受信する。ここで、印刷装置は次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始することができる。
続いて、3個に分割された1つ目のドキュメントの構成情報が記述されたFDの1個目のパーツ853の情報を有するファイルデータ部を受信する。ここで、印刷装置は次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始することができる。
続いて、1つ目のドキュメントの1ページ目のページ情報が記述されたFP861の情報を有するファイルデータ部を受信する。ここで、印刷装置は次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始することができる。この結果、1つ目のドキュメントの1ページ目の印刷を行うことができる。
続いて、3個に分割された1つ目のドキュメントの構成情報が記述されたFDの2個目のパーツ854の情報を有するファイルデータ部を受信する。ここで、印刷装置は次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始することができる。
続いて、1つ目のドキュメントの2ページ目のページ情報が記述されたFP862の情報を有するファイルデータ部を受信する。ここで、印刷装置は次に当該パーツを解析する必要があるが、既に当該パーツの情報を有するファイルデータ部を受信済みであるため、すぐに当該パーツの解析を開始することができる。この結果、1つ目のドキュメントの2ページ目の印刷を行うことができる。以降、同様に、ファイルデータ部を受信後すぐに当該パーツの解析ができるようになり、印刷スループットが低下する問題は解決される。
次に、XPSパーツ名が判明している場合、XPSからパーツデータを取得する方法について説明する。
Local File Headerでは、その先頭データが“PK34”というバイナリデータであり、その後、既定の位置にLocal File Headerと対になるファイルデータのデータ名とデータサイズが記述されている。そこで、“PK34”というバイナリデータを先頭から順番に検索し、発見後規定の位置に存在するファイルデータ名を検索・取得・判定し、所望していたパーツデータでなければ、前記データサイズ分、後方に存在するLocal File Headerの“PK34”というバイナリデータを再度前回検索した位置から開始する。目的のパーツデータを取得できるまで繰り返す。
ZIPデータに含まれる内部データを効率よく検索する既存技術として、内部データの位置情報を示す管理ファイルを予め作成して、検索時にその管理ファイルを利用して検索処理を行うものが提案されている(例えば、特許文献1参照)。
特開特開2006−85569号公報
しかしながら、MXDWで作成されたXPSデータからパーツデータを取得する際、Local File Headerをデータの先頭から検索する方法では、XPSデータに含まれるパーツデータの数が増えるほど、入出力I/O回数が増大するため、処理に多くの時間を要する。
また、MXDWでXPSデータを作成する場合、インタリーブ化されたXPSデータとインタリーブ化されていないXPSデータとではXPSデータ内部のデータ構造が違うため、そのデータ構造に則った検索を行わなければならない。
例えば、インタリーブ化されたXPSデータでは、イメージファイル808を参照する箇所で分割することがある。同じイメージファイル808を参照している箇所が複数あった場合には、同じイメージファイルであるにも関わらず、繰り返しデータの先頭から検索してしまい、処理に多くの時間を要する。
さらに、Local File Headerをデータの先頭から検索して、処理すべきパーツか否かを判定して、処理すべきパーツでない場合には次のLocal File Headerを検索することを繰り返す。処理すべきパーツがあった場合には、再度Local File Headerをデータの先頭から検索して、処理すべきパーツを取得して処理するため、所望のパーツを検索するために時間がかかり、印刷処理時間が増大することが発生してしまっていた。
そこで、本発明は、構造化文書形式のデータを受信しながら解析し、パーツデータを取得する際、当該データを繰り返し先頭から検索することなく、必要なパーツデータの取得時間を削減して、印刷処理時間を向上させることができる印刷制御装置及び印刷制御方法、並びにプログラムを提供することを目的とする。
上記目的を達成するために、請求項1記載の印刷制御装置は、文書データの開始点となる開始ファイル、前記文書データの構成情報が記述されたページ構成データのファイル、1ページの描画内容が記述された印刷対象データのファイル、及びリソースファイルがアーカイブされた構造化文書形式のデータを受け取る受取手段と、前記受取手段で上位処理から受け取る構造化文書形式のデータを、先頭から検索する第1の検索手段と、前記第1の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を記憶する第1の記憶手段と、次に処理する印刷対象データのファイルを検索するために、前記第1の検索手段で構造化文書形式のデータを先頭から検索することなく、前記第1の記憶手段に記憶されている配置位置から、前記受取手段で上位処理より受け取る構造化文書形式のデータを検索する第2の検索手段と、前記第2の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を更新する更新手段と、前記第2の検索手段による検索を、前記印刷対象データのファイルに応じて繰り返す繰返制御手段と、前記検索された印刷対象データを解析処理して得られる印刷描画データを出力する出力手段とを備えることを特徴とする。
上記目的を達成するために、請求項8記載の印刷制御装置の印刷制御方法は、文書データの開始点となる開始ファイル、前記文書データの構成情報が記述されたページ構成データのファイル、1ページの描画内容が記述された印刷対象データのファイル、及びリソースファイルがアーカイブされた構造化文書形式のデータを受け取る受取工程と、前記受取工程で上位処理から受け取る構造化文書形式のデータを、先頭から検索する第1の検索工程と、前記第1の検索工程の検索によって得られる前記印刷対象データのファイルの配置位置を記憶する第1の記憶工程と、次に処理する印刷対象データのファイルを検索するために、前記第1の検索工程で構造化文書形式のデータを先頭から検索することなく、前記第1の記憶工程で記憶された配置位置から、前記受取工程で上位処理より受け取る構造化文書形式のデータを検索する第2の検索工程と、前記第2の検索工程の検索によって得られる前記印刷対象データのファイルの配置位置を更新する更新工程と、前記第2の検索工程による検索を、前記印刷対象データのファイルに応じて繰り返す繰返制御工程と、前記検索された印刷対象データを解析処理して得られる印刷描画データを出力する出力工程とを備えることを特徴とする。
上記目的を達成するために、請求項9記載のプログラムは、印刷制御装置を、文書データの開始点となる開始ファイル、前記文書データの構成情報が記述されたページ構成データのファイル、1ページの描画内容が記述された印刷対象データのファイル、及びリソースファイルがアーカイブされた構造化文書形式のデータを受け取る受取手段と、前記受取手段で上位処理から受け取る構造化文書形式のデータを、先頭から検索する第1の検索手段と、記第1の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を記憶する第1の記憶手段と、次に処理する印刷対象データのファイルを検索するために、前記第1の検索手段で構造化文書形式のデータを先頭から検索することなく、前記第1の記憶手段に記憶されている配置位置から、前記受取手段で上位処理より受け取る構造化文書形式のデータを検索する第2の検索手段と、前記第2の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を更新する更新手段と、前記第2の検索手段による検索を、前記印刷対象データのファイルに応じて繰り返す繰返制御手段と、前記検索された印刷対象データを解析処理して得られる印刷描画データを出力する出力手段として機能させることを特徴とする。
本発明によれば、構造化文書形式のデータを受信しながら解析し、パーツデータを取得する際、当該データを繰り返し先頭から検索することなく、必要なパーツデータの取得時間を削減して、印刷処理時間を向上させることができる。
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図1は、本発明の第1の実施形態に係る情報処理装置を含めた印刷システムの構成例を示すブロック図である。
図1において、本発明の実施形態における印刷システムは、情報処理装置としてのコンピュータ1000と、印刷装置としてのプリンタ1500とを備え、これらはネットワーク121を介して互い接続されている。
コンピュータ1000は、CPU101と、RAM102と、ROM103と、入力コントローラ(入力C)105と、ビデオコントローラ(VC)106と、メモリコントローラ(MC)107と、通信I/Fコントローラ(通信I/F C)108と、操作装置109と、表示装置110と、外部メモリ111とを備える。CPU101、RAM102、ROM103、入力コントローラ105、ビデオコントローラ106、メモリコントローラ107、及び通信I/Fコントローラ108は、システムバス104を介して互いに接続されている。
CPU101は、後述する処理の実行に際して必要なプログラム等をRAM102にロードして、プログラムを実行することで各種動作を実現する。また、CPU101は、例えば、RAM102の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、表示装置110上での表示を可能としている。また、CPU101は、表示装置110上の不図示のマウスカーソル等でのユーザによる指示を可能とする。
RAM102は、CPU101の主メモリ、ワークエリア等として機能する。ROM103または外部メモリ111には、CPU101の制御プログラムであるBIOS(Basic Input/Output System)やオペレーティングシステムプログラム(以下、「OS」という。)、後述する各処理を実行するために必要な各種プログラム等が記憶されている。本実施の形態で使用するOSは、例えば、Windows(登録商標) Vista(Microsoft社製)を想定しているが、これに限られるものではない。
入力コントローラ105は、マウス等のポインティングデバイスやキーボードで構成される操作装置109からの入力を制御する。ビデオコントローラ106は、CRTディスプレイ等の表示装置110への表示を制御する。なお、表示装置110は、CRTに限られるものではなく、液晶ディスプレイでも構わない。
メモリコントローラ107は、外部メモリ111へのアクセスを制御する。外部メモリ111は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、及び各種データ等を記憶し、ハードディスク(HD)、フロッピー(登録商標)ディスク(FD)、またはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等から構成される。通信I/Fコントローラ108は、ネットワーク等を介した外部機器との接続・通信を制御する。例えば、TCP/IPを用いたインターネット通信などにより、ネットワーク121を介してプリンタ1500との間でデータ送受信等が可能である。なお、ネットワーク121はLAN(Local Area Network)であっても、インターネットであってもよく、またケーブル等で接続されたローカルなものであってもよい。
プリンタ1500は、CPU112、RAM119、フォントROM113aと、プログラムROM113bと、データROM113cと、入力部118と、印刷部インターフェース(印刷部I/F)116と、印刷部(プリンタエンジン)117と、操作部1501と、メモリコントローラ(MC)120と、外部メモリ114とを備える。CPU112、RAM119、ROM113、入力部118、印刷部I/F116、操作部1501と、MC120は、システムバス115を介して互いに接続されている。
CPU112は、プログラムROM113bまたは外部メモリ114に記憶された制御プログラム等に基づいて、印刷部I/F116を介して印刷部117に出力情報としての画像信号(描画データ)を出力する。プログラムROM113bには、CPU112により実行される制御プログラム等が記憶される。フォントROM113aには、上記出力情報を生成する際に使用するフォントデータ等が記憶される。データROM113cには、プリンタ1500がハードディスク等の外部メモリ114を有していない場合には、コンピュータ1000上で利用される情報等が記憶される。
CPU112は、入力部118を介してコンピュータ1000との通信処理を行い、プリンタ1500内の情報等をコンピュータ1000に通知することができる。RAM119は、CPU112の主メモリであり、ワークエリア等として機能する。また、RAM119は、不図示の増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。なお、RAM119は、出力情報展開領域、環境データ格納領域、NVRAM等にも用いられる。
メモリコントローラ120は、外部メモリ114へのアクセスを制御する。外部メモリ114は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶し、ハードディスク(HD)、ICカード等で構成される。
操作部1501は、操作のためのスイッチやLED等が配されている操作パネルである。なお、プリンタ1500が備える外部メモリ114は、1個に限られるものではなく、複数であってもよい。また、プリンタ1500は、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、プリンタ1500は、操作部1501により設定されたプリンタモード設定情報を記憶するNVRAM(不図示)を有していてもよい。
本実施の形態では、プリンタ1500がサポートするプリントデータは、上述したXPSデータを想定しているが、これに限定されるものではなく、同様のXML形式のファイルフォーマットを有するデータであってもよい。
本発明を実現するための印刷機器制御プログラム(以下、「プリンタドライバ」という。)は外部メモリ111に記録されており、必要に応じてRAM102にロードされることによりCPU101によって実行される。プリンタドライバが用いる定義ファイル及び各種情報テーブルは外部メモリ111に格納されている。
なお、上記印刷システムの構成は一例であり、用途や目的に応じて様々な構成例があることは云うまでもない。例えば、本発明の機能が実現されるのであれば、単体の機器に適用されてもよく、LAN、WAN(Wide Area Network)等のネットワークを介して接続された複数の機器からなるシステムに適用されてもよい。
図2は、図1のコンピュータ1000での印刷制御処理時に機能するソフトウェアの構成を示すブロック図である。
図2において、コンピュータ1000は、アプリケーションプログラム(以下、「アプリケーション」という。)201と、グラフィックスエンジン202と、プリンタドライバ203と、プリントサブシステム204とを備える。これらは、それぞれ外部メモリ111にファイルとして保存されたプログラムモジュールである。これらのモジュールは、OSやそのモジュールを利用するモジュールによってRAM102にロードされて実行される。
アプリケーション201及びプリンタドライバ203は、外部メモリ111から、または後述する図3のネットワーク301を介して接続された外部機器から、ハードディスク(HD)等の外部メモリ111に追加可能になっている。外部メモリ111に保存されているアプリケーション201は、CPU101によってRAM102にロードされて実行される。このアプリケーション201からプリンタ1500に対して印刷を行わせる際には、同様にCPU101によってRAM102にロードされて実行されるグラフィックスエンジン202を利用して出力(描画)を行う。
グラフィックスエンジン202は、プリンタ毎に用意されたプリンタドライバ203を起動する。これにより、プリンタドライバ203は、CPU101によって外部メモリ111からRAM102にロードさせて実行される。グラフィックスエンジン202は、このプリンタドライバ203を用いて、アプリケーション201から出力された印字命令や描画命令をプリンタに適するプリンタ制御命令に変換する。
プリンタドライバ203により変換されたプリンタ制御コマンドは、プリントサブシステム204を経由して、ネットワーク121を介してプリンタ1500に出力される。プリントサブシステム204は、OSによって起動されて、CPU101によって外部メモリ111からRAM102にロードされて実行されるものであり、印刷ジョブのスケジューリング、コンピュータ1000とプリンタ1500との接続制御、及びプリンタ1500のステータスの管理を行う。
なお、プリンタドライバ203は、前述した、アプリケーション201から出力された印字命令や描画命令をプリンタ制御コマンドに変換し、プリント出力に反映されるようプリンタ1500に指示する機能に加えて、プリンタドライバ203やプリンタ1500が有する機能を制御するための設定を行う機能(以下、「ユーザインターフェース(UI)」という。)、その設定を記憶する機能、プリンタドライバ203やプリンタ1500が有する機能の情報をアプリケーション201やOSに提供する機能、UIで設定された機能がプリンタの有する機能である場合にプリンタ制御命令を生成する機能、及び、UIで設定された機能がプリンタドライバ203独自で行う機能の場合にその機能を実現する機能等を有する。
図3は、図1のコンピュータ1000及びプリンタ1500を利用した印刷システムの一例を示すブロック図である。
図3において、印刷システムは、クライアントコンピュータとしての複数のコンピュータ1000と、プリンタ1500と、プリントサーバコンピュータ4000とを有し、これらがネットワーク301を介して互いに接続されている。コンピュータ1000内の通信I/Fコントローラ108は、ネットワークインターフェースカード(NIC)の機能を有するものとする。
プリンタ1500は、セントロニクスやUSB(Universal Serial Bus)等のローカルインターフェース302を介してプリントサーバコンピュータ4000と接続され、該プリントサーバコンピュータ4000を介してネットワーク301に接続される形態であってもよく、ネットワーク301に直接接続される形態であってもよい。なお、ネットワーク301に直接接続されたプリンタ1500内の入力部118は、ネットワークインターフェースカード(NIC)の機能を有するものとする。
コンピュータ1000は、プリントサーバコンピュータ4000を介してネットワーク301に接続されたプリンタ1500に印刷ジョブを送信する場合、まず、プリントサブシステム204を介して、プリントサーバコンピュータ4000へ印刷ジョブを送信する。そして、プリントサーバコンピュータ4000は、コンピュータ1000から送信されてきた印刷ジョブを、プリントサーバコンピュータ4000上の不図示のプリントサブシステムを介して、プリンタ1500へ送信する。
また、コンピュータ1000は、ネットワーク301に直接接続されたプリンタ1500に印刷ジョブを送信する場合、プリントサブシステム204を介して、プリンタ1500に直接印刷ジョブを送信する。
次に、図12を用いて、GDIプリントパスに従って機能するコンピュータ1000について説明する。
図12は、コンピュータ1000での印刷制御処理時に、図2でGDIプリントパスを用いて機能する機能部の構成を示す図である。なお、GDIプリントパスの場合、図2のプリンタドライバ203が図12のプリンタグラフィックスドライバ406に対応する。
図12において、GDIプリントパスに従って機能するコンピュータ1000の機能部は、アプリケーション201、GDI401、ユーザインターフェースドライバ402、スプーラ403、EMFスプールファイル404、プリントプロセッサ405、プリンタグラフィックスドライバ406、及びランゲージモニタ407で構成される。
まず、図12に示す各機能部の印刷制御機能について説明する。
アプリケーション201は、GDI401を介して、プリンタ1500に対して印刷条件を設定する。具体的には、アプリケーション201は、例えば、印刷に使用する用紙のサイズや逆順で印刷するか否かの設定や製本の体裁で印刷を行う製本印刷を実施するか否かの設定などの各種印刷条件を設定する。また、アプリケーション201は、GDI401を介して、プリンタ1500に対して文書や写真画像等の描画命令を発行し、印刷実行を指示する。以下、図12の説明において、描画命令の発行に伴いGDI401を介してスプーラ403に通知される文書、画像データ、及び描画命令を総称して「印刷データ」と呼ぶ。
ユーザインターフェースドライバ402は、GDI401を介して通知された印刷条件をプリンタ1500に適合する内容に変更し、最終的な印刷条件を確定する。また、ユーザインターフェースドライバ402は、GDI401を介して、最終的に確定した印刷条件をスプーラ403に通知する。
スプーラ403は、GDI401を介して通知された印刷データ及び印刷条件をEMFスプールファイル404に格納する。プリントプロセッサ405は、EMFスプールファイル404に格納された印刷データを1ページ単位で処理する。プリンタグラフィックスドライバ406は、印刷データをプリンタ1500で印刷出力可能なPDLデータに変換する。ランゲージモニタ407は、プリンタ1500と双方向の通信を行い、プリンタ1500の情報を取得して表示装置110に表示する。また、ランゲージモニタ407は、プリンタグラフィックスドライバ406が生成したPDLデータをプリンタ1500に供給する。なお、ランゲージモニタ407は、プリンタ1500が備えるメモリ容量やエンジンコントローラの構成により異なる転送方法を採用することができる。
次に、GDIプリントパスにおける印刷制御機能の一連の動作について説明する。
まず、アプリケーション201は、ユーザからの操作指示に従って、印刷条件の設定、任意の文書または写真画像等の印刷実行の指示を行う。このようにしてGDI401は、アプリケーション201から印刷実行の指示を受け付けると、ユーザインターフェースドライバ402に対して、プリンタ1500での印刷条件の設定内容及び印刷開始のイベントを通知する。
ユーザインターフェースドライバ402は、プリンタ1500での印刷条件の設定内容の通知を受けると、通知された印刷条件の設定内容を参照し、プリンタ1500にて印刷出力可能な設定内容になっているか否かを判断する。ここで、通知された印刷条件の設定内容が、プリンタ1500にて印刷出力可能な設定内容になっていないと判断した場合には、ユーザインターフェースドライバ402は、プリンタ1500にて印刷出力可能な設定内容になるように、印刷条件の設定内容を一部更新して印刷条件を確定する。
続いて、アプリケーション201は、GDI401を介して、文書・画像データの描画命令を発行する。スプーラ403は、アプリケーション201における描画命令の発行に伴って生成された印刷データ及びユーザインターフェースドライバ402が確定した印刷条件の通知を受けると、通知された印刷データ及び印刷条件をEMFスプールファイル404に格納する。
プリントプロセッサ405は、EMFスプールファイル404から印刷条件の設定内容及び印刷データを取得する。続いて、プリントプロセッサ405は、GDI401を介して、当該印刷条件の設定内容及び印刷データを1ページ単位でプリンタグラフィックスドライバ406に供給する。
GDI401は、プリントプロセッサ405からプリンタグラフィックスドライバ406に印刷データを供給する際に、印刷データに含まれる描画命令をグラフィックス描画コマンドに変換する。プリンタグラフィックスドライバ406は、GDI401により生成されたグラフィックス描画コマンド及びGDI401から通知された印刷条件の設定内容に基づいて、プリントプロセッサ405から供給された印刷データからプリンタ1500が解釈できるPDLデータを生成する。ランゲージモニタ407は、コンピュータ1000からプリンタ1500にPDLデータを伝送するために使用されるインターフェースを経由して、プリンタグラフィックスドライバ406により供給されたPDLデータをプリンタ1500に供給する。プリンタ1500は、ランゲージモニタ407から供給されたPDLデータを解釈し、印刷画像データを用紙上に印刷出力する。
次に、図13を用いて、XPSプリントパスに従って機能するコンピュータ1000について説明する。
図13は、コンピュータ1000での印刷制御処理時に、図2でXPSプリントパスを用いて機能する機能部の構成を示す図である。なお、XPSプリントパスの場合、図2のプリンタドライバ203が図13のユーザインターフェースドライバ402と、レイアウトフィルタ411と、レンダリングフィルタ412とを備えるプリンタドライバに対応する。
図13において、XPSプリントパスに従って機能するコンピュータ1000の機能部は、アプリケーション201、Windows(登録商標) Presentation Foundation(以下、「WPF」と略する。)印刷サポート408、ユーザインターフェースドライバ402、スプーラ403、XPSスプールファイル409、フィルタパイプラインマネージャ410、レイアウトフィルタ411、レンダリングフィルタ412、及びランゲージモニタ407で構成される。なお、レンダリングフィルタ412は、プリンタ1500側に構成されていてもよい。レンダリングフィルタ412を備えるプリンタドライバ或いはレンダリングフィルタ412を備えるプリンタを印刷制御装置と言い換えることが可能である。
まず、図13に示す各機能部の印刷制御機能について説明する。
アプリケーション201は、WPF印刷サポート408を介して、XPSデータを作成する。また、アプリケーション201は、文書や写真画像等のドキュメント、印刷条件、描画命令をXPSデータに対して設定する。以下、XPSデータに含まれている文書や写真画像等のドキュメント、及び描画命令を総称して「印刷データ」と呼ぶ。さらに、アプリケーション201は、WPF印刷サポート408を介して、印刷実行を指示する。
WPF印刷サポート408は、アプリケーション201の指示を受けてXPSデータを構成する。また、WPF印刷サポート408は、XPSデータから印刷条件の設定内容を取り出してユーザインターフェースドライバ402に通知する。また、WPF印刷サポート408は、ユーザインターフェースドライバ402が確定した印刷条件の設定内容をXPSデータに設定する。さらに、WPF印刷サポート408は、XPSデータをスプーラ403に通知する。
ユーザインターフェースドライバ402は、WPF印刷サポート408から通知された印刷条件をプリンタ1500に適合する内容に変更し、最終的な印刷条件を確定する。また、ユーザインターフェースドライバ402は、最終的に確定した印刷条件をWPF印刷サポート408に通知する。
スプーラ403は、WPF印刷サポート408から通知されたXPSデータをXPSスプールファイル409に格納する。フィルタパイプラインマネージャ410は、レイアウトフィルタ411及びレンダリングフィルタ412を介して、XPSスプールファイル409に格納されたXPSデータをプリンタ1500で印刷出力可能なPDLデータに変換し、該PDLデータをプリンタ1500に供給する。なお、XPSデータをプリンタ1500で解釈可能な場合、PDLデータに変換することをせずにプリンタ1500にXPSデータを供給することができる。
レイアウトフィルタ411は、XPSデータ内の印刷データやページ構成を編集する。また、レンダリングフィルタ412は、レイアウトフィルタ411により編集されたXPSデータ内の印刷データをプリンタ1500で印刷出力可能なPDLデータに変換する。
ランゲージモニタ407は、プリンタ1500と双方向の通信を行い、プリンタ1500の情報を取得し表示装置110に表示する。また、ランゲージモニタ407は、フィルタパイプラインマネージャ410から通知されたPDLデータをプリンタ1500に供給する。なお、ランゲージモニタ407は、プリンタ1500が備えるメモリ容量や、エンジンコントローラの構成により異なる転送方法を採用することができる。
OSは、スプーラ403、WPF印刷サポート408、及びフィルタパイプラインマネージャ410の機能を提供する。本発明を有するモジュールは、レンダリングフィルタ412に含まれる。
XPSデータには、イメージファイルやフォントファイル等のリソースファイルの他に、以下のような複数種類のパーツが包含され、各々が以下のような参照を有する。
a)_rels/.rels:文書データとしてのXPSデータの開始点となるパーツ(開始ファイル)である。FixedDocumentSequence(以下、「FDS」と略す。)への参照を有する。
b)FDS:一つの文書データの構成情報が記述されたパーツである。FixedDocument(以下、「FD」と略す。)への参照を有する。なお、一つのデータは複数のドキュメントを有する場合がある。つまり、FDSは、複数のFDへの参照を有する場合がある。
c)FD:一つのドキュメントに存在する複数のページをページ順に並べて束ねるためのパーツ(ページ構成データのファイル)である。一つのドキュメントの構成情報が記述されたパーツであり、FixedPage(以下、「FP」と略す。)への参照を有する。なお、一つのドキュメントは複数のページを有する場合がある。つまり、FDは、複数のFPへの参照を有する場合がある。
d)FP:印刷対象となる1ページの描画内容が記述されたパーツ(印刷対象データのファイル)である。FPパーツは、必要に応じて、イメージファイルやフォントファイルへの参照を有する場合がある。例えば、当該ページにイメージの描画が存在する場合は、当該イメージファイルへの参照を有することになる。
次に、XPSプリントパスにおける印刷制御機能の一連の動作について説明する。
まず、アプリケーション201は、ユーザからの操作指示に従って、任意の文書または写真画像等のドキュメントを読み込む。なお、任意の文書には、予め作成されていたXPSデータも含まれる。続いて、アプリケーション201は、ユーザからの操作指示に従って、XPSデータの作成を行い、文書や写真画像等のドキュメント、印刷条件、描画命令をXPSデータに設定する。なお、予め作成されていたXPSデータを読み込んだ場合には、新たにXPSデータを作成することはなく、アプリケーション201は、読み込んだXPSデータに含まれる印刷条件や描画命令をユーザからの操作指示に従って編集すればよい。
XPSプリントパスでは、予め定義されたXMLスキーマの形式に従って記述されたXMLファイルを用いて印刷条件の設定が行われる。印刷設定を行うために予め定義されたXMLスキーマの形式を「プリントスキーマ」と呼び、印刷スキーマに従って印刷条件が記述されているXMLファイルを「プリントチケット」と呼ぶ。プリントチケットはそのままの形式でXPSデータに含まれることになる。
続いて、アプリケーション201は、ユーザからの操作指示に従って、XPSデータを用いて印刷実行の指示を行う。WPF印刷サポート408は、アプリケーション201から印刷実行の指示を受け付けると、XPSデータ内のプリントチケットを取り出し、印刷条件の設定内容として当該プリントチケットをユーザインターフェースドライバ402に通知する。
ユーザインターフェースドライバ402は、プリンタ1500での印刷条件の設定内容の通知を受けると、通知された印刷条件の設定内容を参照し、プリンタ1500にて印刷出力可能な設定内容になっているか否かを判断する。通知された印刷条件の設定内容が、プリンタ1500にて印刷出力可能な設定内容になっていないと判断した場合、ユーザインターフェースドライバ402は、プリンタ1500にて印刷出力可能な設定内容になるように、印刷条件の設定内容を一部更新し、印刷条件を確定する。続いて、ユーザインターフェースドライバ402は、確定した印刷条件によりプリントチケットを更新し、WPF印刷サポート408に通知する。WPF印刷サポート408は、ユーザインターフェースドライバ402から通知されたプリントチケットをXPSデータに設定し、当該XPSデータをスプーラ403に通知する。
スプーラ403は、WPF印刷サポート408からXPSデータの通知を受けると、通知されたXPSデータをXPSスプールファイル409に格納する。なお、WPF印刷サポート408を介さず、アプリケーション201からスプーラ403に任意のXPSデータを通知することも可能である。つまり、MXDWで作成したXPSデータを通知することも可能である。続いて、スプーラ403は、フィルタパイプラインマネージャ410に対して印刷開始のイベントを通知する。
フィルタパイプラインマネージャ410は、スプーラ403から印刷開始のイベントの通知を受けると、XPSスプールファイル409に格納されているXPSデータを取得し、当該XPSデータをレイアウトフィルタ411に通知する。
レイアウトフィルタ411は、通知されたXPSデータから印刷データ、及びプリントチケットを取得する。続いて、レイアウトフィルタ411は、プリントチケットに記載されている印刷条件の設定内容に基づいて、印刷データの編集、及びXPSデータのページ構成の編集を行う。なお、印刷データやページ構成の編集内容には、ビットマップの合成(ウォーターマーク)、ページ合成(割付)、ページ順序の変更(逆順)等が含まれる。
続いて、レイアウトフィルタ411は、印刷データやページ構成の編集を終えた後のXPSデータをフィルタパイプラインマネージャ410に通知する。フィルタパイプラインマネージャ410は、レイアウトフィルタ411から通知されたXPSデータをレンダリングフィルタ412に通知する。
レンダリングフィルタ412は、通知されたXPSデータから印刷データ、及びプリントチケットを取得する。続いて、レンダリングフィルタ412は、プリントチケットに記載されている印刷条件の設定内容に基づいて、印刷データからプリンタ1500が解釈できるPDLデータを生成し、該PDLデータをフィルタパイプラインマネージャ410に通知する。
フィルタパイプラインマネージャ410は、レンダリングフィルタ412から通知されたPDLデータをランゲージモニタ407に供給する。ランゲージモニタ407は、コンピュータ1000からプリンタ1500にPDLデータを伝送するために使用されるインターフェースを経由して、フィルタパイプラインマネージャ410により供給されたPDLデータをプリンタ1500に供給する。プリンタ1500は、ランゲージモニタ407から供給されたPDLデータを解釈し、印刷画像データを用紙上に印刷出力する。
本発明は、特に、MXDWでXPSデータを作成する際に、図31に示すように、インタリーブ設定がONまたはOFFにかかわらず、MXDW作成されたXPSデータをレンダリングフィルタ412でPDLデータを作成する際、XPSデータ内のパーツデータを検索するのに有効である。
次に、上述したXPSプリントパスにおける印刷制御機能の中で、レイアウトフィルタ411が行う処理について説明する。
図33は、レイアウトフィルタ411により実行されるXPSデータ内のパーツのインタリーブ化処理を示すフローチャートである。なお、インタリーブ化すると、XPSデータ内のパーツを、例えば、印刷処理順に並べることができる。
レイアウトフィルタ411は、まず、ユーザインターフェースドライバ402でユーザの操作によって、印刷するデータをインタリーブするか否かの指定を判定する(ステップS2400)。言い換えると、インタリーブ化するか否かを決定する処理である。
インタリーブをする指定がなかった場合、インタリーブ処理を行わず、本処理を終了とする。一方、インタリーブをする指定があった場合、インタリーブをするために、パーツを取得する(ステップS2401)。初めに取得するパーツは、_rels/.relsである。次に、本パーツが既にインタリーブ化されているかを判断する(ステップS2402)。パーツがインタリーブ化されているか否かは、_rels/.relsが一つのファイルである構成であるか、若しくは_rels/.relsはディレクトリであり、本ディレクトリ内にファイルを有する構成であるかによって判断され得る。
ステップS2402の判断の結果、取得したパーツがインタリーブ化されていない場合は、レイアウトフィルタ411は、本パーツがXMLデータであるかを判断する(ステップS2403)。本パーツがXMLデータである場合は、レイアウトフィルタ411は、本パーツがプリントチケットまたはFPパーツであるかを判断する(ステップS2404)。本パーツがプリントチケットまたはFPパーツでない場合は、レイアウトフィルタ411は、後述するインタリーブ化(分割)処理を実施する(ステップS2405)。
レイアウトフィルタ411は、取得したパーツが既にインタリーブ化(分割)されていると判断した場合(ステップS2402でYES)、該パーツがXMLデータでないと判断した場合(ステップS2403でNO)、該パーツがプリントチケット、またはFPパーツであると判断した場合(ステップS2404でYES)には、取得したパーツがインタリーブ化を行う必要がないことを意味するため、ステップS2405のインタリーブ化(分割)処理を実施しない。
次に、レイアウトフィルタ411は、ステップS2401〜S2405の処理を全てのパーツに対して実施したかを判断する(ステップS2406)。全てのパーツに対して当該処理を実施していないと判断した場合には、レイアウトフィルタ411は、当該パーツから他のパーツへの参照タグを検索し、検索されたパーツに対してステップS2401〜S2405を実施する。一方、全てのパーツに対して当該処理を実施済みと判断した場合には、インタリーブ化されていないパーツをインタリーブ化する処理を終了する。
次に、図34を用いて、図33のステップS2405におけるインタリーブ化処理の詳細を説明する。本処理では、他のパーツへの参照タグを有するパーツデータが、他のパーツへの参照タグを有するタグに分割され、当該パーツがインタリーブ化される。
図34は、図33のステップS2405におけるインタリーブ化処理の詳細を示すフローチャートである。
レイアウトフィルタ411は、まず、パーツデータを取得する(ステップS2501)。次に、レイアウトフィルタ411は、タグの検索処理の開始位置をパーツの先頭に設定する(ステップS2502)。次に、レイアウトフィルタ411は、当該パーツの記述内容より、他のパーツへの参照タグを検索する(ステップS2503)。次に、レイアウトフィルタ411は、ステップS2503で他のパーツへの参照タグが見付かったかを判断する(ステップS2504)。
ステップS2504において、他のパーツへの参照タグが見付かったと判断した場合、レイアウトフィルタ411は、当該パーツと同一の階層に新規ディレクトリを追加する(ステップS2505)。なお、本ディレクトリの名称を当該パーツと同一にする。一方、ステップS2504において、他のパーツへの参照タグが見付からなかったと判断した場合、レイアウトフィルタ411は、インタリーブ化する必要がないパーツであることを意味するため、ステップS2505〜S2514の処理を実施せず、本処理を終了する。
次に、レイアウトフィルタ411は、ステップS2505で追加した新規ディレクトリ以下にパーツを追加する(ステップS2506)。なお、追加するファイルの名称を「[s].piece」とする。ここで、“s”は10進数の数値であり、当該ディレクトリ以下に追加したファイルに、0から順に1を加算した値を割り振る。Sは、レイアウトフィルタ411が管理するRAM102に確保されたメモリ領域に保持される。
次に、レイアウトフィルタ411は、ステップS2502で設定したタグ検索開始位置からステップS2503で検索した他のパーツへの参照タグの間に存在する記述内容を、ステップS2506で追加したパーツに書き出す(ステップS2507)。次に、レイアウトフィルタ411は、タグ検索開始位置をステップS2503で検索した他のパーツへの参照タグの終端の位置に移動する(ステップS2508)。次に、レイアウトフィルタ411は、ステップS2506と同様に、ステップS2505で追加した新規ディレクトリ以下にパーツを追加する(ステップS2509)。なお、本ファイルの名称の決定方法もステップS2506と同様とする。
次に、レイアウトフィルタ411は、ステップS2503と同様に、当該パーツの記述内容より、他のパーツへの参照タグを検索する(ステップS2510)。次に、レイアウトフィルタ411は、ステップS2504と同様に、ステップS2510で他のパーツへの参照タグが見付かったかを判断する(ステップS2511)。
ステップS2511において、他のパーツへの参照タグが見付かったと判断した場合、ステップS2507と同様に、レイアウトフィルタ411は、ステップS2508で移動したタグ検索開始位置からステップS2510で検索した他のパーツへの参照タグの間に存在する記述内容を、ステップS2509で追加したパーツに書き出す(ステップS2514)。続いて、ステップS2508〜S2511を繰り返す。
一方、ステップS2511の判断の結果、他のパーツへの参照タグが見付からなかったと判断した場合、レイアウトフィルタ411は、ステップS2508で移動したタグ検索開始位置から当該パーツデータの終端までの間に存在する記述内容を、ステップS2509で追加したパーツに書き出す(ステップS2512)。続いて、レイアウトフィルタ411は、元のパーツデータを削除して(ステップS2513)、リターンする。
上述したインタリーブ化(分割)処理を図35のようなインタリーブされていないデータに対して実施すると、図36のように分割される。
次に、上述したXPSプリントパスにおける印刷制御機能の中で、レンダリングフィルタ412が行う処理について説明する。
図14は、レンダリングフィルタ412により実行されるXPSデータの解析処理を示すフローチャートである。
前述の通り、フィルタパイプラインマネージャ410は、スプーラ403から印刷開始のイベントの通知を受けると、XPSスプールファイル409に格納されているMXDWで作成されたXPSデータを取得し、当該XPSデータをレイアウトフィルタ411に通知する。レイアウトフィルタ411は、プリントチケットに記載されている印刷条件の設定内容に基づいて、印刷データの編集及びXPSデータのページ構成の編集を行い、編集を終えた後のXPSデータをフィルタパイプラインマネージャ410に通知する。フィルタパイプラインマネージャ410は、レイアウトフィルタ411から通知されたXPSデータをレンダリングフィルタ412に通知する。レンダリングフィルタ412はフィルタパイプラインマネージャ410から通知を受け取ると、図28に示すジョブ情報管理テーブル2800を当該レンダリングフィルタ412が管理するRAM102内のメモリ領域に作成して保持する(ステップS1001)。
ここで、ジョブ情報管理テーブル2800を構成する項目の内容について図28及び図29を参照して説明する。
図28はジョブ情報管理テーブル2800の構成を示す図であり、図29は、ジョブ情報管理テーブル2800におけるイメージ位置リストのデータ構造を示す図である。
図28において、インタリーブ2801は、処理対象のXPSデータがインタリーブ化(分割)されているか否かを示す情報が格納される。すなわち、XPSデータがインタリーブ化(分割)されている場合には、インタリーブ2801に“ON”が格納され、インタリーブ化されていない場合にはインタリーブ2801に“OFF”が格納されている。
イメージ配置方法2802は、イメージファイルとしてのイメージパーツがどこに配置されるかを示す情報(配置情報)が格納される。すなわち、イメージ配置方法2802に格納される情報としては、“ページの前”若しくは“ページの後”である。フォント配置方法2803は、イメージ配置方法2802と同様に、フォントファイルとしてのフォントパーツがどこに配置されるかを示す情報が格納される。すなわち、フォント配置方法2803に格納される情報としては、“ページの前”若しくは“ページの後”である。
イメージ位置リスト最初のデータへのポインタ2804は、図29に示す、全ての処理済みのイメージパーツのXPSデータ内での位置を記録したリスト(イメージ位置リスト)への最初のデータへのポインタ(配置位置)が格納される。イメージ位置リスト最後のデータへのポインタ2805は、図29に示す、全ての処理済みのイメージパーツのXPSデータ内での位置を記録したリスト(イメージ位置リスト)への最後のデータへのポインタ(配置位置)が格納される。
フォント位置リスト最初のデータへのポインタ2806及びフォント位置リスト最後のデータへのポインタ2807は、イメージ位置リスト最初/最後のデータへのポインタ2804,2805と同様である。
図14に戻り、ステップS1002において、レンダリングフィルタ412は、図30に示す処理中ページ情報管理テーブル3000をレンダリングフィルタ412が管理するRAM102内にメモリ領域に作成して保持する。処理中ページ情報管理テーブル3000を構成する項目の内容を図30に示す。
図30は、処理中ページ情報管理テーブル3000の構成を示す図である。
図30において、ドキュメント位置3001は、処理中FPパーツのパスが記述されているFDパーツ(またはピース)のXPSデータの先頭からの位置(バイト単位、配置位置)が格納される。インタリーブ化されていないXPSデータを処理するのであれば、ここに入力される値は一つのドキュメントの処理が終わるまで一定である。これは、FDパーツがFDピースにインタリーブされないためである。なお、ドキュメント位置3001は、XPSデータの先頭からの位置(バイト単位、配置位置)以外に、RAM102内に記憶されているアドレスを用いてもよい。
ページ位置3002は、FPパーツのXPSデータの先頭からの位置(バイト単位、配置位置)が格納される。なお、ページ位置3002は、FPパーツを検索するたびに更新されるものである。前ページ位置3003は、現在処理しているFPパーツの前に処理していたFPパーツのXPSデータの先頭からのページ位置(バイト単位、配置位置)が格納される。この項目(前ページ位置3003)はインタリーブ化されていないXPSデータにのみ使用される。なお、ページ位置3002、前ページ位置3003は、ドキュメント位置3001と同様に、RAM102内に記憶されているアドレスを用いてもよい。
図14に戻り、ステップS1003では、レンダリングフィルタ412は、ZIP圧縮されたXPSデータを取得する。続いて、レンダリングフィルタ412は、取得したXPSデータを解析し、プリンタ1500が解釈できるPDLデータを生成するための中間データを生成し、当該レンダリングフィルタ412が管理するRAM102内のメモリ領域に作成して保持する(ステップS1004)(XPSデータ解析処理)。なお、レンダリングフィルタ412が管理可能なメモリ領域が作成可能であれば、RAM102に限定されず、他の記憶装置であってもよい。また、レンダリングフィルタ412は、プリンタ1500に構成されていてもよい。このプリンタ1500にレンダリングフィルタ412に保持する場合は、PDLデータを生成せずに、印刷部117で印字する描画データを生成する。
ステップS1003でのXPSデータの取得は、XPSデータを取得しながら、S1004のXPSデータの解析処理を平行して実行する(ストリーミングする)ために、フィルタパイプラインマネージャ410から細分化データ(パケット)単位でデータを取得するように構成してもよい。この場合、分割されたデータを取得しながら、レンダリングフィルタ412は解析を実行する。
また、プリンタ1500にレンダリングフィルタ412が構成されている場合は、プリンタ1500へプリントデータ(XPSデータ)を送信する際に、プリンタ1500で即時に印刷処理を実行できるようにするために、フィルタパイプラインマネージャ410またはランゲージモニタ407がXPSデータを細分化データ(パケット)単位にしてプリンタ1500に送信する。つまり、プリンタ1500は、データを受信しながら、解析処理して、順次印刷を実行することが可能となる。
なお、受信または取得した細分化データは、記憶領域(RAM102またはRAM119)に記憶される。また、細分化データを受信または取得しながら解析処理をするため、解析処理が実行できる単位(1つのファイル(パーツ)分)のデータを受信していない、または取得できない(読出しができない)場合は解析処理を実行できるようになるまで待機する。
次に、レンダリングフィルタ412は、ステップS1004で生成された中間データをPDLデータに変換するモジュールに渡してPDLデータに変換し、当該PDLデータをフィルタパイプラインマネージャ410に通知する(ステップS1005)。なお、後述する図23のステップS1904の処理の後に1ページ毎の中間データをその都度PDL変換モジュールに渡すか、または図22のステップS1801で抽出した1描画命令を中間データに変換して、その都度PDL変換モジュールに渡しても構わない。
また、中間データ(XPSデータ)を用いて印刷することが可能なプリンタである場合には、ステップS1005の処理を実行することなく、中間データをプリンタ1500に送信するように構成することも可能である。さらに、プリンタ1500にレンダリングフィルタが構成され、プリンタ1500が中間データを用いて印刷することが可能である場合は、ステップS1005の処理を実行することなく、中間データを描画データに変換して印刷部(プリンタエンジン)117に渡して印刷することも可能である。
次に、図15を用いて、図14のステップS1004におけるXPSデータ解析処理の詳細を説明する。
図15は、図14のステップS1004におけるXPSデータ解析処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、取得したXPSデータにおける_rels/.relsパーツデータを全て解析したか否かを判断する(ステップS1101)。全て解析したか否かの判断は、_rels/.relsパーツデータが前述したようにXML形式であるので、ルート要素の終了タグを処理したか否かで行われる。具体的には、レンダリングフィルタ412は、図9に示すパーツ852に記述されている</Relationships>というルート要素の終了タグを検出したところで、_rels/.relsパーツデータの解析終了と判断する。以降、XML形式のパーツに関して、全て解析したか否かの判断は同様の方法をとるものとする。なお、ルート要素の終了タグは最後のピースデータに必ず存在する。
なお、ステップS1101では、取得したXPSデータがインタリーブ化されているか否かを判定することもできる。XPSデータがインタリーブ化されていない場合は、_rels/.relsパーツデータが1つしか存在しないためである(インタリーブ判定手段)。
ステップS1101の判断の結果、_rels/.relsパーツデータを全て解析済みであれば、本処理を終了する。一方、未処理の_rels/.relsパーツデータが存在しているのであれば(ステップS1101でYES)、レンダリングフィルタ412は、未処理の_rels/.relsパーツデータ(またはピースデータ)を全て取得したか否かを判断する(ステップS1102)。_rels/.relsパーツデータを全て取得したか否かの判断は、インタリーブ化されている場合は、後述するXPSデータ内のパーツ(またはピース)の検索時に、データ名の最後が「/_rels/.rels/[i].last.piece」となっているピースデータを取得したときに全て取得したと判断される。なお、XPSデータがインタリーブ化されていない場合は、_rels/.relsパーツデータが1つしか存在しないので、ステップS1103の処理は1回しか行われない。
以降、パーツを全て取得したか否かの判断は、上記と同様の方法をとるものとする。
ステップS1102の判断の結果、まだ_rels/.relsパーツデータ(またはピースデータ)を全て取得していないのであれば(ステップS1102でYES)、レンダリングフィルタ412は、次のパーツデータ(またはピースデータ)を検索・伸長して取得する(ステップS1103)。ここで、本検索方法は、Local File Headerをデータの先頭から検索する方法を採用するものとする。また、このとき、検索するLocal File Header内のデータ名としては、“_rels/.rels”若しくは、インタリーブ化されている場合の“_rels/.rels/[i].piece”(iは0で始まる通し番号)である。
以降、特に断りが無い限り、XPSデータ内のパーツの検索方法はこの方法をとるものとする。また、本伸張方法は一般的なZIPデータの伸張方法であり、伸張したデータはディレクトリ構成を保持したまま各種ファイルを外部メモリ111に書き出す形で保存される。伸長方法についても、以降の説明ではこの方法をとるものとする。
次に、レンダリングフィルタ412は、取得した_rels/.relsパーツデータ(またはピースデータ)を解析し、FDSのXPS内でのデータ名を取得する(ステップS1104)。_rels/.relsパーツデータは、前述の通り、XML形式で記述されたファイルであり、本解析方法については一般的なXMLファイルの解析方法を採用する。なお、以後、XML形式で記述されたファイルを解析する場合は、同様に、一般的なXMLファイルの解析方法を採用するものとする。
ステップS1105において、レンダリングフィルタ412は、FDSのデータ名を取得することができたときは(ステップS1105でYES)、FDSの処理を行う(ステップS1106)。一方、FDSのデータ名を取得することができかなったときは(ステップS1105でNO)、ステップS1101へ戻る。
次に、図16を用いて、図15のステップS1106におけるFDSの処理の詳細を説明する。
図16は、図15のステップS1106におけるFDSの処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、XPSデータにおけるFDSパーツデータを全て解析したか否かを判断する(ステップS1201)。この判断の結果、まだFDSパーツデータに未解析の箇所が存在すれば(ステップS1201でYES)、レンダリングフィルタ412は、FDSパーツデータを全て取得したか否かの判断を行う(ステップS1202)。この判断の結果、まだFDSパーツデータ(またはピースデータ)を全て取得していないのであれば(ステップS1202でYES)、レンダリングフィルタ412は、次のFDSパーツデータ(またはピースデータ)を検索・伸長して取得する(ステップS1203)。
次に、レンダリングフィルタ412は、取得したFDSパーツデータ(またはピースデータ)を解析し、FDのXPS内でのデータ名を一つ取得する(ステップS1204)。FDのデータ名を取得することができたときは(ステップS1205でYES)、レンダリングフィルタ412は、FDの処理を行う(ステップS1206)。一方、FDのデータ名を取得することができなかったときは(ステップS1205でNO)、ステップS1201へ戻る。
次に、図17を用いて、図16のステップS1206におけるFDの処理の詳細を説明する。
図17は、図16のステップS1206におけるFDの処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、XPSデータにおけるFDパーツデータを全て解析したか否かを判断する(ステップS1301)。この判断の結果、まだFDパーツデータに未解析の箇所が存在すれば(ステップS1301でYES)、レンダリングフィルタ412は、FDパーツデータを全て取得したか否かを判断する(ステップS1302)。この判断の結果、まだFDパーツデータを全て取得していないときは(ステップS1302でYES)、レンダリングフィルタ412は、次のFDパーツデータ(またはピースデータ)を検索・伸長して取得する(ステップS1303)。ここでの検索方法の詳細については後述する。
次に、レンダリングフィルタ412は、取得したFDパーツデータ(またはピースデータ)を解析し、FPのXPS内でのデータ名を一つ取得する(ステップS1304)。FPのデータ名を取得することができたときは(ステップS1305でYES)、FPの処理を行う(ステップS1306)。一方、FPのデータ名を取得できなかったときは(ステップS1305でNO)、ステップS1301へ戻る。
次に、図18を用いて、図17のステップS1303におけるFDパーツデータの検索・伸長・取得処理の詳細を説明する。
図18は、図17のステップS1303におけるFDパーツデータの検索・伸長・取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、上述した図28に示すジョブ情報管理テーブル2800を参照し、XPSデータがインタリーブ化されているか否かの判断がなされているかを判断する(ステップS1401)。具体的な判断方法としては、ジョブ情報管理テーブル2800におけるインタリーブ2801に“ON”も“OFF”も何も格納されていないか否かで判断される。
ステップS1401の判断の結果に応じて、レンダリングフィルタ412は、第1のFDパーツ取得処理(ステップS1402)または第2のFDパーツ取得処理(ステップS1403)のいずれかの処理を実行する。すなわち、レンダリングフィルタ412は、ジョブ情報管理テーブル2800におけるインタリーブ2801が空であるときは、ステップS1402の第1のFDパーツ取得処理を実行する一方、ジョブ情報管理テーブル2800におけるインタリーブ2801が空でないときは、ステップS1403の第2のFDパーツ取得処理を実行する。
次に、図19を用いて、図18のステップS1402における第1のFDパーツ取得処理の詳細を説明する。
図19は、図18のステップS1402における第1のFDパーツ取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、フィルタパイプラインマネージャ410から順次受信し、RAM102などの記憶領域に記憶されたXPSデータを読み出し、FDSパーツデータの解析によって判明するFDパーツ名のデータをXPSデータの先頭から検索し、伸長し、取得する(ステップS1501)。次に、レンダリングフィルタ412は、取得したFDパーツデータがピースデータに分割されているか、すなわちFDパーツデータがインタリーブ化されているかを判断する(ステップS1502)(インタリーブ判定手段)。この判断の結果、取得したFDパーツデータのヘッダ内のデータ名が“FD名/[i].piece”(iは0から始まる通し番号)となっていれば、レンダリングフィルタ412は、FDパーツデータがインタリーブ化されていると判断して(ステップS1502でYES)、ジョブ情報管理テーブル2800のインタリーブ2801に“ON”を書き込む(ステップS1503)。
一方、レンダリングフィルタ412は、インタリーブ化されていないと判断した場合は(ステップS1502でNO)、ジョブ情報管理テーブル2800のインタリーブ2801に“OFF”を書き込む(ステップS1504)。ここでは、FDパーツ名によってインタリーブ化されているか否かの判断を行っているが、インタリーブONの設定で、MXDWからXPSデータが作成されているのであれば、_rels/.rels、またはFDSパーツデータのパーツ名で判断することも可能である。
次に、ステップS1505では、レンダリングフィルタ412は、図30に示した処理中ページ情報管理テーブル3000のドキュメント位置3001に、取得したFDパーツデータ(またはピースデータ)のXPSデータ内での先頭からの位置をバイト単位(配置位置)で書き込む。続いて、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001以外の項目を空にする(ステップS1506)。
次に、図20を用いて、図18のステップS1403における第2のFDパーツ取得処理の詳細を説明する。
図20は、図18のステップS1403における第2のFDパーツ取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のインタリーブ2801の内容を確認し、“ON”か否かを判断する(ステップS1601)。この判断の結果、ジョブ情報管理テーブル2800のインタリーブ2801が“ON”のときは、ステップS1602へ進む一方、“OFF”のときは、ステップS1605へ進む。
ステップS1602では、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のページ位置3002が空か否かを判断する。処理中ページ情報管理テーブル3000のページ位置3002が空の場合、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001に記述されたバイト数分(配置位置)、XPSデータの先頭から進んだXPSデータから正順に検索し、FDパーツデータを取得する(ステップS1603)。一方、処理中ページ情報管理テーブル3000のページ位置3002が空でない場合、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のページ位置3002に格納されたページ位置から正順に検索してFDパーツデータを取得する(ステップS1604)。ここで「正順」とは、データの先頭から終端の方向を意味する。
ステップS1605では、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001に格納されたドキュメント位置から正順にFDパーツデータを検索し、取得する。
次に、レンダリングフィルタ412は、ステップS1603またはステップS1604またはステップS1605における検索処理が終了した後、FDパーツデータ(またはピースデータ)が取得できたか否かを判断する(ステップS1606)。この結果、取得できていなければ、レンダリングフィルタ412は、XPSデータの先頭から順番に検索してFDパーツデータを取得する(ステップS1607)。これは、データの配置規則が統一されていないXPSデータに対応するための処理である。MXDWで作成されたデータの場合、本ステップをスルーする。
次に、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001に、取得したFDパーツデータ(またはピースデータ)のXPSデータ内での先頭からの位置(バイト単位、配置位置)を書き込む(ステップS1608)。続いて、処理中ページ情報管理テーブル3000のドキュメント位置3001以外の項目を空にする(ステップS1609)。
次に、図21を用いて、図17のステップS1306におけるFPの処理の詳細について説明する。
図21は、図17のステップS1306におけるFPの処理の詳細を示すフローチャートである。
レンダリングフィルタ412は、ジョブ情報管理テーブル2800のインタリーブ2801の内容を確認する(ステップS1701)。ジョブ情報管理テーブル2800のインタリーブ2801が“ON”のときは、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001に格納されたドキュメント位置から正順にFPパーツデータを検索し、FPパーツデータを取得する(ステップS1702)。続いて、レンダリングフィルタ412は、FPパーツデータを取得できたか否かを判断する(ステップS1703)。取得できないときは、レンダリングフィルタ412は、XPSデータの先頭から正順に検索して、FPパーツデータを取得する(ステップS1704)。
次に、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のインタリーブ2801が“OFF”のときは、処理中ページ情報管理テーブル3000のページ位置3002が空か否かを判断する(ステップS1705)。空の場合は、レンダリングフィルタ412は、XPSデータの先頭から正順に検索して、FPパーツデータを取得する(ステップS1706)。空でない場合は、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のページ位置3002に格納されたページ位置から正順に検索して、FPパーツデータを取得する(ステップS1707)。続いて、レンダリングフィルタ412は、FPパーツデータを取得できたか否かを判断する(ステップS1708)。取得できないときは、レンダリングフィルタ412は、XPSデータの先頭から正順に検索して、FPパーツデータを取得する(ステップS1709)。
なお、本実施形態では、インタリーブされていない場合(ジョブ情報管理テーブル2800のインタリーブ2801が“OFF”のとき)には、ステップS1705〜S1710の処理を行うように構成したが、インタリーブされていない場合には、XPSデータの先頭から毎回検索するように構成してもよい。これは、インタリーブされていないXPSデータは印刷処理する順にファイル(パーツ)が並んでいないこともあるため、XPSデータの先頭から検索する構成をとることが可能である。つまり、インタリーブされていない場合の検索の先頭は、XPSデータの先頭の位置、或いはFDパーツデータの先頭位置などいずれを検索位置としてもよい。
ステップS1710では、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のインタリーブ2801が“OFF”の場合は、続けて処理中ページ情報管理テーブル3000の前ページ位置3003にページ位置3002の内容をコピーする。次に、FPパーツデータの取得後、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のページ位置3002に、取得したFPパーツデータのXPSデータ先頭からの位置をバイト単位(配置位置)で書き込む(ステップS1711)。続けて、レンダリングフィルタ412は、取得したFPパーツデータの解析処理を行う(ステップS1711)。なお、複数のFPパーツデータを構成するXPSデータの場合、このページ位置3002は、FPパーツデータを検索し、取得するたびに更新される。
次に、図22を用いて、図21のステップS1712におけるFPパーツデータの解析処理の詳細を説明する。
図22は、図21のステップS1712におけるFPパーツデータの解析処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、取得したFPパーツデータを解析し、描画命令を抽出する(ステップS1801)。次に、レンダリングフィルタ412は、抽出した描画命令にイメージデータやフォントデータへの外部リソース参照が含まれているかを判断する(ステップS1802)。外部リソース参照が含まれているのであれば、レンダリングフィルタ412は、外部リソース検索・伸長・取得処理を行う(ステップS1803)。続いて、レンダリングフィルタ412は、現在処理中のFPパーツデータまたはFPピースデータの終端まで解析したか否かを判断する(ステップS1804)。この判断の結果、まだ未解析の箇所が残っているのであれば(ステップS1804でNO)、ステップS1801に戻る。
次に、図23を用いて、図22のステップS1803における外部リソース検索・伸長・取得処理の詳細を説明する。
図23は、図22のステップS1803における外部リソース検索・伸長・取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のインタリーブ2801の内容を確認する(ステップS1901)。ジョブ情報管理テーブル2800のインタリーブ2801が“ON”のときは、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802の内容を確認する(ステップS1902)。ジョブ情報管理テーブル2800のイメージ配置方法2802の内容が空だった場合、レンダリングフィルタ412は、第1の外部リソース取得処理を行う(ステップS1903)。空でない場合、レンダリングフィルタ412は、第2の外部リソース取得処理を行う(ステップS1904)。
一方、ステップS1901において、ジョブ情報管理テーブル2800のインタリーブ2801が“OFF”の場合、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802の内容を確認する(ステップS1905)。ジョブ情報管理テーブル2800のイメージ配置方法2802の内容が空だった場合、レンダリングフィルタ412は、第3の外部リソース取得処理を行う(ステップS1906)。空でない場合、レンダリングフィルタ412は、第3の外部リソース取得処理を行う(ステップS1907)。
次に、図24を用いて、図23のステップS1903における第1の外部リソース取得処理の詳細について説明する。第1の外部リソース取得処理は、外部リソースがイメージデータであって、XPSデータがインタリーブ化されており(インタリーブON)、イメージデータのXPSデータ内における配置方法が判明していない場合に実行される処理である。
図24は、図23のステップS1903における第1の外部リソース取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001に格納されたドキュメント位置からページ位置3002に格納されたページ位置まで正順にイメージパーツの検索を行う(ステップS2001)。続いて、レンダリングフィルタ412は、イメージパーツが発見できたか否かを判断する(ステップS2002)。イメージパーツが発見できなかったときは、ステップS2005へ進む。一方、イメージパーツが発見できたときは、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802に“ページの前”と書き込む(ステップS2003)。
次に、ステップS2004では、レンダリングフィルタ412は、ジョブ情報管理テーブル2800の“イメージ位置リストの最後のデータへのポインタ”(配置位置)に、発見したイメージパーツのXPSデータ内での位置が記述されたデータを作成し付け加えることで更新する。
ステップS2005では、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のページ位置3002に格納されたページ位置からXPSデータの最後まで正順に検索を行う。続いて、レンダリングフィルタ412は、イメージパーツが発見できたか否かを判断する(ステップS2006)。イメージパーツが発見できたときは、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802に“ページの後”と書き込む(ステップS2007)。続いて、レンダリングフィルタ412は、ジョブ情報管理テーブル2800の“イメージ位置リストの最後のデータへのポインタ”(配置位置)に、発見したイメージパーツのXPSデータ内での位置が記述されたデータを作成し付け加えることで更新する(ステップS2008)。
一方、ステップS2006において、イメージデータが発見できなかった場合、レンダリングフィルタ412は、XPSデータの先頭から正順にイメージパーツを検索して取得する(ステップS2009)。
次に、図25を用いて、図23のステップS1904における第2の外部リソース取得処理の詳細について説明する。第2の外部リソース取得処理は、外部リソースがイメージデータであって、XPSデータがインタリーブ化されており(インタリーブON)、イメージデータのXPSデータ内における配置方法が判明している場合に実行される処理である。
図25は、図23のステップS1904における第2の外部リソース取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802の内容を確認し、イメージ配置方法2802の内容が“ページの前”か否かを判断する(ステップS2101)。この判断の結果、イメージ配置方法2802の内容が“ページの後”である場合(ステップS2101でNO)、ステップS2106へ進む。一方、イメージ配置方法2802の内容が“ページの前”である場合(ステップS2101でYES)、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のドキュメント位置3001に格納されたドキュメント位置からページ位置3002に格納されたページ位置まで正順にイメージパーツの検索を行う(ステップS2102)。
次に、レンダリングフィルタ412は、イメージパーツが発見できたか否かを判断する(ステップS2103)。イメージパーツを発見できたときは(ステップS2103でYES)、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ位置リストの最後のデータへのポインタ2805に、発見したイメージパーツのXPSデータ内での位置が記述されたデータを作成して格納することで更新して(ステップS2104)、ステップS2107へ進む。
一方、ステップS2103において、イメージパーツが発見できなかったときは、レンダリングフィルタ412は、以前使われたイメージデータかもしれないので、イメージ位置リストの最初から順番にその指し示す先のデータを調べて(ステップS2105)、ステップS2106へ進む。
ステップS2106では、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ位置リストの最初のデータへのポインタ2804の指し示す先の位置からXPSデータの最後まで正順にイメージパーツを検索する。
ステップS2107では、イメージパーツが発見できたか否かを判断し、発見できなければ(ステップS2107でNO)、XPSデータの先頭から検索してイメージパーツを取得する(ステップS2108)。
次に、図26を用いて、図23のステップS1906における第3の外部リソース取得処理の詳細について説明する。第3の外部リソース取得処理は、外部リソースがイメージデータであって、XPSデータがインタリーブ化されておらず(インタリーブOFF)、イメージデータのXPSデータにおける配置方法が判明していない場合に実行される処理である。
図26は、図23のステップS1906における第3の外部リソース取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000の前ページ位置3003に格納された前ページ位置からページ位置3002に格納されたページ位置まで正順にイメージパーツの検索を行う(ステップS2201)。続いて、レンダリングフィルタ412は、イメージパーツが発見できたか否かを判断する(ステップS2202)。イメージパーツが発見できなかったときは、ステップS2205へ進む。一方、イメージデータが発見できたときは、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802に“ページの前”と書き込む(ステップS2203)。
次に、ステップS2204では、レンダリングフィルタ412は、ジョブ情報管理テーブル2800の“イメージ位置リストの最後のデータへのポインタ”(配置位置)に、発見したイメージパーツのXPSデータ内での位置が記述されたデータを作成し付け加えることで更新する。
ステップS2205では、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000のページ位置3002に格納されたページ位置からXPSデータの最後まで正順に検索を行う。続いて、レンダリングフィルタ412は、イメージパーツが発見できたか否かを判断する(ステップS2206)。イメージパーツが発見できたときは、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802に“ページの後”と書き込む(ステップS2207)。続いて、レンダリングフィルタ412は、ジョブ情報管理テーブル2800の“イメージ位置リストの最後のデータへのポインタ”(配置位置)に、発見したイメージパーツのXPSデータ内での位置が記述されたデータを作成し付け加えることで更新する(ステップS2208)。
一方、ステップS2206において、イメージデータが発見できなかった場合、レンダリングフィルタ412は、XPSデータの先頭から正順にイメージパーツを検索して取得する(ステップS2209)。
次に、図27を用いて、図23のステップS1907における第4の外部リソース取得処理の詳細について説明する。第4の外部リソース取得処理は、外部リソースがイメージデータであって、XPSデータがインタリーブ化されておらず(インタリーブOFF)、イメージデータのXPSデータにおける配置方法が判明している場合に実行される処理である。
図27は、図23のステップS1907における第4の外部リソース取得処理の詳細を示すフローチャートである。
まず、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ配置方法2802の内容を確認し、イメージ配置方法2802の内容が“ページの前”か否かを判断する(ステップS2301)。この判断の結果、イメージ配置方法2802の内容が“ページの後”である場合(ステップS2301でNO)、ステップS2306へ進む。一方、イメージ配置方法2802の内容が“ページの前”である場合(ステップS2
301でYES)、レンダリングフィルタ412は、処理中ページ情報管理テーブル3000の前ページ位置3003に格納された前ページ位置からページ位置3002に格納されたページ位置まで正順にイメージパーツの検索を行う(ステップS2302)。
次に、レンダリングフィルタ412は、イメージパーツが発見できたか否かを判断する(ステップS2303)。イメージパーツを発見できたときは(ステップS2303でYES)、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ位置リストの最後のデータへのポインタ2805に、発見したイメージパーツのXPSデータ内での位置が記述されたデータを作成して格納して(同上)(ステップS2304)、ステップS2307へ進む。
一方、ステップS2303において、イメージパーツが発見できなかったときは、レンダリングフィルタ412は、以前使われたイメージデータかもしれないので、イメージ位置リストの最初から順番にその指し示す先のデータを調べて(ステップS2305)、ステップS2307へ進む。
ステップS2306では、レンダリングフィルタ412は、ジョブ情報管理テーブル2800のイメージ位置リストの最初のデータへのポインタ2804の指し示す先の位置からXPSデータの最後まで正順にイメージパーツを検索する。
ステップS2307では、イメージパーツが発見できたか否かを判断し、発見できないときは(ステップS2307でNO)、XPSデータの先頭から検索してイメージパーツを取得する(ステップS2308)。
上記実施形態によれば、XPSデータの解析結果からFDパーツデータ及びFPパーツデータの配置情報であるドキュメント位置やページ位置をRAM102に作成された処理中ページ情報管理テーブルに格納し、XPSデータがインタリーブ化されているか否かを判定する。この判定結果をジョブ情報管理テーブルに格納し、このジョブ情報管理テーブルに格納された判定結果に応じて取得方法を変更し、処理中ページ情報管理テーブルに格
納された配置情報に基づいてXPSデータからFPパーツデータを取得する。これにより、MXDWで作成されたXPSデータからパーツデータを取得する際、Local File Headerを先頭から検索することなく、XPSデータへの入出力I/O回数を削減して処理を向上させることができる。
次に、図37を用いて、本実施形態の効果を、ZIPデータの先頭からLocal File Headerを順番に調べる第1の方法を用いた場合における入出力I/Oの数と比較して説明する。
図37の、全3ページで、各ページで2つのイメージへの参照があるインタリーブ化(分割)処理が施されたXPSデータで考える。XPSデータはRAM102などの記憶領域に展開されているものとする。
なお、ここでは、本実施形態によって特に効果を得られる最初のFDピースを発見してから、最後のFPパーツが処理されるまでの入出力I/O回数についての説明を行う。
第1の方法の場合、408回入出力I/Oが発生する(内訳は以下の通り)。
・図37の3701のFixedDocument[0](fdoc/[0].piece)の取得(ヘッダ検索数:10回)
・図37の3702のFixedPage1(1.fpage)の取得(ヘッダ検索数:27回)
・図37の3703のイメージ1(1.jpg)の取得(ヘッダ検索数:22回)
・図37の3704のイメージ2(2.jpg)の取得(ヘッダ検索数:25回)
・図37の3705のFixedDocument[1](fdoc/[1].piece)の取得(ヘッダ検索数:28回)
・図37の3706のFixedPage2(2.fpage)の取得(ヘッダ検索数:39回)
・図37の3707のイメージ3(3.jpg)の取得(ヘッダ検索数:34回)
・図37の3708のイメージ4(4.jpg)の取得(ヘッダ検索数:37回)
・図37の3709のFixedDocument[2](fdoc/[2].piece)の取得(ヘッダ検索数:40回)
・図37の3710のFixedPage3(3.fpage)の取得(ヘッダ検索数:51回)
・図37の3711のイメージ5(5.jpg)の取得(ヘッダ検索数:46回)
・図37の3712のイメージ6(6.jpg)の取得(ヘッダ検索数:49回)
本実施形態の場合、184回目入出力I/Oが発生する(内訳は以下の通り)。
FD1の処理
・ジョブ管理情報テーブルの“インタリーブ”が空と確認(読み込み1回)
・先頭から図37の3701のFixedDocument[0](fdoc/[0].piece)を検索して取得(ヘッダ検索数:10回)
・ジョブ管理情報テーブルの“インタリーブ”への“ON”の書き込み(書き込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”に取得したFDパーツのピースデータのXPSデータの先頭からの位置(バイト単位、配置位置)の書き込み(書き込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”以外の項目を空にする(書き込み1回)
FP1の処理
・ジョブ管理情報テーブルの“インタリーブ”が“ON”と判断(読み込み1回)
・図37の3702のFixedPage1(1.fpage)を取得し、位置情報を処理中ページ情報管理テーブルの“ページ位置”に書き込む(FixedDocument[0]の位置読み込み1回、ヘッダ検索数:18回、書き込み1回、合計:20回)。
・ジョブ管理情報テーブルの“インタリーブ”が“ON”と判断(読み込み1回)
・ジョブ情報管理テーブルの“イメージ配置方法”が空と確認(読み込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”と“ページ位置”を取得(読み込み2回)
・図37の3703のイメージ1(1.jpg)の取得(ヘッダ検索数:13回)
・ジョブ情報管理テーブルの“イメージ配置方法”に“ページの前”と記述(書き込み1回)
・取得したイメージの位置が格納されたデータを作成し、イメージ位置リストの最後につなげる(生成1回、書き込み1回、合計2回)。
・図37の3704のイメージ2(2.jpg)の取得(読み込み4回、ヘッダ検索数:16回、生成1回、書き込み1回、合計22回)
FD2の処理
・ジョブ管理情報テーブルの“インタリーブ”への“ON”の確認(読み込み1回)
・処理中ページ情報管理テーブルの“ページ位置”の取得(読み込み1回)
・図37の3705のFixedDocument[1](fdoc/[1].piece)の取得(ヘッダ検索数:2回)
・“ドキュメント位置”に取得したFDパーツのピースデータのXPSデータの先頭からの位置(バイト単位、配置位置)の書き込み(書き込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”以外の項目を空にする(書き込み1回)。
FP2の処理
・ジョブ管理情報テーブルの“インタリーブ”が“ON”と判断(読み込み1回)
・図37の3706のFixedPage2(2.fpage)を取得し、位置情報を処理中ページ情報管理テーブルの“ページ位置”に書き込む(FixedDocument[1]の位置読み込み1回、ヘッダ検索数:12回、書き込み1回、合計:20回)
・ジョブ管理情報テーブルの“インタリーブ”が“ON”と判断(読み込み1回)
・ジョブ情報管理テーブルの“イメージ配置方法”が“ページの前”と確認(読み込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”と“ページ位置”を取得(読み込み2回)
・図37の3707のイメージ3(3.jpg)の取得(ヘッダ検索数:7回)
・取得したイメージの位置が格納されたデータを作成し、イメージ位置リストの最後につなげる(生成1回、書き込み1回、合計2回)。
図37の3708のイメージ4(4.jpg)の取得(読み込み4回、ヘッダ検索数:10回、生成1回、書き込み1回、合計16回)
FD3の処理
・ジョブ管理情報テーブルの“インタリーブ”への“ON”の確認(読み込み1回)
・処理中ページ情報管理テーブルの“ページ位置”の取得(読み込み1回)
・図37の3709のFixedDocument[2](fdoc/[2].piece)の取得(ヘッダ検索数:2回)
・“ドキュメント位置”に取得したFDパーツのピースデータのXPSデータの先頭からの位置(バイト単位、配置位置)の書き込み(書き込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”以外の項目を空にする(書き込み1回)。
FP3の処理
・ジョブ管理情報テーブルの“インタリーブ”が“ON”と判断(読み込み1回)
・図37の3710のFixedPage3(3.fpage)を取得し、位置情報を処理中ページ情報管理テーブルの“ページ位置”に書き込む(FixedDocument[2]の位置読み込み1回、ヘッダ検索数:12回、書き込み1回、合計:20回)。
・ジョブ管理情報テーブルの“インタリーブ”が“ON”と判断(読み込み1回)
・ジョブ情報管理テーブルの“イメージ配置方法”が“ページの前”と確認(読み込み1回)
・処理中ページ情報管理テーブルの“ドキュメント位置”と“ページ位置”を取得(読み込み2回)
・図37の3711のイメージ5(5.jpg)の取得(ヘッダ検索数:7回)
・取得したイメージの位置が格納されたデータを作成し、イメージ位置リストの最後につなげる(生成1回、書き込み1回、合計2回)。
・図37の3712のイメージ6(6.jpg)の取得(読み込み4回、ヘッダ検索数:10回、生成1回、書き込み1回、合計16回)
上述のことから、例えば、2つのイメージを参照するページがNページ(変数:N)あるXPSデータをインタリーブ化(分割)処理が施されたXPSデータを第1の方法と本実施形態の方法で処理するとき、入出力I/O回数は以下のようになる。
従来の方法
74+138×(N−1)+48×(N−3N+2)/2回
本実施形態の方法
76+54×(N−1)回
上記により求められた入出力I/O回数を、アルゴリズムの効率の指標を表す計算量(オーダー)で比較した場合、「74+138×(N−1)+48×(N−3N+2)/2回」:「76+54×(N−1)回」=「O(N)」:「O(N)」となり、第1の方法での順次検索では、ページ数に対する、入出力I/O回数のオーダーは(O(N))であり、本実施形態の方法では(O(N))であるので、ページ数(N)が増えるほど、本実施形態による効果が得られる。また、イメージパーツや、フォントパーツ増えるほど、本実施形態による効果が得られる。
なお、本発明をWindows(登録商標) Vistaでの印刷時以外においても、MXDWで作成されたXPSデータを処理・解析する情報処理装置、プログラムに適用することができる。
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、またはインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
本発明の実施形態に係る情報処理装置を含めた印刷システムの構成例を示すブロック図である。 図1のコンピュータでの印刷制御処理時に機能するソフトウェアの構成を示すブロック図である。 図1のコンピュータ及びプリンタを利用した印刷システムの一例を示すブロック図である。 XPSデータの構成例を示す参考図である。 図4のXPSデータにおけるパーツ間の参照関係の論理的構造の一例を示す参考図である。 パーツデータのXMLファイルの記述に基づいたパーツ間の参照関係の一例を示す参考図である。 XPSデータを構成するZIP圧縮形式で圧縮されたデータの構成例を示す参考図である。 MXDWにより通常生成されるXPSファイルのデータ順の一例を示す参考図である。 インタリーブ化されたパーツデータの一例を示す参考図である。 インタリーブ化されたXPSデータの構成例を示す参考図である。 Windows(登録商標)Vistaの印刷システムがXPSプリントパスに従って生成する印刷スプールファイルのデータ順の一例を示す参考図である。 コンピュータでの印刷制御処理時にGDIプリントパスに従って機能する機能部の構成を示す図である。 コンピュータでの印刷制御処理時にXPSプリントパスに従って機能する機能部の構成を示す図である。 レンダリングフィルタ412により実行されるXPSデータの解析処理を示すフローチャートである。 図14のステップS1004におけるXPSデータ解析処理の詳細を示すフローチャートである。 図15のステップS1106におけるFDSの処理の詳細を示すフローチャートである。 図16のステップS1206におけるFDの処理の詳細を示すフローチャートである。 図17のステップS1303におけるFDパーツデータの検索・伸長・取得処理の詳細を示すフローチャートである。 図18のステップS1402における第1のFDパーツ取得処理の詳細を示すフローチャートである。 図18のステップS1403における第2のFDパーツ取得処理の詳細を示すフローチャートである。 図17のステップS1306におけるFPの処理の詳細を示すフローチャートである。 図21のステップS1712におけるFPパーツの解析処理の詳細を示すフローチャートである。 図22のステップS1803における外部リソース検索・伸長・取得処理の詳細を示すフローチャートである。 図23のステップS1903における第1の外部リソース取得処理の詳細を示すフローチャートである。 図23のステップS1904における第2の外部リソース取得処理の詳細を示すフローチャートである。 図23のステップS1906における第3の外部リソース取得処理の詳細を示すフローチャートである。 図23のステップS1907における第4の外部リソース取得処理の詳細を示すフローチャートである。 ジョブ情報管理テーブルの構成を示す図である。 イメージ位置リストのデータ構造を示す図である。 処理中ページ情報管理テーブルの構成を示す図である。 MXDWでXPSデータを出力する場合のインタリーブON/OFF設定UIを示す図である。 パーツデータのXMLファイルの記述に基づいたパーツ間の参照関係の他の例を示す図である。 レイアウトフィルタにより実行されるXPSデータ内のパーツのインタリーブ化処理を示すフローチャートである。 図33のステップS2405におけるインタリーブ化処理の詳細を示すフローチャートである。 図33の説明で用いるインタリーブ化される前のXPSデータの構成例を示す参考図である。 図33の説明で用いるインタリーブ化されたXPSデータの構成例を示す参考図である。 検索効果を説明するための一例を示す参考図である。
符号の説明
1500 プリンタ
1000 コンピュータ
101 CPU
102 RAM
201 アプリケーション
403 スプーラ
407 ランゲージモニタ
410 フィルタパイプラインマネージャ
411 レイアウトフィルタ
412 レンダリングフィルタ

Claims (9)

  1. 文書データの開始点となる開始ファイル、前記文書データの構成情報が記述されたページ構成データのファイル、1ページの描画内容が記述された印刷対象データのファイル、及びリソースファイルがアーカイブされた構造化文書形式のデータを受け取る受取手段と、
    前記受取手段で上位処理から受け取る構造化文書形式のデータを、先頭から検索する第1の検索手段と、
    前記第1の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を記憶する第1の記憶手段と、
    次に処理する印刷対象データのファイルを検索するために、前記第1の検索手段で構造化文書形式のデータを先頭から検索することなく、前記第1の記憶手段に記憶されている配置位置から、前記受取手段で上位処理より受け取る構造化文書形式のデータを検索する第2の検索手段と、
    前記第2の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を更新する更新手段と、
    前記第2の検索手段による検索を、前記印刷対象データのファイルに応じて繰り返す繰返制御手段と、
    前記検索された印刷対象データを解析処理して得られる印刷描画データを出力する出力手段とを備えることを特徴とする印刷制御装置。
  2. 前記構造化文書形式のデータが、処理順に並べられる処理であるインタリーブ化されているか否かを判定する判定手段と、
    前記判定手段でインタリーブ化されていると判定される場合に、前記第2の検索手段は、前記第1の記憶手段に記憶されている配置位置を用いて前記構造化文書形式のデータを検索することを特徴とする請求項1に記載の印刷制御装置。
  3. 前記判定手段でインタリーブ化されていないと判定される場合に、前記第1の検索手段は、前記構造化文書形式のデータを先頭から検索することを特徴とする請求項2に記載の印刷制御装置。
  4. 前記ページ構成データのファイルを検索する第3の検索手段と、
    前記第3の検索手段の検索によって得られるページ構成データのファイルの配置位置を記憶する第2の記憶手段とをさらに備え、
    前記第1の検索手段で、インタリーブ化されていないと判定される場合に検索する前記構造化文書形式のデータの先頭は、前記ページ構成データのファイルの配置位置であることを特徴とする請求項3に記載の印刷制御装置。
  5. 前記第1の検索手段または前記第2の検索手段の検索によって得られる印刷対象データ内で参照するリソースファイルを、前記第2の記憶手段で記憶されるページ構成データのファイルの配置位置を用いて検索する第4の検索手段と、
    前記第4の検索手段の検索によって得られるリソースファイルの配置位置を記憶する第3の記憶手段とを備えることを特徴とする請求項2乃至4のいずれか1項に記載の印刷制御装置。
  6. 前記判定手段でインタリーブ化されていると判定される場合、次のリソースファイルを前記第3の記憶手段で記憶されるリソースファイルの配置位置を用いて検索する第5の検索手段とを備えることを特徴とする請求項5に記載の印刷制御装置。
  7. 前記構造化文書形式のデータをインタリーブ化するか否かを決定する決定手段と、
    前記決定手段で、インタリーブ化すると決定された場合に、前記構造化文書形式のデータをインタリーブ化するインタリーブ化手段とをさらに備え、
    前記受取手段は、前記インタリーブ化手段でインタリーブ化された構造化文書形式のデータを受け取ることを特徴とする請求項2乃至6のいずれか1項に記載の印刷制御装置。
  8. 文書データの開始点となる開始ファイル、前記文書データの構成情報が記述されたページ構成データのファイル、1ページの描画内容が記述された印刷対象データのファイル、及びリソースファイルがアーカイブされた構造化文書形式のデータを受け取る受取工程と、
    前記受取工程で上位処理から受け取る構造化文書形式のデータを、先頭から検索する第1の検索工程と、
    前記第1の検索工程の検索によって得られる前記印刷対象データのファイルの配置位置を記憶する第1の記憶工程と、
    次に処理する印刷対象データのファイルを検索するために、前記第1の検索工程で構造化文書形式のデータを先頭から検索することなく、前記第1の記憶工程で記憶された配置位置から、前記受取工程で上位処理より受け取る構造化文書形式のデータを検索する第2の検索工程と、
    前記第2の検索工程の検索によって得られる前記印刷対象データのファイルの配置位置を更新する更新工程と、
    前記第2の検索工程による検索を、前記印刷対象データのファイルに応じて繰り返す繰返制御工程と、
    前記検索された印刷対象データを解析処理して得られる印刷描画データを出力する出力工程とを備えることを特徴とする印刷制御装置の印刷制御方法。
  9. 印刷制御装置を、文書データの開始点となる開始ファイル、前記文書データの構成情報が記述されたページ構成データのファイル、1ページの描画内容が記述された印刷対象データのファイル、及びリソースファイルがアーカイブされた構造化文書形式のデータを受け取る受取手段と、
    前記受取手段で上位処理から受け取る構造化文書形式のデータを、先頭から検索する第1の検索手段と、
    前記第1の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を記憶する第1の記憶手段と、
    次に処理する印刷対象データのファイルを検索するために、前記第1の検索手段で構造化文書形式のデータを先頭から検索することなく、前記第1の記憶手段に記憶されている配置位置から、前記受取手段で上位処理より受け取る構造化文書形式のデータを検索する第2の検索手段と、
    前記第2の検索手段の検索によって得られる前記印刷対象データのファイルの配置位置を更新する更新手段と、
    前記第2の検索手段による検索を、前記印刷対象データのファイルに応じて繰り返す繰返制御手段と、
    前記検索された印刷対象データを解析処理して得られる印刷描画データを出力する出力手段として機能させることを特徴とするプログラム。
JP2008315612A 2007-12-11 2008-12-11 印刷制御装置及び印刷制御方法、並びにプログラム Expired - Fee Related JP4619433B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008315612A JP4619433B2 (ja) 2007-12-11 2008-12-11 印刷制御装置及び印刷制御方法、並びにプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007320072 2007-12-11
JP2008315612A JP4619433B2 (ja) 2007-12-11 2008-12-11 印刷制御装置及び印刷制御方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2009163727A JP2009163727A (ja) 2009-07-23
JP4619433B2 true JP4619433B2 (ja) 2011-01-26

Family

ID=40966223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008315612A Expired - Fee Related JP4619433B2 (ja) 2007-12-11 2008-12-11 印刷制御装置及び印刷制御方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP4619433B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5152243B2 (ja) 2010-03-31 2013-02-27 ブラザー工業株式会社 印刷プログラム、印刷制御装置、及び印刷設定情報のデータ構造
JP7337578B2 (ja) * 2019-07-24 2023-09-04 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348498A (ja) * 2003-05-23 2004-12-09 Kyocera Mita Corp 電子文書印刷システム
JP2007144794A (ja) * 2005-11-28 2007-06-14 Murata Mach Ltd 画像形成装置
JP2007272763A (ja) * 2006-03-31 2007-10-18 Canon Inc モジュールインストール方法及び装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348498A (ja) * 2003-05-23 2004-12-09 Kyocera Mita Corp 電子文書印刷システム
JP2007144794A (ja) * 2005-11-28 2007-06-14 Murata Mach Ltd 画像形成装置
JP2007272763A (ja) * 2006-03-31 2007-10-18 Canon Inc モジュールインストール方法及び装置

Also Published As

Publication number Publication date
JP2009163727A (ja) 2009-07-23

Similar Documents

Publication Publication Date Title
JP4619399B2 (ja) 情報処理装置及び処理方法、並びにプログラム
KR100937785B1 (ko) 인쇄 잡의 검색 기능을 포함하는 정보 처리 장치, 정보처리 방법, 및 기록 매체
JP3970137B2 (ja) 文書処理方法及びその装置
JP4756870B2 (ja) 文書処理装置及び文書処理方法並びにプログラム
US7295336B2 (en) Document-management printing system having a displaying unit, and its control method
JP5127232B2 (ja) データ処理装置、データ処理方法、及びコンピュータプログラム
JP4799460B2 (ja) 印刷制御装置及び方法
US20040111675A1 (en) Document processing apparatus and method
JP4059488B2 (ja) 文書処理方法および装置
JP5252933B2 (ja) 文書処理装置、文書処理方法、及びプログラム
CN102033723A (zh) 信息处理装置及其方法
US20110109930A1 (en) Printing control apparatus and method
JP4619433B2 (ja) 印刷制御装置及び印刷制御方法、並びにプログラム
JP4183557B2 (ja) 電子文書印刷システム
JP4439864B2 (ja) 文書処理装置および文書処理方法およびプログラム
JP2002229976A (ja) 情報処理装置及びその方法、コンピュータ可読メモリ、プログラム
JP4078292B2 (ja) 情報処理装置、情報処理方法およびプログラム並びにコンピュータ読み取り可能な記憶媒体
JP2008262405A (ja) 文書処理システム
JP5882850B2 (ja) 文書処理装置、文書処理方法及びプログラム
JP5106655B2 (ja) 印刷制御装置及び方法
JP6230281B2 (ja) 画像処理装置、制御方法、プログラム
JP2004334287A (ja) 電子文書印刷装置
JP5063785B2 (ja) 文書処理装置、文書処理方法及びプログラム
JP2006146314A (ja) セキュリティ設定付ファイルの作成方法
JP2006139561A (ja) 文書処理方法及びそのシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101013

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101026

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4619433

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141105

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees