(57)【要約】【課題】フィルタ処理にかかるオーバーヘッドタイムを短縮すること。【解決手段】印刷データのフィルタ処理機能を含む複数の機能を有する画像形成装置において、共有メモリ３００は、複数の機能でそれぞれ用いられるデータを記憶する。フィルタアプリ２１５は、印刷データをフィルタ処理する。制御モジュール２１１ｄは、印刷データのデータ容量に基づいて、共有メモリ３００のうち印刷データの記憶用に割り当てる領域を決定する。共有メモリ３００の受信領域３１０にはフィルタ処理前の印刷データが記憶され、書き込み領域３２０にはフィルタ処理後の印刷データが記憶される。【選択図】図３
2010206251.tif 000002
【特許請求の範囲】
【請求項１】
印刷データのフィルタ処理機能を含む複数の機能を有する画像形成装置であって、
前記複数の機能でそれぞれ用いられるデータを記憶する記憶手段と、
前記印刷データをフィルタ処理するフィルタ処理手段と、
前記印刷データのデータ容量に基づいて、前記記憶手段のうち前記印刷データの記憶用に割り当てる領域を決定する決定手段と、を備え、
前記記憶手段には、前記決定手段によって決定された領域に前記フィルタ処理前の前記印刷データまたは前記フィルタ処理後の前記印刷データのうち少なくともいずれか一つが記憶され、他の領域には前記フィルタ処理機能以外の他の機能で用いられるデータが記憶されることを特徴とする画像形成装置。
【請求項２】
前記決定手段は、前記フィルタ処理前の前記印刷データと前記フィルタ処理後の前記印刷データとに異なる領域を割り当て、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて前記フィルタ処理後の前記印刷データを記憶する領域の容量を変更することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記決定手段は、前記フィルタ処理後の前記印刷データを記憶する領域として、前記フィルタ処理後の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記決定手段は、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて、前記印刷データの記憶用に割り当てる領域のうち、前記フィルタ処理前の前記印刷データを記憶する領域と前記フィルタ処理後の前記印刷データを記憶する領域との比率を変更することを特徴とする請求項１に記載の画像形成装置。
【請求項５】
前記フィルタ処理手段は、前記フィルタ処理後の前記印刷データの容量が前記決定手段によって割り当てられた領域の容量より大きい場合、前記フィルタ処理後の前記印刷データを分割して前記割り当てられた領域に順次記憶することを特徴とする請求項１〜４のいずれか一つに記載の画像形成装置。
【請求項６】
前記決定手段は、前記フィルタ処理前の前記印刷データを記憶する領域のみを割り当て、前記印刷データのデータ容量に基づいて前記フィルタ処理前の前記印刷データを記憶する領域の容量を変更することを特徴とする請求項１に記載の画像形成装置。
【請求項７】
前記決定手段は、前記フィルタ処理前の前記印刷データを記憶する領域として、前記フィルタ処理前の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする請求項６に記載の画像形成装置。
【請求項８】
印刷データのフィルタ処理機能を含む複数の機能を有する画像形成装置において、前記複数の機能でそれぞれ用いられるデータを記憶する記憶領域を制御する記憶領域制御方法であって、
前記印刷データのデータ容量に基づいて、前記記憶領域のうち前記印刷データの記憶用に割り当てる領域を決定する決定工程と、
前記決定工程で決定された領域に前記フィルタ処理前の前記印刷データまたは前記フィルタ処理後の前記印刷データのうち少なくともいずれか一つを記憶し、他の領域には前記フィルタ処理機能以外の他の機能で用いられるデータを記憶する記憶工程と、
を含むことを特徴とする記憶領域制御方法。
【請求項９】
前記決定工程では、前記フィルタ処理前の前記印刷データと前記フィルタ処理後の前記印刷データとに異なる領域を割り当て、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて前記フィルタ処理後の前記印刷データを記憶する領域の容量を変更することを特徴とする請求項８に記載の記憶領域制御方法。
【請求項１０】
前記決定工程では、前記フィルタ処理後の前記印刷データを記憶する領域として、前記フィルタ処理後の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする請求項９に記載の記憶領域制御方法。
【請求項１１】
前記決定工程では、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて、前記印刷データの記憶用に割り当てる領域のうち、前記フィルタ処理前の前記印刷データを記憶する領域と前記フィルタ処理後の前記印刷データを記憶する領域との比率を変更することを特徴とする請求項８に記載の記憶領域制御方法。
【請求項１２】
前記記憶工程では、前記フィルタ処理後の前記印刷データの容量が前記決定工程で割り当てられた領域の容量より大きい場合、前記フィルタ処理後の前記印刷データを分割して前記割り当てられた領域に順次記憶することを特徴とする請求項８〜１１のいずれか一つに記載の記憶領域制御方法。
【請求項１３】
前記決定工程では、前記フィルタ処理前の前記印刷データを記憶する領域のみを割り当て、前記印刷データのデータ容量に基づいて前記フィルタ処理前の前記印刷データを記憶する領域の容量を変更することを特徴とする請求項８に記載の記憶領域制御方法。
【請求項１４】
前記決定工程では、前記フィルタ処理前の前記印刷データを記憶する領域として、前記フィルタ処理前の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする請求項１３に記載の記憶領域制御方法。
【請求項１５】
請求項８〜１４のいずれか一つに記載の記憶領域制御方法をコンピュータに実行させることを特徴とする記憶領域制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、印刷データのフィルタ処理機能を含む複数の機能を有する画像形成装置、同画像形成装置において複数の機能でそれぞれ用いられるデータを記憶する記憶領域を制御する記憶領域制御方法、および記憶領域制御プログラムに関する。
【背景技術】
【０００２】
従来、ＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）やラインプリンタに搭載されていない特殊なページ記述言語（たとえば、ＨＰＧＬ：Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｇｒａｐｈｉｃｓ  Ｌａｎｇｕａｇｅなど）で記述された印刷データを印刷する場合、言語を解釈する前にフィルタとなるアプリケーション（以下、フィルタアプリという）を用いて、印刷データを一般的なページ記述言語（たとえばＰｏｓｔｓｃｒｉｐｔなど）に変換した上で印刷がおこなわれている（たとえば、下記特許文献１参照）。フィルタアプリには、異なるページ記述言語への変換だけでなく、日本語を外国語に変換したり、標準語を地方の言葉に変換するなどの機能を備えるものがある。下記特許文献１には、ユーザ端末から送られた印刷データをフィルタ処理し、プリンタやＦＡＸなどの装置に出力する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の従来技術では、フィルタアプリは印刷データをある決められたバッファサイズごとに標準入力から読み込み、処理したデータをある決められたバッファサイズごとに標準出力へ書き出す。このため、印刷データ量が非常に大きい場合や、フィルタ処理の前後でデータ量が大きく増加する場合には、読み書き（コピー）の回数が増え、フィルタ処理にかかるオーバーヘッドタイムが長くなるという問題点がある。
【０００４】
この発明は、上述した従来技術による問題点を解消するため、短いオーバーヘッドタイムでフィルタ処理をおこなうことができる画像形成装置、記憶領域制御方法、および記憶領域制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかる画像形成装置は、印刷データのフィルタ処理機能を含む複数の機能を有する画像形成装置であって、前記複数の機能でそれぞれ用いられるデータを記憶する記憶手段と、前記印刷データをフィルタ処理するフィルタ処理手段と、前記印刷データのデータ容量に基づいて、前記記憶手段のうち前記印刷データの記憶用に割り当てる領域を決定する決定手段と、を備え、前記記憶手段には、前記決定手段によって決定された領域に前記フィルタ処理前の前記印刷データまたは前記フィルタ処理後の前記印刷データのうち少なくともいずれか一つが記憶され、他の領域には前記フィルタ処理機能以外の他の機能で用いられるデータが記憶されることを特徴とする。
【０００６】
また、請求項２の発明にかかる画像形成装置は、請求項１に記載の発明において、前記決定手段は、前記フィルタ処理前の前記印刷データと前記フィルタ処理後の前記印刷データとに異なる領域を割り当て、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて前記フィルタ処理後の前記印刷データを記憶する領域の容量を変更することを特徴とする。
【０００７】
また、請求項３の発明にかかる画像形成装置は、請求項２に記載の発明において、前記決定手段は、前記フィルタ処理後の前記印刷データを記憶する領域として、前記フィルタ処理後の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする。
【０００８】
また、請求項４の発明にかかる画像形成装置は、請求項１に記載の発明において、前記決定手段は、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて、前記印刷データの記憶用に割り当てる領域のうち、前記フィルタ処理前の前記印刷データを記憶する領域と前記フィルタ処理後の前記印刷データを記憶する領域との比率を変更することを特徴とする。
【０００９】
また、請求項５の発明にかかる画像形成装置は、請求項１〜４のいずれか一つに記載の発明において、前記フィルタ処理手段は、前記フィルタ処理後の前記印刷データの容量が前記決定手段によって割り当てられた領域の容量より大きい場合、前記フィルタ処理後の前記印刷データを分割して前記割り当てられた領域に順次記憶することを特徴とする。
【００１０】
また、請求項６の発明にかかる画像形成装置は、請求項１に記載の発明において、前記決定手段は、前記フィルタ処理前の前記印刷データを記憶する領域のみを割り当て、前記印刷データのデータ容量に基づいて前記フィルタ処理前の前記印刷データを記憶する領域の容量を変更することを特徴とする。
【００１１】
また、請求項７の発明にかかる画像形成装置は、請求項６に記載の発明において、前記決定手段は、前記フィルタ処理前の前記印刷データを記憶する領域として、前記フィルタ処理前の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする。
【００１２】
また、請求項８の発明にかかる記憶領域制御方法は、印刷データのフィルタ処理機能を含む複数の機能を有する画像形成装置において、前記複数の機能でそれぞれ用いられるデータを記憶する記憶領域を制御する記憶領域制御方法であって、前記印刷データのデータ容量に基づいて、前記記憶領域のうち前記印刷データの記憶用に割り当てる領域を決定する決定工程と、前記決定工程で決定された領域に前記フィルタ処理前の前記印刷データまたは前記フィルタ処理後の前記印刷データのうち少なくともいずれか一つを記憶し、他の領域には前記フィルタ処理機能以外の他の機能で用いられるデータを記憶する記憶工程と、を含むことを特徴とする。
【００１３】
また、請求項９の発明にかかる記憶領域制御方法は、請求項８に記載の発明において、前記決定工程では、前記フィルタ処理前の前記印刷データと前記フィルタ処理後の前記印刷データとに異なる領域を割り当て、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて前記フィルタ処理後の前記印刷データを記憶する領域の容量を変更することを特徴とする。
【００１４】
また、請求項１０の発明にかかる記憶領域制御方法は、請求項９に記載の発明において、前記決定工程では、前記前記フィルタ処理後の前記印刷データを記憶する領域として、前記フィルタ処理後の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする。
【００１５】
また、請求項１１の発明にかかる記憶領域制御方法は、請求項８に記載の発明において、前記決定工程では、前記印刷データのデータ容量および前記フィルタ処理の変換倍率に基づいて、前記印刷データの記憶用に割り当てる領域のうち、前記フィルタ処理前の前記印刷データを記憶する領域と前記フィルタ処理後の前記印刷データを記憶する領域との比率を変更することを特徴とする。
【００１６】
また、請求項１２の発明にかかる記憶領域制御方法は、請求項８〜１１のいずれか一つに記載の発明において、前記記憶工程では、前記フィルタ処理後の前記印刷データの容量が前記決定工程で割り当てられた領域の容量より大きい場合、前記フィルタ処理後の前記印刷データを分割して前記割り当てられた領域に順次記憶することを特徴とする。
【００１７】
また、請求項１３の発明にかかる記憶領域制御方法は、請求項８に記載の発明において、前記決定工程では、前記フィルタ処理前の前記印刷データを記憶する領域のみを割り当て、前記印刷データのデータ容量に基づいて前記フィルタ処理前の前記印刷データを記憶する領域の容量を変更することを特徴とする。
【００１８】
また、請求項１４の発明にかかる記憶領域制御方法は、請求項１３に記載の発明において、前記決定工程では、前記フィルタ処理前の前記印刷データを記憶する領域として、前記フィルタ処理前の前記印刷データのデータ容量以上の領域を割り当てることを特徴とする。
【００１９】
また、請求項１５の発明にかかる記憶領域制御プログラムは、請求項８〜１４のいずれか一つに記載の記憶領域制御方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２０】
以上説明したように、本発明にかかる画像形成装置、記憶領域制御方法、および記憶領域制御プログラムによれば、短いオーバーヘッドタイムでフィルタ処理をおこなうことができるという効果を奏する。
【図面の簡単な説明】
【００２１】
【図１】実施の形態にかかるシステムの構成図である。
【図２】複合機が稼動しているときのソフトウェア構成を示すブロック図である。
【図３】複合機による共有メモリの直接読み書き制御を説明するためのブロック図である。
【図４】フィルタアプリの起動に関する処理を詳細に示すブロック図である。
【図５】複合機における印刷データの印刷処理の手順を示すフローチャートである。
【図６】書き込み領域の決定および設定処理を説明するためのブロック図である。
【図７】印刷データ内のフィルタアプリ用ヘッダ情報の一例を示す説明図である。
【図８】プリント制御アプリによる書き込み領域の設定処理を示すフローチャートである。
【図９】図８のステップＳ８０２における閾値を説明するための説明図である。
【図１０】受信領域のみを設けた場合の印刷処理を説明するためのブロック図である。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照して、この発明に係る画像形成装置、記憶領域制御方法、および記憶領域制御プログラムの好適な実施の形態を詳細に説明する。
【００２３】
（実施の形態）
図１は、実施の形態にかかるシステムの構成図である。本実施の形態にかかるシステム１００は、複合機１０１、ユーザ端末であるＰＣ（パーソナル・コンピュータ）１０２、プリンタ１０３，１０４がＬＡＮ１０５を介して接続されている。ＬＡＮ１０５はルータ１０６を介してインターネット１０７に接続されており、複合機１０１はＰＳＴＮ（ｐｕｂｌｉｃ  ｓｗｉｔｃｈｅｄ  ｔｅｌｅｐｈｏｎｅ  ｎｅｔｗｏｒｋ）／ＩＳＤＮ網１０８に接続されている。また、システム１００の各装置は、他の装置とＴＣＰ／ＩＰプロトコルにより通信をおこなう。
【００２４】
また、本実施の形態では、印刷データに対する処理をおこなうためにいわゆるプリントフィルタの技術を用いる。プリントフィルタとは、一般的に、プリントサーバなどで実行されるアプリケーションであり、標準入力から印刷データを読み込み、印刷データの変換をおこなって標準出力に書き出すものである。以下、本実施の形態におけるプリントフィルタをフィルタアプリと称する。
【００２５】
本実施の形態ではフィルタアプリを複合機１０１が実行する。より詳細には、ＰＣ１０２から送信された印刷データに対して複合機１０１のフィルタアプリによって変換処理をおこない、複合機１０１のプリンタアプリによって印刷をおこなう。後述するように、本実施の形態において、フィルタアプリは、標準入出力上の印刷データだけでなく、複合機１０１内の様々なアプリケーションが使用する共有メモリ上の印刷データに対しても変換処理をおこなうことができる。
【００２６】
図２は、複合機が稼動しているときのソフトウェア構成を示すブロック図である。図２に示すように、複合機１０１は、白黒ラインプリンタ（Ｂ＆Ｗ  ＬＰ）２３１と、カラーラインプリンタ（Ｃｏｌｏｒ  ＬＰ）２３２と、スキャナ、ファクシミリ、ハードディスク（ＨＤ）、メモリ、ネットワークインタフェースなどのハードウェアリソース２３３を有するとともに、プラットホーム２２０とアプリケーション２３０とから構成されるソフトウェア群２１０とを備えている。なお、ハードウェアリソース２３３には、後述する共有メモリ３００が含まれる。共有メモリ３００は、複合機１０１内の様々なアプリケーションが使用可能なメモリであり、標準入出力よりも大きな記憶容量を有している。
【００２７】
プラットホーム２２０は、アプリケーション２３０からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理をおこない、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）２２３と、汎用ＯＳ２２１とを備えている。
【００２８】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）２２２と、ＥＣＳ（エンジンコントロールサービス）２２４と、ＭＣＳ（メモリコントロールサービス）２２５と、ＯＣＳ（オペレーションパネルコントロールサービス）２２６と、ＦＣＳ（ファックスコントロールサービス）２２７と、ＮＣＳ（ネットワークコントロールサービス）２２８とから構成される。なお、このプラットホーム２２０は、あらかじめ定義された関数によりアプリケーション２３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００２９】
汎用ＯＳ２２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム２２０並びにアプリケーション２３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００３０】
ＳＲＭ２２３のプロセスは、ＳＣＳ２２２とともにシステムの制御およびリソースの管理をおこなうものである。ＳＲＭ２２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求に従って調停をおこない、実行制御する。また、ＳＣＳ２２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などをおこなう。
【００３１】
ＥＣＳ２２４のプロセスはハードウェアリソース２３３のエンジンの制御をおこない、ＭＣＳ２２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などをおこなう。
【００３２】
ＦＣＳ２２７のプロセスは、アプリからＰＳＴＮ／ＩＳＤＮ網１０８を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信をおこなうためのＡＰＩを提供する。
【００３３】
ＮＣＳ２２８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介をおこなう。具体的には、ｆｔｐｄ、ｈｔｔｐｄ、ｌｐｄ、ｓｎｍｐｄ、ｔｅｌｎｅｔｄ、ｓｍｔｐｄなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。また、ＮＣＳ２２８は、本実施の形態では、後述するフィルタ設定アプリ２１６によるキュー名とフィルタアプリ２１５の設定を保持し、キュー名を含む印刷データを受信したときに制御モジュール２１１ｄにフィルタアプリ２１５の起動を指示する機能を有している。
【００３４】
ＯＣＳ２２６は、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）の制御をおこなうものである。
【００３５】
アプリケーション２３０は、ページ記述言語をサポートするプリンタ用のアプリケーションであるプリンタアプリ２１１と、コピー用アプリケーションであるコピーアプリ２１２と、ファクシミリ用アプリケーションであるファックスアプリ２１３と、スキャナ用アプリケーションであるスキャナアプリ２１４を有している。プリンタアプリ２１１は、ＰＤＬ２１１ａ，ＰＣＬ２１１ｂ，ＰＳ２１１ｃおよび制御モジュール２１１ｄを含んでいる。
【００３６】
また、アプリケーション２３０は、本実施の形態における処理をおこなうフィルタアプリ２１５と、ＮＣＳ２２８に対して本実施の形態における処理をおこなうのに必要となる設定をするためのフィルタ設定アプリ２１６を有している。これらのアプリケーション２３０はいずれも複合機１０１の起動時に初期化部（図示せず）によりプロセスとして生成され、動作する。
【００３７】
アプリケーション２３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信をおこないながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【００３８】
このように、複合機１０１には、複数のアプリケーションおよび複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行がおこなわれる。そして、コントロールサービスがアプリケーション２３０に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作をおこない、互いにプロセス間通信をおこなって協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。そして、複合機１０１には、サードベンダーなどの第三者がコントロールサービス層の上のアプリケーション層に新規なアプリケーションを開発して搭載することが可能となっている。フィルタアプリ２１５およびフィルタ設定アプリ２１６はそのようなアプリケーションの１つである。
【００３９】
ここで、フィルタアプリ２１５による変換処理がおこなわれた後の印刷データは、変換処理前の印刷データと比較してデータサイズが大きく変化する場合がある。たとえば、印刷データのページ記述言語をＨＰＧＬからＰｏｓｔ  Ｓｃｒｉｐｔに変換をする場合、変換処理後のデータサイズは変換処理前に比べて５０倍も大きくなる。このように印刷データの容量が大きくなると、変換処理後の印刷データを書き込む領域の容量が固定されている場合、印刷データを分割して処理するため、オーバーヘッドタイムが長くなってしまう。
【００４０】
そこで、複合機１０１では、フィルタアプリ２１５による変換処理前後の印刷データを格納する領域を共有メモリ上に設けている。より詳細には、変換処理前の印刷データを格納する領域を「受信領域」、変換処理後の印刷データを格納する領域を「書き込み領域」という。複合機１０１では、データサイズやフィルタ変換倍率などを含むヘッダ情報を印刷データに付加し、制御モジュール２１１ｄによって、フィルタアプリ２１５の変換性能に合わせて共有メモリ上の書き込み領域のサイズを決定する。これにより、フィルタアプリ２１５による変換処理を高速化することができる。また、印刷データが小さい場合は、フィルタアプリ用に確保する共有メモリの容量を縮小することによって、他のアプリケーションなどが使用できる領域が増える。このため、共有メモリを有効に活用することができる。なお、本実施の形態においては、制御モジュール２１１ｄがフィルタアプリ２１５に対して共有メモリのような広範囲のメモリ領域を割り当てられる環境にあるものとする。
【００４１】
図３は、複合機による共有メモリの直接読み書き制御を説明するためのブロック図である。図３に示すように、まず、フィルタ設定アプリ２１６がＮＣＳ２２８にキュー名とフィルタアプリの設定をおこなうと（ステップＳ３０１）、制御モジュール２１１ｄは印刷データが保存される共有メモリ３００上の受信領域をＮＣＳ２２８に設定する（ステップＳ３０２）。つぎに、キュー名とともに印刷データがＰＣ１０２からＮＣＳ２２８に送られると（ステップＳ３０３）、ＮＣＳ２２８は制御モジュール２１１ｄによって設定された共有メモリ３００上の受信領域３１０に印刷データを保存する（ステップＳ３０４）。
【００４２】
また、制御モジュール２１１ｄはフィルタアプリ２１５を起動させて、フィルタアプリ２１５に印刷データが保存された受信領域３１０のアドレス（受信先）と、変換後の印刷データを書き込む書き込み領域３２０のアドレス（書き込み先）をフィルタアプリ２１５に設定する（ステップＳ３０５）。フィルタアプリ２１５は、共有メモリ３００上の受信領域３１０から印刷データを読み込み（ステップＳ３０６）、変換処理後、制御モジュール２１１ｄによって設定された書き込み領域３２０に変換後の印刷データを書き込む（ステップＳ３０７）。制御モジュール２１１ｄは、変換後の印刷データの書き込み先をＰＤＬ２１１ａに設定し（ステップＳ３０８）、ＰＤＬ２１１ａは、書き込み先から変換後の印刷データを読み出して解釈をおこなう（ステップＳ３０９）。
【００４３】
図４は、フィルタアプリの起動に関する処理を詳細に示すブロック図である。図４に示すように、まずフィルタ設定アプリ２１６がＮＣＳ２２８に対してキュー名４８１とそれに対応するフィルタアプリ（の識別情報、たとえばファイル名）４８２とを設定する（ステップＳ４０１）。ＮＣＳ２２８は、キュー名４８１を含む印刷データをＰＣ１０２から受信すると（ステップＳ４０２）、制御モジュール２１１ｄにフィルタアプリ２１５を起動するよう指示する（ステップＳ４０３）。制御モジュール２１１ｄは、ＮＣＳ２２８の指示に従ってフィルタアプリ２１５を起動する（ステップＳ４０４）。
【００４４】
図５は、複合機における印刷データの印刷処理の手順を示すフローチャート図である。複合機１０１は、電源が投入されるまで待機する（ステップＳ５０１：Ｎｏのループ）。電源が投入されると（ステップＳ５０１：Ｙｅｓ）、ＮＣＳ２２８、プリンタアプリ２１１、フィルタ設定アプリ２１６、フィルタアプリ２１５を含む各種コントロールサービスおよび各種アプリケーション２３０が起動する（ステップＳ５０２）。
【００４５】
つぎに、フィルタ設定アプリ２１６は、キュー名と、そのキュー名に対応するフィルタアプリ２１５をＮＣＳ２２８に設定する。また、制御モジュール２１１ｄは、印刷データを保存する共有メモリ３００上の受信領域３１０をＮＣＳ２２８に設定する（ステップＳ５０３）。なお、この動作は起動時に一度だけおこなえばよい。
【００４６】
複合機１０１は、ＰＣ１０２から印刷指示があるまで待機する（ステップＳ５０４：Ｎｏのループ）。ＰＣ１０２から印刷指示があると（ステップＳ５０４：Ｙｅｓ）、ＮＣＳ２２８は、ＰＣ１０２からの印刷データをＴＣＰ／ＩＰ経由で受信して、ステップＳ５０３で設定された共有メモリ３００の受信領域３１０に保存する（ステップＳ５０５）。ここで、印刷データは、たとえばＰｏｓｔｓｃｒｉｐｔやＥＳＣ／Ｐａｇｅ、ＲＰＣＳなどのページ記述言語で記述されたデータである。
【００４７】
ＮＣＳ２２８は、フィルタ設定アプリ２１６によって設定されたキュー名をチェックして（ステップＳ５０６）、制御モジュール２１１ｄにそのキュー名に対応するフィルタアプリ２１５の起動を指示し、制御モジュール２１１ｄは、その指示に従ってフィルタアプリを起動する（ステップＳ５０７）。そして、制御モジュール２１１ｄは、変換処理後の印刷データを記録する共有メモリ３００上の書き込み領域３２０を決定する（ステップＳ５０８）。この書き込み領域３２０の決定処理については、図６〜図９を用いて詳細に説明する。
【００４８】
つづいて、制御モジュール２１１ｄは、印刷データが記録されている受信領域３１０のアドレス（受信先）と、変換後の印刷データを保存する書き込み領域３２０のアドレス（書き込み先）を標準入力に入力する（ステップＳ５０９）。フィルタアプリ２１５は、標準入力に入力された受信領域３１０のアドレスを参照して、受信領域３１０から印刷データを読み込んで（ステップＳ５１０）、印刷データに対して変換処理をおこなう（ステップＳ５１１）。この変換処理は、たとえばページ記述言語の変換、印刷データの中の文書における日本語から外国語への翻訳、標準語から地方の言葉への変換などである。
【００４９】
つぎに、フィルタアプリ２１５は、標準入力に入力された書き込み領域３２０のアドレスを参照して、変換処理後の印刷データを書き込み領域３２０に書き込む（ステップＳ５１２）。制御モジュール２１１ｄは、変換処理後の印刷データが記録された書き込み領域３２０のアドレス（書き込み先）をＰＤＬ２１１ａに渡す（ステップＳ５１３）。ＰＤＬ２１１ａは、書き込み領域３２０を参照して印刷データの解釈をおこない、印刷紙などに印刷をおこなって（ステップＳ５１４）、本フローチャートによる処理を終了する。
【００５０】
つぎに、図６〜図９を用いて、書き込み領域３２０として使用する共有メモリ３００上の領域を決定する処理（図５のステップＳ５０８）について、詳細に説明する。図６は、書き込み領域の決定および設定処理を説明するためのブロック図である。制御モジュール２１１ｄは、ＮＣＳ２２８によって共有メモリ３００上の受信領域３１０に印刷データが記録されると（ステップＳ６０１）、印刷データの先頭に埋め込まれたフィルタアプリ用ヘッダ情報を読み込む（ステップＳ６０２）。
【００５１】
制御モジュール２１１ｄは、その情報（印刷データのサイズや変換後のサイズ変化など）から共有メモリ３００の書き込み領域３２０のサイズを決定し、受信領域３１０のアドレス（受信先）と書き込み領域３２０のアドレス（書き込み先）をフィルタアプリ２１５に渡す（ステップＳ６０３）。そして、フィルタアプリ２１５は、受信領域３１０から印刷データを読み込み（ステップＳ６０４）、変換処理をおこなった後、変換処理後の印刷データを書き込み領域３２０に書き込む（ステップＳ６０５）。
【００５２】
図７は、印刷データ内のフィルタアプリ用ヘッダ情報の一例を示す説明図である。印刷データ７００には、フィルタアプリ用ヘッダ情報７０１および印刷用情報７０２が含まれている。フィルタアプリ用ヘッダ情報７０１には、たとえば、印刷するデータのデータサイズ情報（図示の例では１７９２バイト）やフィルタ変換倍率（図示の例では１．４）などが含まれている。また、印刷用情報７０２には、印刷処理時に用いる各種のコマンドなどが含まれている。
【００５３】
図８は、プリント制御アプリによる書き込み領域の設定処理を示すフローチャートである。制御モジュール２１１ｄは、図５のステップＳ５０５で共有メモリ３００の受信領域３１０に保存された印刷データから、その先頭に埋め込まれたフィルタアプリ用ヘッダ情報（図７参照）を読み出す（ステップＳ８０１）。そして、フィルタアプリ用ヘッダ情報に基づいて印刷データのサイズとフィルタ変換倍率との積（印刷データサイズ×フィルタ変換倍率）が所定の閾値（たとえば１００バイト）より大きいか否かを判断する（ステップＳ８０２）。
【００５４】
図９は、図８のステップＳ８０２における閾値を説明するための説明図である。閾値は、書き込み領域３２０として確保する領域の初期値であり、共有メモリ３００上の書き込み可能領域９００のサイズ（図示の例では３２バイト〜４０９６バイト）内の任意の値である。
【００５５】
図８の説明に戻り、印刷データサイズ×フィルタ変換倍率が閾値より大きい場合（ステップＳ８０２：Ｙｅｓ）、制御モジュール２１１ｄは、書き込み領域３２０を大きくして（ステップＳ８０３）、印刷データサイズ×フィルタ変換倍率分の書き込み領域３２０（たとえば、印刷データサイズが１７９２バイト、フィルタ変換倍率が１．４倍の場合、１７９２×１．４＝２５０６バイト）を確保する。一方、印刷データサイズ×フィルタ変換倍率が閾値より大きくない場合（ステップＳ８０２：Ｎｏ）、制御モジュール２１１ｄは、書き込み領域３２０を小さくして（ステップＳ８０４）、印刷データサイズ×フィルタ変換倍率分の書き込み領域３２０（たとえば、印刷データサイズが１５０バイト、フィルタ変換倍率が０．５倍の場合、１５０×０．５＝７５バイト）を確保する。
【００５６】
そして、制御モジュール２１１ｄは、印刷データが記録されている受信領域３１０のアドレス（受信先）および変換処理後の印刷データを保存する書き込み領域３２０のアドレス（書き込み先）を標準入力に入力して（ステップＳ８０５）、本フローチャートによる処理を終了する。なお、ステップＳ８０５の処理は図５のステップＳ５０９の処理である。この後は、図５に示す手順に従って印刷処理がおこなわれる。
【００５７】
このように、実施の形態にかかる複合機１０１は、フィルタアプリ用ヘッダ情報から変換後の印刷データのサイズを計算し、これに合わせて書き込み領域３２０の容量を変更する。具体的には、印刷データのサイズが大きくなる場合には、一度で書き込むことができるように書き込み領域３２０のサイズを大きくする。これにより、フィルタアプリ２１５の変換処理を高速化することができる。また、印刷データの容量が小さくなる場合には、フィルタアプリ用に確保する領域を縮小する。これにより、他のアプリケーションで使用する共有メモリ３００上の領域を増やすことができ、共有メモリ３００を有効に活用することができる。
【００５８】
なお、上述した実施の形態では、書き込み領域３２０のサイズを変更したが、受信領域３１０のサイズについても、印刷データのヘッダ情報を用いて変更することができる。たとえば、受信領域３１０の容量がある閾値（たとえば１００バイト）で固定されている場合、印刷データが閾値よりも大きい場合は分割して受信することになり、繰り返し処理によるオーバヘッドタイムが生じる。このため、受信領域３１０についてもフィルタアプリ用ヘッダ情報を用いてサイズを変更することにより、繰り返し処理によるオーバヘッドタイムをなくすことができる。
【００５９】
より詳細には、所定サイズの領域を初期値として受信領域３１０を確保しておく。ＰＣ１０２から送信されてきた印刷データが初期値よりも大きい場合、印刷データを分割し、初期値分の印刷データを受信する。受信した印刷データにはヘッダ情報が含まれており、印刷データ全体のデータサイズを知ることができる。この情報から残りの印刷データをすべて受信できるように受信領域３１０のサイズを拡張し、残りの印刷データを受信する。
【００６０】
たとえば、受信領域３１０の初期値が１２８バイト、印刷データのサイズが５１２バイトである場合、まず印刷データを先頭から１２８バイト分受信して受信領域３１０に格納する。受信した情報に含まれるヘッダ情報から残りの印刷データのサイズ（５１２−１２８＝３８４バイト）を算出し、受信領域３１０を３８４バイトに拡張してから残りの印刷データを受信する。
【００６１】
また、フィルタの変換倍率が高い場合（たとえば５０倍など）は、書き込み領域３２０が大きく必要である。しかし、共有メモリ３００も有限であるため書き込み領域３２０サイズも制限される（たとえば、図９に示した例では、最大で４０９６バイトである）。そこで、フィルタの変換倍率に合わせて受信領域３１０を縮小して、その分を書き込み領域３２０として使用することにより、効率よくフィルタ変換処理をおこなうことができる。
【００６２】
たとえば、受信領域３１０および書き込み領域３２０が、それぞれ最大４０９６バイトまで使用できるとすれば、合計で８１９２バイト使用することができる。フィルタの変換倍率が５０倍の場合、受信領域３１０のサイズを書き込み領域３２０の５０分の１とし、受信領域３１０は１６０バイト、書き込み領域３２０は８０３２バイトとする。これにより、制限領域内で効率よくフィルタ変換処理をおこなうことができる。
【００６３】
さらに、共有メモリ３００に書き込み領域３２０を設けず、受信領域３１０のみを設けるようにしてもよい。図１０は、受信領域のみを設けた場合の印刷処理を説明するためのブロック図である。図１０に示すように、まず、フィルタ設定アプリ２１６がＮＣＳ２２８にキュー名とフィルタアプリの設定をおこなうと（ステップＳ１００１）、制御モジュール２１１ｄは、印刷データが保存される共有メモリ３００上の受信領域３１０（受信先）をＮＣＳ２２８に設定する（ステップＳ１００２）。つぎに、キュー名とともに印刷データがＰＣ１０２からＮＣＳ２２８に送られると（ステップＳ１００３）、ＮＣＳ２２８は制御モジュール２１１ｄによって設定された共有メモリ３００上の受信領域３１０に印刷データを保存する（ステップＳ１００４）。
【００６４】
また、制御モジュール２１１ｄはフィルタアプリ２１５を起動させて、標準入力を用いて、フィルタアプリ２１５に共有メモリ３００上の受信領域３１０（受信先）を設定する（ステップＳ１００５）。フィルタアプリ２１５は、共有メモリ３００上の受信領域３１０から印刷データを読み込み（ステップＳ１００６）、変換処理後、標準出力に対して変換後の印刷データを出力する（ステップＳ１００７）。制御モジュール２１１ｄは、変換後の印刷データをＰＤＬ２１１ａに送信し（ステップＳ１００８）、ＰＤＬ２１１ａによって変換後の印刷データの解釈をおこなう。
【００６５】
このような構成によれば、フィルタアプリ２１５による印刷データの読み込み時には標準入力を使用せず、共有メモリ上の受信領域３１０から読み出すため、繰り返し処理が発生せず、高速に印刷データを読み込むことができる。また、フィルタアプリ２１５による変換処理後の処理速度は、上述した実施の形態と比較して遅くなるが、書き込み領域３２０を使用しない分、フィルタアプリ２１５に対して確保するメモリを縮小することができる。このため、他のアプリケーションなどが使用できる領域が増え、メモリを有効に活用することができる。
【００６６】
なお、本実施の形態で説明した記憶領域制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【００６７】
以上説明したように、本発明はフィルタ処理をおこなう画像形成装置に有効であり、特に、画像データの容量が大きく変化するフィルタ処理をおこなう画像形成装置や容量が大きい画像データを取り扱う画像形成装置に適している。
【符号の説明】
【００６８】
１００  システム
１０１  複合機
１０２  ＰＣ
１０３，１０４  プリンタ
１０５  ＬＡＮ
１０６  ルータ
１０７  インターネット
１０８  ＰＳＴＮ／ＩＳＤＮ網
２１１  プリンタアプリ
２１１ａ  ＰＤＬ
２１１ｄ  制御モジュール
２１５  フィルタアプリ
２１６  フィルタ設定アプリ
２２８  ＮＣＳ
３００  共有メモリ
３１０  受信領域
３２０  書き込み領域
【先行技術文献】
【特許文献】
【００６９】
【特許文献１】特開２００４−２５４２０９号公報
【図１】
2010206251.tif 000003
【図２】
2010206251.tif 000004
【図３】
2010206251.tif 000005
【図４】
2010206251.tif 000006
【図５】
2010206251.tif 000007
【図６】
2010206251.tif 000008
【図７】
2010206251.tif 000009
【図８】
2010206251.tif 000010
【図９】
2010206251.tif 000011
【図１０】
2010206251.tif 000012