(57)【要約】【課題】  描画済オブジェクトを消去する際に、当該オブジェクトを再生成（描画）するための難易度に関係なく、ファイルサイズやタイムスタンプなどに基づいて削除されており、次に描画が難しいオブジェクトを使用する際に、描画余計な時間がかかってしまっていた。【解決手段】  描画済オブジェクトと、難易度（コスト）を対応させて記憶させておき、削除する必要が生じた際には、難易度（コスト）が低いものから削除することで、再生成する難易度が高いオブジェクトが削除されてしまうことが抑制できる。【選択図】  図３
2009026205.tif 000002
【特許請求の範囲】
【請求項１】
描画するオブジェクトを記述するための第1の記述手段と
前記第1の記述手段を保持することができる第1の記憶手段と
前記第1の記述手段を描画することで前記オブジェクトを生成する第1の描画手段と
前記第1の描画手段によって前記第1の記述手段から前記描画されたオブジェクトを生成するために必要な資源量を計測ないし見積もる計測手段と
前記第1の描画手段によって描画されたオブジェクトを、前記計測手段で計測ないし見積もった描画に必要な資源量情報とともに保持することができる第2の記憶手段と
前記第1の記述手段を描画する際に、まず前記第2の記憶手段に前記第1の記述手段の描画結果である描画済のオブジェクトが存在しているならば描画結果として当前記オブジェクトを使用する一方、存在していなければ前記第1の描画手段を用いて描画を行ってオブジェクトを生成する描画管理手段を具有したソフトウェアアプリケーションであって
前記第2の記憶手段に、前記オブジェクトを格納するために十分な余裕がない場合に、前記第2の記憶手段に格納されているオブジェクトのうち、描画に必要な資源量の小さいものから順に削除していくことで、前記オブジェクトを前記第2の記憶手段に格納することを可能とすることを特徴とする、ソフトウェアアプリケーション。
【請求項２】
前記描画管理手段が前記第1の描画手段で第1の記述手段を描画してオブジェクトを生成した場合であって、かつ前記計測手段の結果が所定の条件を満たした場合のみ、前記第2の記憶手段に前記オブジェクトの保存を行なうことを特徴とする、請求項１記載のソフトウェアアプリケーション。
【請求項３】
前記オブジェクトが一定の条件を充たした場合には、前記オブジェクトのかわりに前記第1の記述手段を第2の記憶手段に登録することを特徴とする、請求項１乃至請求項２記載の、ソフトウェアアプリケーション。
【請求項４】
描画するオブジェクトを記述するための第1の記述手段と
前記第1の記述手段を保持することができる第1の記憶手段と
前記第1の記述手段を描画することで前記オブジェクトを生成する第1の描画手段と
前記第1の描画手段によって前記第1の記述手段から前記描画されたオブジェクトを生成するために必要な資源量を計測ないし見積もる計測手段と
前記第1の描画手段によって描画されたオブジェクトを、前記計測手段で計測ないし見積もった描画に必要な資源量情報とともに保持することができる第2の記憶手段と
前記第1の記述手段を描画する際に、まず前記第2の記憶手段に前記第1の記述手段の描画結果である描画済のオブジェクトが存在しているならば描画結果として当該オブジェクトを使用する一方、存在していなければ前記第1の描画手段を用いて描画を行ってオブジェクトを生成する描画管理手段を具有したソフトウェアアプリケーションであって
前記第2の記憶手段に、前記オブジェクトを格納するために十分な余裕がない場合に、前記第2の記憶手段に格納されているオブジェクトのうち、描画に必要な資源量の小さいものから順に削除していくことで、前記オブジェクトを前記第2の記憶手段に格納することを可能とすることを特徴とする、印刷システム。
【請求項５】
前記描画管理手段が前記第1の描画手段で第1の記述手段を描画してオブジェクトを生成した場合であって、かつ前記計測手段の結果が所定の条件を満たした場合のみ、前記第2の記憶手段に前記オブジェクトの保存を行なうことを特徴とする、請求項４記載の印刷システム。
【請求項６】
前記オブジェクトが一定の条件を充たした場合には、前記オブジェクトのかわりに前記第1の記述手段を第2の記憶手段に登録することを特徴とする、請求項４乃至請求項５記載の、印刷システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、PPMLのような、少なくとも、描画結果イメージをページ上への配置を指定する配置指定手段と、配置された描画結果を保持しておくことを指示する保持指定手段とを具有したページ記述手段を用いて、印刷を効率よく行なうためのソフトウェア、ないし印刷システムに関する。
【背景技術】
【０００２】
電子写真技術の進化によって、オフセット印刷など従来の印刷技術で必要であった製版なしに、従来の印刷に迫る画質での印刷が可能となっている。と同時に、従来の印刷技術の元では考えられなかった用途・アイデアが生まれている。その代表的な例が、顧客の好み情報などに応じてきめ細かく内容を制御し、顧客の名前といった個人情報をも印刷物に刷り込んだ、個々人向けに調整されたダイレクトメイル（Personalized Direct Mail、以下PDM）である。図1にPDMの例を示す。
【０００３】
図1は、5つのパーツからなる、旅行会社のPDMである。CUSTOMERは顧客名、COMPANYは旅行会社の名前、TITLEはDMのタイトル、TOUR1とTOUR2はツアーの宣伝部分である。
【０００４】
旅行会社は、顧客各々の嗜好に適合したツアー、即ち、より申し込まれる可能性の高いツアーの宣伝の組み合わせを顧客データベースなどを用いて決定、ツアーの組み合わせを顧客毎に最適化したPDMを印刷することが出来る。
【０００５】
しかし、電子写真技術を用いて図1のごときPDMを印刷する処理を考えると、版を顧客各々に関して作る必要こそないが、顧客各々向けに調整された印刷文書を全ての顧客分用意する必要があり、ワードプロセッサなどを用いて文書を作成するコストが、依然として高かった。
【０００６】
即ち、こういった組み合わせを簡便に表現できるような表現方法が存在すれば、使いまわす商品情報などは共有し、印刷文書からはそれを参照して紙面に配置するように記述することで、印刷文書の作成作業を効率よく行うことができる。
【０００７】
更にPDMの場合、印刷文書は、商品情報など使いまわすことが可能なオブジェクトと、顧客名など毎回変化するオブジェクトの組み合わせで表現されることが多いが、従来技術では、描画エンジンが一旦描画した商品情報を保存・再利用する指定方法がなく、結局のところ、顧客各々のPDMごとに、同じ商品情報の描画を描画エンジンが繰り返していた。
【０００８】
ここで、何回も使用される商品情報のようなオブジェクトの描画結果を使いまわすように指定できれば、ある顧客のPDMを印刷するにあたって、描画エンジンは顧客固有の情報のみ顧客毎に描画し、それ以外の商品情報などは、すでに保存されている描画済の商品情報を組み合わせてPDMのページを構成することで、描画エンジンに要求される処理を減らすことができる。
【０００９】
即ち、図1のPDMの印刷処理においては、COMPANY、TITLE、TOUR1、TOUR2は前もって描画処理を行って保存しておき、顧客毎に描画するCUSTOMER部分を組み合わせてPDM紙面を構成することで、描画処理にかかる時間を削減できる。
【００１０】
上記のごとき要求を満たす技術の一つがPPML（Personalized Print Markup Language）である。
【００１１】
PPMLはXML（eXtensible Markup Language）の一種であって、PODiという組織が主導で仕様を決定され出版されているオープンな規格である。
【００１２】
PPMLは、ページ上にオブジェクトを配置するための領域を定義した上で、当該領域にPostscript（登録商標）（以下PS）やPortable Document Format（以下PDF）、JPEGなどで与えられたオブジェクトを描画して、ページ上の所定の位置に配置するといった指示を、非常に簡単に記述できる。
【００１３】
つまり、PSやPDFやJPEGは紙面に配置されるオブジェクトを描画するが、PPMLはそのオブジェクトの配置を制御してPDM等に仕上げる。即ち、描画エンジンによってPS、PDF、JPEGなどのオブジェクトが描画され、それらを紙面に配置する配置エンジンをPPMLが制御する、という構造になっている。
【００１４】
その中でPPMLでは、使いまわされるオブジェクトに名前を定義し、名前を定義したオブジェクトに関しては、以降その名前でオブジェクトを参照する仕様（Reusable Object、再利用オブジェクト）を備えている。この仕様は、使いまわされるオブジェクトの描画を予め済ませておくことで、描画エンジンが同じオブジェクトを何度も再描画しないようにするために導入されている。
【００１５】
更にPPMLには、ある印刷ジョブで定義し名前をつけたオブジェクトを別の印刷ジョブから参照するように、当該オブジェクトを定義する仕様（Global Reusable Object、大域再利用オブジェクト）も具有している。
【００１６】
図2に、図1で示したPDMを生成するためのPPMLのソースを示す。ここで、本ソースコードは、説明の理解を助けるためのものであるので、意識的に必須のアトリビュートを省いてある。即ち、PPMLの仕様を完全に充たしているわけではないことに注意する。
【００１７】
図2のPPMLソースコードでは、3人の顧客に対してのPDMを記述している。
【００１８】
図2中(1)は、図1におけるTITLE部分に配置される画像を定義しており、title.psというPostscript（図２ではＰＳ、Postscriptは登録商標）で記述された再利用オブジェクトに、TITLEという名前をつけている。
【００１９】
図2中(2)は、図1におけるCOMPANY部分に配置される画像を定義しており、company.psというPostscript（図２ではＰＳ、Postscriptは登録商標）で記述された再利用オブジェクトに、COMPANYという名前をつけている。図2(1)と同様のアトリビュート以外に、ScopeとEnvironmentというアトリビュートも使用することで再利用オブジェクトCOMPANYを大域再利用オブジェクトとしているが、本特許には関係ない概念なので、説明は省略する。
【００２０】
図2中(3)は、図1におけるTOUR1、TOUR2に配置される再利用オブジェクトを定義しており、サッカー、野球、ラグビーに関して、各々SOCCOR、BASEBALL、RUGBYという名前を付けている。
【００２１】
図2中(4)は、suzuki様向けのPDMを実際に構成している。
【００２２】
まず、PAGEエレメントのDimensionで、紙面のサイズを規定している。本例の場合、紙面のサイズは、横792ポイント、縦612ポイントである。紙面の座標は左下が基準点となり、単位はポイント、横方向は右にプラス、縦方向は上にプラスとなる。
【００２３】
次に、顧客名CUSTOMERがページ上に配置されている。
【００２４】
具体的には、顧客名を表すオブジェクトを、左下が（50, 500）になるようにMARKエレメントを用いて指定されている。
【００２５】
オブジェクトは、OBJECTエレメントで指定する。実際に描画されるブジェクトは、SOURCEエレメントで指定する。
【００２６】
SOURCEエレメントでは、オブジェクトを記述しているデータのフォーマットを指定する。本例の場合、オブジェクトはPostscript（図２ではＰＳ、Postscriptは登録商標）で記述されていることがわかる。Postscript（図２ではＰＳ、Postscriptは登録商標）で記述されたデータ自体は、後述するEXTERNAL_DATAエレメントで指定する。
【００２７】
EXTERNAL_DATAエレメントのSrcで、実際のオブジェクトとしてsuzuki.psというファイルを指定している。
【００２８】
以上のごときPPMLのエレメント構成により、CUSTOMERにあたるsuzuki.psはPPML Interpreterから呼び出されたPostscript（Postscriptは登録商標） Interpreterで処理され、画素情報に展開され、MARKエレメントで指定された位置（50, 500）が左下に位置するように配置される。
【００２９】
なお、ここで説明したsuzuki.psに対応する描画結果は、一般に顧客毎に異なるものであるため、再利用できない。こういったオブジェクトを、再利用オブジェクトに対応させて可変オブジェクト（Variable Object）と呼ぶ場合がある。
【００３０】
次のMARKエレメントで、大域再利用オブジェクトとして定義済の、会社名COMPANYがページ上に配置されている。具体的には、COMPANY部分の左下が、ページ上（300, 500）に位置するように配置される。
【００３１】
同様に、再利用オブジェクトとして定義済のDMのタイトルTITLEが、ページ上（50, 50）に左下部分が位置するように配置されるとともに、2つのツアー（この場合はSOCCORとBASEBALL）が、それぞれ（300, 275）（300, 50）に配置されている。
【００３２】
図2のPPMLソースコードでは、以下、suzuki様向けのPDMと酷似した手続きで、yamada様とtanaka様に関するPDMを構成している。
【００３３】
ここで、顧客名CUSTOMER以外のオブジェクトは、図2(1)〜(3)で定義したCOMPANY、TITLE、SOCCOR、BASEBALL、RUGBYを使いまわしていることに注意する。
【００３４】
図2においては、suzuki様、yamada様、tanaka様の3名の顧客向けのPDMを生成するPPMLデータを記載したが、実際のPDMにおいては何万何十万という顧客向けのPDMを印刷するのが通常である。
【００３５】
従って、COMPANY、TITLE、SOCCOR、BASEBALL、RUGBYといった、複数の顧客の間で使いまわすオブジェクトに関しては、一旦描画した結果を保存しておき、再度利用する際には再描画せずに保持しておいた描画結果を使用するといった、いわゆるキャッシュ機能を具有し、描画結果を記憶領域に保持して再利用することが望ましい。
【００３６】
即ち、PPMLソースコードにおける図2(1)〜(3)のごとき大域再利用オブジェクト、再利用オブジェクトの記述方法も、当該オブジェクトの描画結果を後に再利用できるようにキャッシュしておくことを念頭に置いた仕様なのである。
【００３７】
更に、カンパニーロゴCOMPANYに関しては、別の印刷ジョブにおいても使用される可能性があるため、大域再利用オブジェクトとして定義されている。PPMLの場合、ScopeをGlobalと定義し、Environmentを別に与えることで、当該Environmentを指定した別の印刷ジョブにおいても当該カンパニーロゴを使用できるような、大域再利用オブジェクトとすることが可能である。図2においては、Environmentの値として、文字列"A"が指定されている。
【００３８】
一方、従来の印刷システムにおけるキャッシュシステムには、文字を構成するストロークの数によって、描画された（ビットマップ化された）字面データを、一時的に保存しておくか否かを決定するフォント描画装置がある（例えば、特許文献1参照）。
【００３９】
前記特許は、フォントの描画のごとき、ストロークで構成された輪郭を生成した後、当該輪郭で囲まれた領域をパターンで塗りつぶす、といった、ストロークの数と、フォントの描画にまつわり必要となる、各種リソースやコストの予測がつきやすい場合に有効な技術である。
【特許文献１】特開平02-064599号公報（第4頁、図2）
【発明の開示】
【発明が解決しようとする課題】
【００４０】
しかしながら、描画処理が非常に軽いオブジェクトに対してReusableと宣言されているがために、再描画にかかるコストが非常に高いオブジェクトが削除されてしまうなどして、かえって遅くなる場合があった。
【００４１】
特開平02-064599号公報による技術は、既述のように、描画のために必要なリソースやコストの予測がつきやすい場合に有効であったが、一般にフォントの描画機能を包含しているPostscript（Postscriptは登録商標）インタプリタにおいては、処理系が消費するリソースが非常に大きくなってしまい、ストロークの数をベースとした比較的単純な見積もり計算では、必ずしも実際のリソース消費等のコストに関して、十分に正しい見積もりはできない。
【００４２】
更に、既にキャッシュされている描画済のフォントをキャッシュから削除するなどといったキャッシュ管理において、見積もられたコストを有効に活用する手段がなかった。
【００４３】
そこで本発明の目的は、描画済オブジェクトと、難易度（コスト）を対応させて記憶させておき、削除する必要が生じた際には、難易度（コスト）が低いものから削除することで、再生成する難易度が高いオブジェクトが削除されてしまうことが抑制することにある。
【課題を解決するための手段】
【００４４】
上記目的を達成するために、
描画するオブジェクトを記述するための第1の記述手段と
前記第1の記述手段を保持することができる第1の記憶手段と
前記第1の記述手段を描画することで前記オブジェクトを生成する第1の描画手段と
前記第1の描画手段によって前記第1の記述手段から前記描画されたオブジェクトを生成するために必要な資源量を計測ないし見積もる計測手段と
前記第1の描画手段によって描画されたオブジェクトを、前記計測手段で計測ないし見積もった描画に必要な資源量情報とともに保持することができる第2の記憶手段と
前記第1の記述手段を描画する際に、まず前記第2の記憶手段に前記第1の記述手段の描画結果である描画済のオブジェクトが存在しているならば描画結果として当該オブジェクトを使用する一方、存在していなければ前記第1の描画手段を用いて描画を行ってオブジェクトを生成する描画管理手段を具有したソフトウェアアプリケーションであって
前記第2の記憶手段に、前記オブジェクトを格納するために十分な余裕がない場合に、前記第2の記憶手段に格納されているオブジェクトのうち、描画に必要な資源量の小さいものから順に削除していくことで、前記オブジェクトを前記第2の記憶手段に格納することを可能とすることを特徴とする、ソフトウェアアプリケーション、ないし印刷システムを提供することにある。
【発明の効果】
【００４５】
本発明によって、PPMLなどで記述された印刷文書に含まれているオブジェクトの描画に関しての最適化が可能となり、効率よい印刷の実行が可能となる。
【発明を実施するための最良の形態】
【００４６】
以下、本発明の発明を実施するための最良の形態について図面を用いて説明する。
【００４７】
図３は、本実施例の説明で用いるシステム構成である。
【００４８】
PCとは、いわゆるPC互換機や、後述プリンタPRNに対して、本実施例における第1の記述手段であるPPMLで記述された印刷ジョブを発行するホストマシンであり、少なくとも印刷対象のPPMLソースコードであるPPMLJとPPMLJが参照している複数の描画オブジェクトソースSOBJを保持するための記憶領域PCSTが接続されている。
【００４９】
図2で示したPPMLソースコードの場合、PPMLJは図2のソースコードそのもの、イメージソースSOBJとしてcompany.ps, title.ps, soccor.ps, baseball.ps, rugby.psが該当する。
【００５０】
PRNは印刷装置であり、前述PCよりPPMLJとSOBJを受け取って実際の印刷を行う。受け取り手順やネットワークプロトコルに関しては、本実施例では詳細しない。
【００５１】
なお、PRN自体が、印刷サービスを行うサーバPCと印刷装置の組み合わせであってもよいが、本実施例ではPRNは単一の筐体として記載している。
【００５２】
PRNには、少なくとも後述する記憶領域PRNSTと、PRNが読み取り可能な時計CLOCKが接続ないし内蔵されている。
【００５３】
PRNSTは、PCから送付された印刷ジョブPPMLJを印刷するにあたって必要な各種情報を格納する記憶領域であり、少なくともPCより送付されたPPMLJを解釈した結果が格納されるINST、再利用オブジェクトの管理を行うデータベースDB、イメージソースを保持管理するためのソース記憶領域SSPACE、イメージソースを解釈して描画した結果のイメージオブジェクトROBJを保持管理するための再利用オブジェクト記憶領域RSPACE、RSPACEのサイズを示すRMAX、RSPACEの空き領域サイズを示すRCUR、ROBJのサイズを示すRSIZ、ROBJを描画するために必要なコストCOST、印刷されるページの画素データを保持するページ領域PAGE、PAGEを構成するパーツを展開するためのバッファ領域WORK、CLOCKから読み出した時間を記憶する領域STARTを含んでいる。INST、DBに関しては後述する。
【００５４】
図4は、前述PRNST上に存在しているINSTの一構成例であり、少なくともOP、NAME、FILEの3つの属性値を管理できる。
【００５５】
OPは処理の内容を示す。本実施例においては、OPとして、少なくとも、再利用オブジェクトの定義を示す「DEF」、再利用オブジェクトの参照を示す「REF」を格納可能である。
【００５６】
NAMEは、PPMLにおいて何度も再利用されるようなオブジェクトである再利用オブジェクトを定義する際に、OCCURRENCEエレメントのLabel属性で指定される、再利用オブジェクトの名前である。
【００５７】
FILEは、OPがDEFの場合にのみ、NAMEで指定した再利用オブジェクトの元データのファイル名が格納される。
【００５８】
図5は、前途PRNST上に存在している、データベースDBの一構成例である。
【００５９】
DBは、本実施例においては、少なくともNAME、SRC、PROCESSED、FLAG、COSTという5つの情報を組にして再利用オブジェクトを管理できるデータベースである。
【００６０】
NAMEは再利用オブジェクトの名前であり、INSTで説明したNAMEの値が格納される。
【００６１】
SRCはNAMEに対応した描画オブジェクトソースであり、INSTにおけるFILEで指定したSOBJを特定するための情報が格納される。PRNST上のSOBJの置き場によっては、INSTにおけるFILEと異なるファイル情報が格納される場合があるが、ここでは詳説しない。
【００６２】
PROCESSEDはROBJないしSOBJを指し示す情報であり、FLAGの値によってROBJを指し示している情報か、SOBJを指し示している情報かが定まる。
【００６３】
FLAGは「DONE」ないし「YET」のいずれかの値をとる。「DONE」の場合はPROCESSEDが指し示すデータはROBJであり、「YET」の場合はSOBJであることを示している。
【００６４】
即ち、ある再利用オブジェクトに関してFLAGの値が「DONE」であるということは、PAGEに配置するために描画処理を行なわずに配置できることを示しており、一方「YET」ということは、当該再利用オブジェクトをページに配置する際には、毎回描画処理が行われることを意味している。
【００６５】
図6〜図7は、図3〜図5のシステム構成において本実施例を説明するための処理フローである。
【００６６】
図6のS-1は、第1の記述手段処理装置の初期化ステップである。本ステップにおいて入出力等の初期化等が行われる。詳説は省略する。
【００６７】
S-2において、PRNは、PCから送付されてきたPPMLJを解釈し、処理の分類と処理に必要な情報を抽出、INSTに格納する。同時に、PPMLJが参照している全てのSOBJをPCから受け取る。
【００６８】
S-3において、INST上に未処理の処理単位が残っているかがチェックする。処理単位がINSTに残っていればS-4に、残っていなければ終了する。
【００６９】
S-4において、S-2で解釈した処理単位を順次取り出してS-5に遷移する。
【００７０】
S-5において、S-4で取り出された処理単位に含まれるOPが「DEF」であるかチェックされる。「DEF」であればS-13に、「DEF」以外ならばS-6に遷移する。
【００７１】
S-6において、S-4で取り出された処理単位に含まれるOPが「REF」であるかチェックされる。「REF」であればS-8に、そうでなければS-7に遷移する。
【００７２】
S-7において、S-4で取り出された処理単位のOPが「DEF」でも「REF」のいずれでもない場合の、「それ以外」の処理を行なった後、S-3に戻る。
【００７３】
「それ以外」の処理としては、図2における(4)部分の2行目〜4行目のような、毎回変化するような可変データの描画・配置処理や、PAGEに格納されたページをプリンタから出力する処理などを含むが、本実施例においては詳説しない。
【００７４】
S-8〜S-12において、S-4で着目したINSTのOPが「REF」である場合の処理を行なう。
【００７５】
まずS-8において、着目しているINSTのNAMEを用いてDBを検索する。
【００７６】
続いてS-9において、検索結果のレコードのFLAGの値をチェックする。FLAGが「DONE」の場合はS-10に、そうではない場合はS-11に遷移する。
【００７７】
S-10において、DBの検索結果のPRCESSEDで示されたファイルをROBJと認識してWORKに読み込んだ後、S-12に遷移する。
【００７８】
一方、S-11においては、DBの検索結果のPPROCESSEDで示されたファイルはSOBJであると認識して描画処理を行なう。
【００７９】
描画の結果は一旦WORK上に作成させられた後、S-12に遷移する。
【００８０】
S-12において、WORKに格納されたROBJをPAGEに配置した後、S3に戻る。
【００８１】
一方、S-5においてINSTのOPが「DEF」の場合、S-13において再利用オブジェクト分類処理が行なわれた後、S-3に戻り、次の処理単位の処理を行なう。再利用オブジェクト分類処理の詳細は、後述する。
【００８２】
更に、S-3においてINST上に処理対象の処理項目が残っていない場合、処理を終了する。
【００８３】
図7は、図6中のS-13で示した、再利用オブジェクト登録処理の詳細を説明するフローである。
【００８４】
S-14において、SOBJをSSPACEに保存した後、S-15に遷移する。
【００８５】
S-15において、DBにSOBJに対するレコードを作ってS-16に遷移する。レコード作成の際には、SRC、PROCESSEDともに、SOBJをセットし、FLAGには「YET」をセットする。
【００８６】
S-16において、CLOCKの値を読み込みSTARTに格納した後、S-17に遷移する。
【００８７】
S-17において、SRCで指定されたSOBJをWORKに描画しROBJを得た後、S-18に遷移する。
【００８８】
このとき、RSIZにはWORKに格納されたROBJのサイズが格納される。なお、描画処理の詳細はここでは省略する。
【００８９】
S-18において、CLOCKの値とSTARTに格納した時間情報とから、S-17でROBJ描画に費やした時間を計算し、COSTに格納した後、S-19に遷移する。
【００９０】
S-19において、そもそもRSPACEに、いまWORK上に描画したROBJを格納することが可能なのかをチェックする。具体的には、RSPACEよりもROBJが小さい場合にのみS-20に遷移し、それ以外の場合は、再利用オブジェクト登録処理を終了するとする。
【００９１】
S-20において、今度は、RSPACE上にROBJを格納するだけの余裕が残されているかを調べ、余裕があるならS-26に、余裕がないならS-21に遷移する。
【００９２】
S-21からS-25は、RSPACE上にROBJを格納するだけの余裕がない場合の処理である。
【００９３】
S-21において、まずDB.FLAGが「DONE」であって、かつDB.COSTの値が最小のものを取り出し、S-22に遷移する。取り出されたレコードは、以降MINとする。
【００９４】
S-22において、S-18で計算したCOSTと、S-21で検索したMINのレコードに含まれるCOSTとを比較し、MIN.COSTの方が小さいならS-23に遷移し、そうでないなら、再利用オブジェクト登録処理を終了する。
【００９５】
S-23において、MIN.PROCESSEDで示されるファイルのサイズ分だけ、RSPACEの現在使用量であるRCURを減らし、S-24に遷移する。
【００９６】
S-24において、MIN.PROCESSEDで示されるファイルをRSPACEから削除し、S-25に遷移する。
【００９７】
S-25において、MIN.SRCの値をMIN.PROCESSEDに格納するとともに、MIN.FLAGに「YET」を格納して、S-20に戻る。
【００９８】
S-26からS-28は、RSPACE上にROBJを格納するだけの余裕があった場合の処理である。
【００９９】
S-26において、ROBJをRSPACEに保存し、S-27に遷移する。
【０１００】
S-27において、DB.PROCESSEDに、RSPACEに格納されたROBJを、DB.FLAGに「DONE」を、DB.COSTにCOSTの値を登録してS-28に遷移する。
【０１０１】
S-28において、ROBJのサイズRSIZが、RSPACEの現在使用量であるRCURに足しこまれて、再利用オブジェクト登録処理が終了する。
【０１０２】
以下、図8〜図32を用いて、詳細に説明する。
【０１０３】
図8は、本実施例を詳細に説明するためのPRNSTとCLOCKの構成例である。
【０１０４】
INSTとDBは、本実施例の説明に必要な属性のみ示してある。RSPACE、SSPACE、WORK、PAGE、RSIZ、RCUR、RMAX、COST、STARTは、図3上の同名のものに対応している。なお、CLOCKは、PRN起動から経過した時間を表しているとする。
【０１０５】
OBJsは、PPMLJが参照しているSOBJが格納される領域である。
【０１０６】
PRNSTは、RAMのような半導体メモリでもよいし、HDDのような外部記憶装置でも良い。また、たとえばOBJsのみHDDで他はRAMといった、ハイブリッドな構成でもよい。
【０１０７】
図9に示したPPMLJを処理するために、S-1の初期化が終了すると、図10の状態になる。
【０１０８】
INST、DB、START、WORK、PAGE、SSPACE、RSPACE、OBJsともに空で初期化されている。RMAXは12000となっており、本実施例では、RSPACEのサイズは12000単位となっていることが判る。現状、RSPACEは空であるので、RCURは0単位となっている。
【０１０９】
図10の状態から、S-2において図9に示したPPMLJが解釈され、INSTに解釈結果が格納される。同時に、該PPMLソースコードが参照している4つのPSファイルがOBJsに読み込まれて図11の状態になる。INSTの右脇に置かれている三角は、S-4で次に取り出される（着目する）処理単位を指し示している。
【０１１０】
図11の状態から、S-3で上述三角がINST上を指し示しているので、S-4において上述三角が指し示している処理単位が決まる。
【０１１１】
ついで、S-5においてOPがチェックされ、それが「DEF」であるためにS-13に遷移した状態が図12である。
【０１１２】
図12の状態から、図7のS-14、S-15、S-16で、DBに着目している処理単位であるEASY_HUGEのためのレコードを作り、STARTにCLOCKの値をセットして、図13の状態になる。SOBJはeasy_huge.psである。
【０１１３】
図13の状態から、S-17でeasy_huge.psの描画を行ない、結果であるROBJをWORKに格納するとともに、描画結果のサイズをRSIZに格納する。
【０１１４】
引き続きS-18において、COSTがCLOCKとSTARTから計算されて、図14の状態になる。
【０１１５】
図14の状態から、S-19において、RSIZとRMAXが比較され、この場合、RSIZ=15000>12000=RMAXであるから、そのまま再利用オブジェクト登録処理を終了して図6のフローに戻る。
【０１１６】
次に、S-3に戻ってINSTに処理対象の処理単位が残っているかチェック、残っているのでS-4に進んだ状態が図15である。処理単位は、INST上2行目（「EASY_SMALL」の「DEF」）に移っている。
【０１１７】
図15の状態から、S-5でOPがチェックされ、それが「DEF」であるためS-13に遷移する。
【０１１８】
ついで、図7のS-14、S-15、S-16を経て、DB上にEASY_SMALLのためのレコードを作り、STARTにCLOCKの値をセットする。
【０１１９】
その後で、S-17でeasy_small.psの描画が行なわれてWORK上にROBJが描画され、RSIZには描画結果のサイズが格納されてる。
【０１２０】
そして、S-18において、COSTが算出されて図16の状態になる。
【０１２１】
図16の状態から、S-19において、RSIZとRMAXが比較される。今回は、RMAX=12000>1000=RSIZであるから、S-20に遷移する。
【０１２２】
S-20において、RSPACEにWORKに格納されたeasy_small.psのROBJが格納可能かチェックされ、この場合は、RMAX=12000>0+1000=RCUR+RSIZであるからRSPACEにROBJを格納可能であるので、S-26に遷移する。
【０１２３】
S-26において、WORKに格納されていたeasy_small.psのROBJはRSPACEに格納される。
【０１２４】
ついで、S-27においてDBの該当レコードのPROCESSEDにはROBJが、DB.FLAGには「DONE」が、DB.COSTにはCOSTの値がセットされる。
【０１２５】
そして、S-28においてRSPACEの現在使用量RCURが更新されて、再利用オブジェクト登録処理を終了する。
【０１２６】
その後でS-3に戻り、INSTに残りがあるのでS-4に進んだ状態が図17である。
【０１２７】
図17の状態から、S-5でOPがチェックされ、それが「DEF」であるため、再度S-13に遷移する。
【０１２８】
EASY_SMALLの場合同様に、図7のS-14、S-15、S-16を経た後にS-17でeasy_big.psの描画が行なわれてROBJがWORKに格納され、S-18において、COSTが算出されて図18の状態になる。
【０１２９】
図18の状態から、S-19において、RSIZとRMAXが比較され、今回もRMAX=12000>7000=RSIZであるから、S-20に遷移する。
【０１３０】
S-20において、RSPACEにeasy_big.psのROBJが格納可能かチェックされ、この場合も、RMAX=12000>8000=1000+7000=RCUR+RSIZであるから、RSPACEにROBJの格納が可能であるので、S-26に遷移する。
【０１３１】
S-26において、WORKに格納されていたeasy_big.psのROBJはRSPACEに格納される。
【０１３２】
ついでS-27においてDBの該当レコードのPROCESSEDにはROBJが、DB.FLAGには「DONE」が、DB.COSTにはCOSTの値がセットされる。
【０１３３】
そして、S-28においてRSPACEの現在使用量RCURが更新されて再利用オブジェクト登録処理を終了する。
【０１３４】
その後でS-3に戻り、INSTに残りがあるのでS-4に進み、INSTに処理対象の処理単位が残っているのでS-4に進んだ状態が図19である。
【０１３５】
図19の状態から、S-5でOPがチェックされ、それが「DEF」であるためS-13に遷移する。
【０１３６】
先ほど同様に、図7のS-14、S-15、S-16を経た後にS-17でdifficult_big.psの描画が行なわれてROBJがWORKに格納され、S-18において、COSTが算出されて図20の状態になる。
【０１３７】
図20の状態から、S-19において、RSIZとRMAXが比較され、今回もRMAX=12000>11500=RSIZであるから、S-20に遷移する。
【０１３８】
S-20において、RSPACEに、WORKに格納されているdifficult_big.psのROBJが格納可能かチェックされるが、この場合は、RMAX=12000<8000+11500=RCUR+RSIZであるため、ROBJをこのままではRSPACEに格納できない。従って、S-21に遷移する。
【０１３９】
S-21において、DB上にあるレコードから、FLAG==「DONE」のもののうち、COSTの値がもっとも小さいものを検索し、図21の状態になる。DBのレコードをさしている三角が、検索されたMINレコードであることを示す。
【０１４０】
図21の状態から、S-22において、MIN.COSTとCOSTの値が比較され、MIN.COST=1000<9000=COSTであるからS-23に遷移する。
【０１４１】
S-23において、まず、次のステップS-24で削除される、MIN.PROCESSEDが指し示しているファイルのサイズ分だけ、RCURを調整する。ファイル名から当該ファイルのサイズを獲得する手段は、ここでは特には説明しない。
【０１４２】
続いてS-24において、MIN.PROCESSEDが指し示すファイルをRSPACEから削除する。
【０１４３】
ついでS-25において、MIN.PROCESSEDが指し示すファイルをSOBJとするべくMIN.SRCを格納し、MIN.FLAGの値を「YET」として図22の状態になる。
【０１４４】
図22の状態から、S-20に戻って、再度WORKに格納されているdifficult_big.psのROBJをRSPACEに保存できるだけの余裕がPSPACEに存在しているかを調べるが、今回も、RMAX=12000<7000+11500=RCUR+RSIZであるため、S-21に遷移する。
【０１４５】
S-21において再度DBが検索され、図23の状態になる。
【０１４６】
図23の状態から、S-22によって、MIN.COSTとCOSTの比較がされ、今回もMIN.COST=3000<9000=COSTであるため、S-23に遷移する。
【０１４７】
S-23において、MIN.PROCESSEDが指し示しているファイルeasy_big.bmpのサイズ7000をRCURから減算する。
【０１４８】
ついで、S-24においてRSPACE上のeasy_big.bmpを削除する。
【０１４９】
そして、S-25においてDB上のレコードMINのPROCESSEDとFLAGを更新して、図24の状態となる。
【０１５０】
図24の状態からS-20に戻って、再度WORKに格納されているdifficult_big.psのROBJをRSPACEに保存できるだけの余裕がPSPACEに存在しているかを調べる。
【０１５１】
今回は、RMAX=12000>0+1150=RCUR+RSIZであるので格納可能であることが判り、S-26に遷移する。
【０１５２】
S-26において、WORKに格納されていたdifficult_big.psのROBJはRSPACEに格納される。
【０１５３】
ついで、S-27においてDBの該当レコードのPROCESSEDにはROBJのパス「difficult_big.bmp」が、DB.FLAGには「DONE」が、DB.COSTにはCOSTの値9000単位がセットされた上で、S-28においてRSPACEの現状RCURが更新されて再利用オブジェクト登録処理を終了する。
【０１５４】
その後でS-3に戻り、INSTに残りがあるのでS-4に進んだ状態が図25である。
【０１５５】
図25の状態から、S-5でOPがチェックされ、それが「DEF」でないため、S-6に遷移する。
【０１５６】
次にS-6において再度OPがチェックされ、それが「REF」であるため、S-8に遷移する。
【０１５７】
S-8において、着目しているINST.NAMEの値である「EASY_HUGE」を用いてDBを検索した後、S-9に遷移した状態が図26である。DBの右脇に置かれている三角は、S-8において検索した結果、マッチしたDB上のラインを示している。
【０１５８】
図26の状態から、S-9においてFLAGの値が「YET」であるためにS-11に遷移する。
【０１５９】
次に、S-11において、DB.PROCESSEDのファイルをSOBJと認識して、WORKに対して描画処理を行ない、S-12に遷移する。
【０１６０】
そして、S-12においてWORKに格納された、EASY_HUGEのROBJをPAGEに配置して、図27の状態になる。
【０１６１】
図27の状態から、S-3に戻り、INSTに処理単位が残っているのでS-4に遷移する。
【０１６２】
S-4において次の処理単位が取り出されて、図28の状態になる。
【０１６３】
図28の状態から、OPが「REF」であるため、先ほど同様S-5、S-6、S-8と遷移し、DBを「EASY_SMALL」で検索、当該レコードのFLAGの値が「YET」であるので、S-11でeasy_small.psの描画処理を行なって結果をWORKに格納し、S-12においてPAGEに配置する。
【０１６４】
そして、S-3に戻り、INSTに残りがあるのでS-4に進んだ状態が図29である。
【０１６５】
同様に、図29の状態から、EASY_BIGに関する処理を行なった後にS-4に戻ってきたのが、図30である。
【０１６６】
図30の状態から、S-4で処理単位を取り出してくる。
【０１６７】
今度の処理単位も、同様に「REF」であるので、S-5、S-6を経由してS-8に遷移する。
【０１６８】
S-8において、処理単位のNAME「DIFFICULT_BIG」に対応したレコードをDB上で検索すると、図31の状態になる。
【０１６９】
図31の状態から、S-9においてFLAGをチェックすると、今度は「DONE」であるので、S-10に遷移する。
【０１７０】
S-10において、RSPACEに格納されていたROBJ「difficult_big.bmp」が読み出されてWORKに格納されて、S-12に遷移する。
【０１７１】
S-12において、WORKに格納されたDIFFICULT_BIGのROBJがPAGEに配置されて図32の状態になる。
【０１７２】
図32の状態からS-3に戻り、INSTには処理単位が残っていないので、処理を終了する。
【図面の簡単な説明】
【０１７３】
【図１】個人向けダイレクトメールの紙面の例
【図２】図1で示したダイレクトメールを構成するための、簡略化されたPPMLソースコードの例
【図３】本発明の実施の一形態に係る印刷システムの要部構成を示すブロック図
【図４】本発明の実施の一形態に係る印刷システムの一部を構成するテーブルINSTの詳細
【図５】本発明の実施の一形態に係る印刷システムの一部を構成するテーブルDBの詳細
【図６】本発明の実施の一形態に係る印刷システムの詳細を記述するフローチャート
【図７】本発明の実施の一形態に係る印刷システムの詳細を記述するフローチャート
【図８】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図９】本発明の実施の一形態に係る印刷システムの説明に使用する、簡略化されたPPMLソースコード
【図１０】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１１】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１２】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１３】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１４】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１５】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１６】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１７】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１８】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１９】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２０】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２１】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２２】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２３】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２４】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２５】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２６】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２７】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２８】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図２９】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図３０】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図３１】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図３２】本発明の実施の一形態に係る印刷システムの説明に使用する、印刷システムの内部構造
【図１】
2009026205.tif 000003
【図２】
2009026205.tif 000004
【図３】
2009026205.tif 000005
【図４】
2009026205.tif 000006
【図５】
2009026205.tif 000007
【図６】
2009026205.tif 000008
【図７】
2009026205.tif 000009
【図８】
2009026205.tif 000010
【図９】
2009026205.tif 000011
【図１０】
2009026205.tif 000012
【図１１】
2009026205.tif 000013
【図１２】
2009026205.tif 000014
【図１３】
2009026205.tif 000015
【図１４】
2009026205.tif 000016
【図１５】
2009026205.tif 000017
【図１６】
2009026205.tif 000018
【図１７】
2009026205.tif 000019
【図１８】
2009026205.tif 000020
【図１９】
2009026205.tif 000021
【図２０】
2009026205.tif 000022
【図２１】
2009026205.tif 000023
【図２２】
2009026205.tif 000024
【図２３】
2009026205.tif 000025
【図２４】
2009026205.tif 000026
【図２５】
2009026205.tif 000027
【図２６】
2009026205.tif 000028
【図２７】
2009026205.tif 000029
【図２８】
2009026205.tif 000030
【図２９】
2009026205.tif 000031
【図３０】
2009026205.tif 000032
【図３１】
2009026205.tif 000033
【図３２】
2009026205.tif 000034