(57)【特許請求の範囲】
【請求項１】
印刷装置に備える機能に関わる機能情報を保持する記憶部と、
前記機能情報に基づいて、前記機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成する生成部と、を備え、
前記生成部は、前記データ部に、前記印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持する、
ことを特徴とする情報処理装置。
【請求項２】
前記生成部は、前記印刷装置に備える機能の設定値と、古いバージョンの前記機能の設定値と、を保持する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ構造体に保持された設定値を読み込む読み込み部と、
前記設定値を、自装置のプリンタドライバに引継ぐための、機能ごとの設定値の互換性を判別する判別部と、
前記判別部によって変換が必要と判断された場合に、自装置のプリンタドライバが利用可能な設定値に変換するコンバート部と、
前記データ構造体に、変換された設定値を書き込む書き込み部と、を更に備える、
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記データ構造体は、DEVMODE構造体である、
ことを特徴とする請求項１乃至３のいずれか一に記載の情報処理装置。
【請求項５】
印刷装置に印刷を指示する装置で動作するプリンタドライバであって、
前記装置を、
予め記憶した、前記印刷装置に備える機能に関わる機能情報に基づいて、前記機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成する生成部、として機能させ、
前記生成部は、前記データ部に、自プリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持する、
ことを特徴とするプリンタドライバ。
【請求項６】
前記生成部は、前記印刷装置に備える機能の設定値と、古いバージョンの前記機能の設定値と、を保持する、
ことを特徴とする請求項５に記載のプリンタドライバ。
【請求項７】
前記装置を、更に、
前記データ構造体に保持された設定値を読み込む読み込み部、
前記設定値を、自プリンタドライバに引継ぐための、機能ごとの設定値の互換性を判別する判別部、
前記判別部によって変換が必要と判断された場合に、自プリンタドライバが利用可能な設定値に変換するコンバート部、
前記データ構造体に、変換された設定値を書き込む書き込み部、として機能させる、
ことを特徴とする請求項５又は６に記載のプリンタドライバ。
【請求項８】
前記データ構造体は、DEVMODE構造体である、
ことを特徴とする請求項５乃至７のいずれか一に記載のプリンタドライバ。
【請求項９】
印刷装置に印刷を指示する装置における印刷設定方法であって、
予め記憶した、前記印刷装置に備える機能に関わる機能情報に基づいて、前記機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成する生成ステップを実行し、
前記生成ステップでは、前記データ部に、前記印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持する、
ことを特徴とする印刷設定方法。
【請求項１０】
前記生成ステップでは、前記印刷装置に備える機能の設定値と、古いバージョンの前記機能の設定値と、を保持する、
ことを特徴とする請求項９に記載の印刷設定方法。
【請求項１１】
前記データ構造体に保持された設定値を読み込む読み込みステップと、
前記設定値を、自装置のプリンタドライバに引継ぐための、機能ごとの設定値の互換性を判別する判別ステップと、
前記判別ステップによって変換が必要と判断された場合に、自装置のプリンタドライバが利用可能な設定値に変換するコンバートステップと、
前記データ構造体に、変換された設定値を書き込む書き込みステップと、を更に実行する、
ことを特徴とする請求項９又は１０に記載の印刷設定方法。
【請求項１２】
前記データ構造体は、DEVMODE構造体である、
ことを特徴とする請求項９乃至１１のいずれか一に記載の印刷設定方法。
【請求項１３】
印刷装置に印刷を指示する装置で生成されるデータ構造体であって、
前記印刷装置に備える機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含み、
前記データ部は、前記印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を有する、
ことを特徴とするデータ構造体。
【請求項１４】
前記データ部は、前記印刷装置に備える機能の設定値と、古いバージョンの前記機能の設定値と、を有する、
ことを特徴とする請求項１３に記載のデータ構造体。
【請求項１５】
前記データ構造体は、DEVMODE構造体である、
ことを特徴とする請求項１３又は１４に記載のデータ構造体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プリンタドライバ及び印刷設定方法並びにデータ構造体に関し、特に、DEVMODE構造体を利用して印刷設定を行う情報処理装置、プリンタドライバ及び印刷設定方法並びにDEVMODE構造体に関する。
【背景技術】
【０００２】
印刷装置を利用して文書ファイルを印刷する場合、まず、ネットワークに接続されているクライアントのコンピュータ装置にインストールされているプリンタドライバを用いて印刷設定を行い、ページ記述言語（ＰＤＬ：Page Description Language）形式の印刷ジョブに変換して印刷装置に送信する。印刷装置では、印刷ジョブを受信し、印刷ジョブをラスタライズ（ビットマップ展開）して画像データを生成し、この画像データにスクリーニングや画像調整等を行って紙媒体に出力する。
【０００３】
ここで、プリンタドライバの各種設定（印刷指示を行う印刷装置の機種情報やその印刷装置に対する印刷設定情報など）は、DEVMODE構造体と呼ばれるデータとしてクライアントのコンピュータ装置に保持される。従って、DEVMODE構造体を文書ファイルに関連付けておけば、この文書ファイルを再度印刷する場合に前回の印刷設定を引き継ぐことができるため、印刷操作を簡略化することができる。
【０００４】
しかしながら、このDEVMODE構造体に保持される情報（DEVMODE情報）は、印刷を指示したコンピュータ装置のプリンタドライバに依存する情報であるため、DEVMODE構造体を文書ファイルに関連付けたとしても、他の機種の印刷装置向けのプリンタドライバやバージョンの異なるプリンタドライバを利用する場合には、上記DEVMODE情報を引き継ぐことができない。
【０００５】
例えば、Ａさんが機種Ａの印刷装置向けのプリンタドライバで作成した文書を、Ｂさんが機種Ｂの印刷装置向けのプリンタドライバを用いて利用する時や、Ａさんが機種Ａの印刷装置向けのVersion1のプリンタドライバで作成した文書を、Ｂさんが機種Ａの印刷装置向けのVersion2のプリンタドライバを用いて利用する時、異なる機種向けのプリンタドライバや異なるバージョンのプリンタドライバに対応するDEVMODE構造体が存在しないため、新たに印刷設定を行わなければならない。
【０００６】
また、ＵＰＤ（Universal Printer Driver）のような複数の機種を動的に切り替える際には、機種を切り替える前の印刷設定の内容を引き継ぐのが望ましい場合もある。
【０００７】
このような問題に対して、例えば、下記特許文献１には、印刷装置が処理可能なデータを生成する情報処理装置であって、前記印刷装置の機能に係る機能設定情報を記憶する情報記憶手段と、前記情報記憶手段から前記機能設定情報を取得し、前記印刷装置の印刷設定を格納するためのデータ構造体に、前記機能設定情報に基づき設定される印刷設定値を割り当てるための領域を確保して、該領域に前記印刷設定値を割り当てるデータ構造割り当て手段と、前記情報記憶手段に記憶された機能設定情報を参照することによって、前記データ構造割り当て手段によって前記データ構造体に割り当てられた印刷設定値から、前記印刷装置が処理可能なデータを生成するデータ生成手段とを有する構成が開示されている。
【０００８】
また、下記特許文献２には、アプリケーションプログラムからの印刷要求を受けてプリンタに印刷させる処理をコンピュータに実行させるプリンタドライバであって、当該コンピュータにインストールされている他のプリンタドライバの設定情報を参照する参照ステップと、参照した設定情報のうち自プリンタドライバの設定に必要な項目の設定値を用いて、自プリンタドライバの設定を行う設定ステップと、をコンピュータに実行させる構成が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−９７５７４号公報
【特許文献２】特開２０１０−１８６３２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
異なる機種向けのプリンタドライバや異なるバージョンのプリンタドライバでも、DEVMODE構造体を利用できるようにするためには、上述したように、元のプリンタドライバのDEVMODE構造体を、新しい機種向け又は新しいバージョンのプリンタドライバに対応するDEVMODE構造体に変換（コンバート）する必要があるが、DEVMODE構造体はハードコード（Ｃ言語）で記述されているため、容易にコンバートすることができない。
【００１１】
また、異なる機種向けのプリンタドライバや異なるバージョンのプリンタドライバのDEVMODE構造体からコンバートするためには、元の機種向けのプリンタドライバの構造体定義や元のバージョンのプリンタドライバの構造体定義を保持している必要がある。そのため、複数の機種向けのプリンタドライバや複数のバージョンのプリンタドライバが存在する状況では、保持すべき情報が膨大になってしまう。
【００１２】
また、コンバート元が古い機種向けのプリンタドライバや古いバージョンのプリンタドライバの場合には、構造体定義を予知することは可能であるが、コンバート元が新しい機種向けのプリンタドライバや新しいバージョンのプリンタドライバの場合には、構造体定義を予知することは困難である。
【００１３】
本発明は、上記問題点に鑑みてなされたものであって、その主たる目的は、異なる機種向けのプリンタドライバや異なるバージョンのプリンタドライバでも利用可能なデータ構造体（DEVMODE構造体）を生成することができる情報処理装置、プリンタドライバ及び印刷設定方法並びにデータ構造体を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本発明の情報処理装置は、印刷装置に備える機能に関わる機能情報を保持する記憶部と、前記機能情報に基づいて、前記機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成する生成部と、を備え、前記生成部は、前記データ部に、前記印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持するものである。
【００１５】
また、本発明は、印刷装置に印刷を指示する装置で動作するプリンタドライバであって、前記装置を、予め記憶した、前記印刷装置に備える機能に関わる機能情報に基づいて、前記機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成する生成部、として機能させ、前記生成部は、前記データ部に、自プリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持するものである。
【００１６】
また、本発明は、印刷装置に印刷を指示する装置における印刷設定方法であって、予め記憶した、前記印刷装置に備える機能に関わる機能情報に基づいて、前記機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成する生成ステップを実行し、前記生成ステップでは、前記データ部に、前記印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持するものである。
【００１７】
また、本発明は、印刷装置に印刷を指示する装置で生成されるデータ構造体であって、前記印刷装置に備える機能に対する設定値の実データを保持するデータ部と、前記設定値の実データにアクセスするための情報を保持するインデックス部と、を含み、前記データ部は、前記印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を有するものである。
【発明の効果】
【００１８】
本発明の情報処理装置、プリンタドライバ及び印刷設定方法並びにデータ構造体によれば、異なる機種向けのプリンタドライバや異なるバージョンのプリンタドライバでも利用可能なデータ構造体（DEVMODE構造体）を生成することができる。
【００１９】
その理由は、印刷装置に印刷を指示する情報処理装置（プリンタドライバ）では、予め記憶した印刷装置の機能に関わる機能情報に基づいて、機能に対する設定値の実データを保持するデータ部と、設定値の実データにアクセスするための情報を保持するインデックス部と、を含むデータ構造体を生成し、データ部に、印刷装置に印刷を指示するプリンタドライバの設定値に加えて、異なる機種の印刷装置に印刷を指示するプリンタドライバ及び／又は異なるバージョンのプリンタドライバが利用可能な設定値を保持するからである。
【００２０】
また、印刷装置に印刷を指示する情報処理装置（プリンタドライバ）では、予め生成されたデータ構造体に保持された設定値を読み込み、当該設定値を自装置のプリンタドライバに引継ぐための、機能ごとの設定値の互換性を判別し、変換が必要と判断された場合に、自プリンタドライバが識別可能な設定値に変換し、データ構造体に、変換された設定値を書き込む処理を行うからである。
【００２１】
これにより、private DEVMODEを生成したプリンタドライバに関する情報が無くて、そのプリンタドライバによって生成されたDEVMODE構造体を、異なる機種の印刷装置を制御するプリンタドライバや異なるバージョンのプリンタドライバが読み込むことができる。また、private DEVMODEに設けるIndex部は、全機種の印刷装置を制御するプリンタドライバに共通の形式であり固定長であるため、DEVMODE構造体から所望の設定値を容易に検索することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施例に係る印刷システムの構成を模式的に示す図である。
【図２】本発明の一実施例に係る情報処理装置の構成を示すブロック図である。
【図３】本発明の一実施例に係るプリンタドライバの構成を示すブロック図である。
【図４】本発明の一実施例に係るDEVMODE構造体の概略構成を示す図である。
【図５】本発明の一実施例に係るDEVMODE構造体の詳細構成を示す図である。
【図６】本発明の一実施例に係るDEVMODE構造体を生成する手順を模式的に示す図である。
【図７】本発明の一実施例に係る機能設定情報の一例である。
【図８】本発明の一実施例に係る機能設定情報（Stapleの機能Version:1の場合）の一例である。
【図９】StapleのConvert Informationの一例である。
【図１０】StapleのConvert Informationの他の例である。
【図１１】本発明の一実施例に係るStapleの機能Version:3の設定ＵＩの一例である。
【図１２】本発明の一実施例に係るStapleの機能Version:1の設定ＵＩの一例である。
【図１３】本発明の一実施例に係る設定値の書き込み処理を模式的に示す図である。
【図１４】本発明の一実施例に係る設定値のコンバート処理（古い機能Version→新しい機能Version）を模式的に示す図である。
【図１５】本発明の一実施例に係る設定値のコンバート処理（新しい機能Version→古い機能Version）を模式的に示す図である。
【図１６】本発明の一実施例に係る設定値のコンバート処理（機能Versionの互換範囲内）を模式的に示す図である。
【図１７】本発明の一実施例に係るPrivate DEVMODEの生成処理を示すフローチャート図である。
【図１８】本発明の一実施例に係るData部の初期化処理を示すフローチャート図である。
【図１９】本発明の一実施例に係る設定値の書き込み処理を示すフローチャート図である。
【図２０】本発明の一実施例に係る設定値の読み込み処理を示すフローチャート図である。
【図２１】本発明の一実施例に係る設定値のコンバート処理を示すフローチャート図である。
【図２２】本発明の一実施例に係る設定値のコンバート時の動作表の一例である。
【発明を実施するための形態】
【００２３】
背景技術で示したように、プリンタドライバを用いて印刷する際、DEVMODE構造体と呼ばれるデータ構造体が生成され、DEVMODE構造体を文書ファイルに関連付けることによって、この文書ファイルを再度印刷する場合には、前回の印刷設定を引き継ぐことができる。しかしながら、DEVMODE構造体は印刷を指示したプリンタドライバに依存する情報であるため、異なる機種の印刷装置向けのプリンタドライバや異なるバージョンのプリンタドライバでは、DEVMODE構造体の印刷設定を引き継ぐことができず、印刷操作が煩雑になるという問題があった。また、異なる機種の印刷装置向けのプリンタドライバや異なるバージョンのプリンタドライバが利用できるようにするために、DEVMODE構造体をコンバートする方法があるが、DEVMODE構造体はハードコード（Ｃ言語）で記述されているため、容易にコンバートすることができないという問題があった。
【００２４】
ここで、DEVMODE構造体は、Mircosoft（登録商標）が定義している各プリンタベンダで共通定義となるPublic DEVMODEと、各プリンタベンダが自由に定義することのできるPrivate DEVMODEとで構成されるが、本発明の一実施の形態では、private DEVMODEをIndex部とData部とで構成し、Data部には、現在のプリンタドライバの各種設定情報のみを書き込むのではなく、異なる機種の印刷装置向けのプリンタドライバや異なるバージョンのプリンタドライバが利用可能な各種設定情報（例えば、各機能の古いバージョンの設定値）も書き込み、Index部には、各機種の印刷装置向けのプリンタドライバや各バージョンのプリンタドライバが各種設定情報を読み込む際に、Data部のどこにアクセスすればよいかを規定するアドレス情報を書き込む。
【００２５】
これにより、異なる機種の印刷装置向けのプリンタドライバや異なるバージョンのプリンタドライバでも、DEVMODE構造体の書き込まれた設定情報を容易に引き継ぐことができるため、印刷操作を簡便にすることができる。
【実施例】
【００２６】
上記した本発明の実施の形態についてさらに詳細に説明すべく、本発明の一実施例に係る情報処理装置、印刷設定プログラム及び印刷設定方法並びにデータ構造体について、図１乃至図２２を参照して説明する。図１は、本実施例の印刷システムの構成を模式的に示す図であり、図２は、本実施例の情報処理装置の構成を示すブロック図、図３は、本実施例のプリンタドライバの構成を示すブロック図である。また、図４及び図５は、本実施例のDEVMODE構造体の構成を示す図であり、図６は、DEVMODE構造体を生成する手順を模式的に示す図である。また、図７及び図８は、本実施例の機能設定情報の一例であり、図９及び図１０は、StapleのConvert Informationの一例である。また、図１１及び図１２は、本実施例の設定ＵＩの一例であり、図１３は、設定値の書き込み処理を模式的に示す図、図１４乃至図１６は、設定値のコンバート処理を模式的に示す図である。また、図１７乃至図２１は、本実施例の情報処理装置で実行される処理を示すフローチャート図であり、図２２は、設定値のコンバート時の動作表の一例である。
【００２７】
図１に示すように、本実施例の印刷システム１０は、文書作成アプリケーションで作成した文書の印刷を指示する１又は複数のクライアント装置（以下、情報処理装置２０と呼ぶ。）と、情報処理装置２０からの指示に基づいて印刷を実行するプリンタやデジタル複合機などの１又は複数の印刷装置（以下、画像形成装置３０と呼ぶ。）と、で構成される。情報処理装置２０と画像形成装置３０とは、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）などの通信ネットワークを介して接続されている。以下、各装置について詳細に説明する。
【００２８】
〔情報処理装置〕
図２に示すように、情報処理装置２０は、制御部２１と、記憶部２２と、操作部２３と、表示部２４と、通信Ｉ／Ｆ部２５などで構成される。
【００２９】
制御部２１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）などで構成され、ＣＰＵは、ＯＳ（Operating System）や文書作成アプリケーション、画像形成装置３０を制御するためのデバイスドライバ（プリンタドライバ）をＲＯＭ又は記憶部から読み出してＲＡＭに展開し実行する。
【００３０】
記憶部２２は、ＨＤＤ（Hard Disk Drive）などで構成され、プログラムやデータを記憶する。本実施例では、特に、DEVMODE構造体を生成する際に参照する機能設定情報などを記憶する。
【００３１】
操作部２３は、キーボードやマウスなどで構成され、文書の作成や印刷に関する設定操作を可能とする。
【００３２】
表示部２４は、ＬＣＤ（Liquid Crystal Display）などで構成され、プリンタドライバの設定画面などを表示する。
【００３３】
通信Ｉ／Ｆ部２５は、ＮＩＣ（Network Interface Card）やモデムなどで構成され、画像形成装置３０との通信を可能とする。
【００３４】
また、図３に示すように、上記プリンタドライバは、情報処理装置２０の制御部２１を、印刷設定情報処理部、ＵＩ（User Interface）処理部、レンダリング処理部などとして機能させる。
【００３５】
上記印刷設定情報処理部は、DEVMODE処理実行部とDEVMODE処理実行部が参照するデータベースとで構成される。DEVMODE処理実行部は、Private DEVMODEを動的に生成するPrivate DEVMODE生成部と、Private DEVMODEに設定されている設定値を読み込む設定値読み込み部と、Private DEVMODEに設定値を書き込む設定値書き込み部と、設定値の互換性を判別する互換性判別部と、入力されたPrivate DEVMODEの設定値を自装置の現在のバージョンのプリンタドライバに対する設定値に変換するコンバート部と、で構成される。また、データベースは、DEVMODE構造体に記述されたDEVMODE情報、機能間の組み合わせ禁止条件を記述した禁則情報、各機種の画像形成装置３０が持つ機能の情報（機能、設定可能な値、バージョンなど）を含む機能設定情報などを保持する。
【００３６】
ＵＩ処理部は、アプリケーションからDEVMODE情報を受け取り、印刷設定画面の表示を行う。印刷設定画面の表示に際しては、DEVMODE処理実行部にDEVMODE情報を渡し、DEVMODE解釈を行わせたうえで機能ごとの設定値を取得して印刷設定画面に反映する。印刷設定画面でユーザがDEVMODE情報の変更を行った場合は、DEVMODE処理実行部に対して設定値の書き込みを依頼し、DEVMODE情報を更新する。処理終了後には、変更済みのDEVMODE情報をアプリケーションに返す。
【００３７】
また、ＵＩ処理部は、印刷設定画面を開くことなくDEVMODE処理実行部に対してDEVMODE情報を渡し、制御する画像形成装置３０の機種やバージョンが異なるプリンタドライバが生成したDEVMODE情報であった場合には、自装置での現在のバージョンのプリンタドライバに対するDEVMODE情報にコンバート部にてコンバートさせ、コンバート後のDEVMODE情報をアプリケーションに返す処理を行う。また、ＵＩ処理部は、印刷設定画面を開くことなく、初期値にてDEVMODE情報を生成し、生成後のDEVMODE情報をアプリケーションに返す処理も行う。
【００３８】
レンダリング処理部は、アプリケーションから取得したDEVMODE情報及び描画データに基づいて、画像形成装置３０にて解釈可能な描画データの生成を行う。また、描画データ生成時に、DEVMODE処理実行部にDEVMODE情報を渡し、DEVMODE情報の解釈を行わせたうえで機能ごとの設定値を取得してＰＪＬ（Printer Job Language）やＰＤＬ処理を行う。
【００３９】
なお、図１では、情報処理装置２０としてパーソナルコンピュータを示しているが、情報処理装置２０は画像形成装置３０を制御可能な機器であればよい。また、図３では、プリンタドライバに、印刷設定情報管理部、ＵＩ処理部、レンダリング処理部としての機能を持たせる構成としたが、これらの内の少なくとも一つは情報処理装置２０にハードウェアとして構成してもよい。
【００４０】
〔画像形成装置〕
画像形成装置３０は、制御部と、記憶部と、ネットワークＩ／Ｆ部と、表示操作部と、画像処理部と、印刷処理部と、後処理部などで構成され（図示せず）、これらはバスを介して接続されている。
【００４１】
制御部は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成され、ＣＰＵは各種プログラムをＲＯＭ又は記憶部から読み出してＲＡＭに展開し実行する。
【００４２】
記憶部は、ＨＤＤなどで構成され、画像形成装置３０の動作を制御するプログラムや情報処理装置２０から取得した印刷ジョブなどを記憶する。
【００４３】
ネットワークＩ／Ｆ部は、ＮＩＣやモデムなどで構成され、情報処理装置２０との通信を可能とする。
【００４４】
表示操作部は、ＬＣＤなどの表示部と表示部を覆うタッチパネルなどの操作部から構成され、ＣＰＵからの表示信号に従って、アイコンやキーボタンなどをＬＣＤ等に表示すると共に、タッチパネル等から入力される操作信号をＣＰＵに出力する。
【００４５】
画像処理部は、情報処理装置２０から受信した印刷ジョブを解析し、文書の各ページの画像データを作成し、必要に応じて、作成した画像データに色変換、濃度調整等の画像処理を施す。
【００４６】
印刷処理部は、電子写真方式や静電記録方式等の作像プロセスを利用した画像形成に必要な構成要素で構成され、画像処理部で作成された画像データに基づいて、指定された用紙に画像を形成する。
【００４７】
後処理部は、印刷処理部が画像を形成した用紙に対して、ステープルやパンチ、N-upなどの後処理を行う。
【００４８】
なお、画像形成装置３０は、情報処理装置２０の指示に従って印刷可能であればよく、その構成は特に限定されない。また、本実施例では、情報処理装置２０が画像形成装置３０に印刷指示を行う構成とするが、プリンタコントローラなどの制御装置を通信ネットワークに接続し、情報処理装置２０がプリンタコントローラに印刷指示を行う構成としてもよい。
【００４９】
次に、本実施例のDEVMODE構造体について、図４を参照して説明する。DEVMODE構造体は、Mircosoft（登録商標）が定義している各プリンタベンダで共通定義となるPublic DEVMODEと、各プリンタベンダが自由に定義することのできるPrivate DEVMODEという大きなブロックで構成される。Private DEVMODEは、設定値の項目、保存場所へのアドレスオフセット値などを保持するIndex部（全て機種向けのプリンタドライバに共通のデータ構造）と、実際の設定値を保持するData部とで構成される。また、Index部は、画像形成装置３０の機種、プリンタドライバのVersion、Index Tableのサイズなどを保持するHeaderと、機能の識別子、Data Type、設定値の保存場所へのアドレスオフセット値、機能Version、互換性情報（設定値が互換性を有する機能Versionの範囲の情報：機能Compatibilityと呼ぶ。）などを保持するIndex Tableとで構成される。
【００５０】
すなわち、従来のDEVMODE構造体のPrivate DEVMODEはData部のみで構成され、Data部には、現在のプリンタドライバの設定値が格納されていたが、本実施例では、Private DEVMODEにIndex部を追加し、Data部に、現在のプリンタドライバの設定値と、異なる機種の画像形成装置３０を制御するプリンタドライバや異なるバージョンのプリンタドライバが利用可能な設定値を格納し、Index部には、各プリンタドライバがData部のどの情報を参照すればよいかを指示するアドレス情報を格納する。これにより、Private DEVMODEのハードコードでの構造体定義が不要となり、異なる機種の画像形成装置３０を制御するプリンタドライバや異なるバージョンのプリンタドライバであっても、Private DEVMODEの読み込みが可能となる。
【００５１】
図５は、DEVMODE構造体の実際のデータを模式化した図である。Index部のHeaderには、画像形成装置３０の機種名、プリンタドライバのVersion、Index部のサイズなどが格納される。また、Index部のIndex Tableには、機能を識別する機能ID、設定値のデータ型を示すData Type、Data部の先頭からの設定値の保持場所へのオフセットを示すAddress Offset、機能Version、機能の互換性を示す機能Compatibilityなどから構成されるレコードが格納される。
【００５２】
図中の機能Compatibility:0x0301は、機能Version:1から機能Version:3の範囲において設定値が互換性を有することを示している。また、Data部の先頭アドレスの600は、Index部のHeaderに保持されている400という値を元に（すなわち、Index部の先頭アドレスの200にIndex部のサイズ400を加算して）算出される。この図では、アドレスが616番地（Data部の先頭からは16番地）にStapleの設定値IDで特定される設定値が保管される。
【００５３】
Stapleの機能IDを例にして説明すると、Index Table内に２つのレコードが存在する。機能Version:3のレコードは、現在の機能Versionの設定値に関するレコードであり、機能Version:1のレコードは、古い機能Versionの設定値に関するレコードである。設定値については、Data部の先頭からのAddressが16のものが現在の機能Versionの設定値であり、Data部の先頭からのAddressが20のものが古い機能Versionの設定値である。
【００５４】
上述したDEVMODE処理実行部（Private DEVMODE生成部）が、上記構成のDEVMODE構造体を生成する場合、まず、図６（ａ）に示すように、必要十分なPrivate DEVMODEの領域を確保する。次に、図６（ｂ）に示すように、Private DEVMODEのIndex部（HeaderおよびIndex Table）を生成する。そして、図６（ｃ）に示すように、Data部に設定値の書き込みを行う。
【００５５】
図７は、Private DEVMODEに設定値を書き込む際に参照する機能設定情報の一例であり、プリンタドライバが設定可能な全ての機能の情報が保持される。以下、Stapleの機能情報を例にして説明する。機能IDは、機能を識別するIDである。表では「Staple(16)」と記載しているが、実際に保持されるのは"16"という数値である。機能Versionは、現在の機能のVersionを示す数値である。Data Typeは、設定値のデータ型である。UINT（4Byte）等の値の他、String（32文字）等のデータ型も取り得る。Default Valueは、デフォルトの設定値IDである。設定値IDは、設定可能な設定値の一覧である。機能Compatibilityは、特定の機能IDの選択肢が互換性を持つVersion範囲の情報である。例えば、0x0302は機能VersionがVersion:2からVersion:3の間で設定値IDが互換性を有することを示す。Convert Informationは、異なる機能Versionの間での設定値の変換情報のテーブルである。このテーブルには、古い機能Versionから新しい機能Version（現在の機能Version）、新しい機能Versionから古い機能Versionの設定値の変換情報が記述される。
【００５６】
設定値の保存を行う際には、Convert Informationを元にして、古い機能Versionの設定値（Old Version）の生成、保存を行う。これによって、DEVMODE単位での大量のコンバート情報の保持が不要となり、古いVersion→新しいVersion、新しいVersion→古いVersionの両方への設定値のコンバートが可能となる。
【００５７】
図８は、機能設定情報（Stapleの機能Version:1の場合）の一例である。図７に示すStaple（機能Version:3）の場合とは、Data Type、設定値ID、機能Compatibilityなどが異なる。
【００５８】
図９は、StapleのConvert Informationの一例である。機能Versionは、特定の範囲から特定の範囲への設定値の変換情報を持つ。例えば、From:0x0101、To:0x0302は、機能Versionが1〜1の範囲を、機能Versionが2〜3の範囲へ変換する場合を意味する。Data Typeは、変換元と変換先のデータ型を定義する。設定値IDは、変換元と変換先のデータをマッピングする。
【００５９】
図１０は、StapleのConvert Informationの他の例（別法）である。図９との違いは、設定値IDを置き換えではなく、演算式によって生成することである。
【００６０】
図１１及び図１２は、Stapleの機能Version:3の時と機能Version:1の時の設定ＵＩの一例である。図に示すように、同一機能においても、ユーザの利便性を向上させるためにＵＩ構成や設定値の取り方に差が生じる。設定値IDについては、図７、図８のような変更が加えられている。この例では、機能Version:2になった際に、StapleのOn/OffとStapleのモードを独立項目として扱うように変更されている。
【００６１】
以下、プリンタドライバの具体的処理について説明する。
【００６２】
［Private DEVMODEの生成処理］
図１３は、Private DEVMODEの生成処理の概要図であり、（１）〜（４）の手順でPrivate DEVMODEを生成する。
（１）書き込み依頼元よりStapleの設定値を0x00030001で書き込み依頼を行う。書き込み依頼元はＵＩ処理部などである。
（２）DEVMODE処理実行部において、Staple機能の現在の機能Versionの設定値をData部に書き込む。
（３）DEVMODE処理実行部において、機能設定情報のConvert Informationに古い機能Versionへの変換情報が存在するため、設定値を古い機能Versionの設定値に変換する。
（４）DEVMODE処理実行部において、Staple機能の古い機能Versionの設定値をData部に書き込む。
【００６３】
上記処理について、図１７乃至図１９のフローチャート図を参照して説明する。なお、図１７は、DEVMODE処理実行部のPrivate DEVMODE生成部が行うPrivate DEVMODE生成処理を示すフローチャート図であり、図１８は、図１７のData部の初期化処理の詳細を示すフローチャート図、図１９は、図１８の設定値の書き込み処理の詳細を示すフローチャート図である。
【００６４】
図１７に示すように、まず、DEVMODE構造体のAddress Offsetを”0”で初期化する（Ｓ１０１）。次に、機能設定情報から機能情報を読み込み（Ｓ１０２）、現在の機能Version用のIndex Tableのレコードを生成して（Ｓ１０３）、Address OffsetにData Sizeを足す（Ｓ１０４）。次に、Convert Informationが存在するかを判断し（Ｓ１０５）、Convert Informationが存在しない場合は、Ｓ１１１に遷移する。
【００６５】
Convert Informationが存在する場合は、Convert Informationを読み込み（Ｓ１０６）、古い機能VersionへのConvert Informationであるかを判断する（Ｓ１０７）。古い機能VersionへのConvert Informationでない場合は、Ｓ１１０に遷移し、古い機能VersionへのConvert Informationである場合は、古い機能Version用のIndex Tableを生成し（Ｓ１０８）、Address OffsetにData Sizeを足す（Ｓ１０９）。その後、次のConvert Informationが存在するかを判断し（Ｓ１１０）、次のConvert Informationが存在する場合はＳ１０６に戻って同様の処理を繰り返す。
【００６６】
次のConvert Informationが存在しない場合は、機能設定情報の次の機能情報が存在するかを判断し（Ｓ１１１）、次の機能情報が存在する場合はＳ１０２に戻って同様の処理を繰り返す。次の機能情報が存在しない場合は、Headerを生成し（Ｓ１１２）、Private DEVMODEのIndex部にHeader、Index Tableを書き込み（Ｓ１１３）、Private DEVMODEのData部を、Address Offsetのサイズで確保する（Ｓ１１４）。その後、後述するData部の初期化処理を行う（Ｓ１１５）。
【００６７】
Data部の初期化処理（Ｓ１１５）では、図１８に示すように、機能設定情報から、機能情報を読み込み（Ｓ２０１）、後述するData部への設定値の書き込みを行う（Ｓ２０２）。その後、機能設定情報に次の機能情報が存在するかを判断し（Ｓ２０３）、次の機能情報が存在する場合はＳ２０１に戻って同様の処理を繰り返す。
【００６８】
Data部への設定値の書き込み処理（Ｓ２０２）では、図１９に示すように、機能設定情報から、設定値を書き込む機能の機能情報を読み込む（Ｓ３０１）。次に、Index Tableより、書き込み対象の機能ID、現在の機能Versionのレコードを取得する（Ｓ３０２）。次に、Data部の書き込み場所のアドレスをAddress Offsetから算出する（Ｓ３０３）。そして、算出したアドレスに設定値の書き込みを行う（Ｓ３０４）。
【００６９】
次に、Convert Informationが存在するかを判断し（Ｓ３０５）、Convert Informationが存在しない場合は、書き込み処理を終了する。Convert Informationが存在する場合は、Convert Informationを読み込み（Ｓ３０６）、古い機能VersionへのConvert Informationであるかを判断する（Ｓ３０７）。古い機能VersionへのConvert Informationでない場合は、Ｓ３１２に遷移し、古い機能VersionへのConvert Informationである場合は、Convert Informationより、古い機能Versionの設定値を生成する（Ｓ３０８）。次に、Index Tableより、書き込み対象の機能ID、現在の機能Versionのレコードを取得し（Ｓ３０９）、Data部の書き込み場所のアドレスをAddress Offsetから算出し（Ｓ３１０）、算出したアドレスに古い機能Versionの設定値を書き込む（Ｓ３１１）。その後、次のConvert Informationが存在するかを判断し（Ｓ３１２）、次のConvert Informationが存在する場合はＳ３０６に戻って同様の処理を繰り返す。
【００７０】
このように、DEVMODE構造体のPrivate DEVMODEをIndex部とData部とで構成し、現在のプリンタドライバがPrivate DEVMODEを生成する際に、Data部に、現在のプリンタドライバの各機能の設定値に加えて、古いバージョンの各機能の設定値を書き込み、Index部に、各設定値にアクセスするためのAddress Offsetを書き込むことにより、そのDEVMODE構造体を、異なる機種の画像形成装置３０を制御するプリンタドライバや異なるバージョンのプリンタドライバでも利用可能にすることができる。
【００７１】
以上、DEVMODE構造体を新たに生成する場合について説明したが、以下では、予め生成されたDEVMODE構造体を他のプリンタドライバが利用する場合について説明する。
【００７２】
［設定値のコンバート処理］
図１４は、古い機能Versionの設定値を新しい機能Versionの設定値にコンバートする場合の概要図である。このケースは、新しい機種の画像形成装置３０を制御するプリンタドライバ、若しくは、新しいバージョンのプリンタドライバがDEVMODE構造体を利用するケースであり、DEVMODE構造体を利用する時にコンバート処理を行い、自身のプリンタドライバに対応する値に変換する。なお、一切のコンバート処理は、DEVMODE構造体を利用するプリンタドライバの印刷設定情報処理部にて実施される。
（１）変換元のPrivate DEVMODEのIndex部のIndex Tableより、変換先の保持する機能（そのDEVMODE構造体を利用するプリンタドライバが制御する画像形成装置３０で設定可能な機能）と同一の機能IDのレコードを取得する。
（２）レコード内のAddress Offsetより、設定値IDを取得する。
（３）変換先のConvert Informationより、変換元の機能Versionから現在の機能Versionに対応する設定値IDへの変換を行う。
（４）取得した設定値IDを変換先のPrivate DEVMODEのData部に書き込む。
【００７３】
図１５は、新しい機能Versionの設定値を古い機能Versionの設定値にコンバートする場合の概要図である。このケースは、古い機種の画像形成装置３０を制御するプリンタドライバ、若しくは、古いバージョンのプリンタドライバがDEVMODE構造体を利用するケースであり、DEVMODE構造体を利用する時にコンバート処理を行い、自身のプリンタドライバに対応する値に変換する。なお、上記と同様に、一切のコンバート処理は、DEVMODE構造体を利用するプリンタドライバの印刷設定情報処理部にて実施される。
（１）変換元のPrivate DEVMODEのIndex部のIndex Tableより、変換先の保持する機能）と同一の機能IDのレコードを取得する。この場合、取得したレコードの変換元の機能Compatibilityの範囲内に変換先の機能Versionが収まらないので、古い機能Versionのレコードの再取得を次ステップで行う。
（２）変換元のPrivate DEVMODEのIndex部のIndex Tableより、変換先の保持する機能と同一の機能IDかつ機能Versionに対応するレコードを取得する。
（３）レコード内のAddress Offsetより、設定値IDを取得する。
（４）取得した設定値IDを変換先のPrivate DEVMODEのData部に書き込む。
【００７４】
図１６は、機能Versionの互換範囲内の場合の概要図である。このケースは、異なる機種の画像形成装置３０を制御するプリンタドライバ、若しくは、異なるバージョンのプリンタドライバがDEVMODE構造体を利用するケースであるが、機能Versionの互換範囲内であるため、自身のプリンタドライバに対応する値に変換する必要はない。
（１）変換元のPrivate DEVMODEのIndex部のIndex Tableより、変換先の保持する機能と同一の機能IDのレコードを取得する。
（２）レコード内のAddress Offsetより、設定値IDを取得する。
（３）取得した設定値IDは機能Versionの互換範囲内であるため、そのまま変換先のPrivate DEVMODEのData部に書き込む。
【００７５】
上記処理について、図２０及び図２１のフローチャート図を参照して説明する。なお、図２０は、Data部からの設定値の読み込み処理を示すフローチャート図であり、図２１は、設定値のコンバート処理を示すフローチャート図である。
【００７６】
まず、DEVMODE処理実行部の設定読み込み部は、図２０に示す設定値の読み込み処理を行う。具体的には、コンバート元のPrivate DEVMODEのIndex部のIndex Tableより、読み込み対象の機能ID、現在の機能Versionのレコードを取得する（Ｓ４０１）。次に、Data部の読み込み場所のアドレスをAddress Offsetから算出する（Ｓ４０２）。そして、Data部からその機能ID、機能Versionに対応する設定値を読み込む（Ｓ４０３）。
【００７７】
その後、DEVMODE処理実行部のコンバート部及び設定書き込み部は、図２１に示す設定値のコンバート処理を行い、設定値の書き込みを行う。具体的には、その設定値を利用するプリンタドライバが、コンバート元のPrivate DEVMODEを生成したプリンタドライバと、同一の機種の画像形成装置３０を制御するプリンタドライバであるか、若しくは、同一のVersionのプリンタドライバであるかを判断する（Ｓ５０１）。同一機種若しくは同一Versionの場合は、Private DEVMODEをコピーし（Ｓ５０２）、処理を終了する。同一機種若しくは同一のVersionでない場合は、コンバート先の機能設定情報から機能情報を読み込み（Ｓ５０３）、コンバート元のPrivate DEVMODEのIndex部のIndex Tableに同一の機能IDが存在するかを判断する（Ｓ５０４）。同一の機能IDが存在しない場合は、コンバート先の機能設定情報からDefault Valueを取得し（Ｓ５０５）、コンバート先のPrivate DEVMODEに取得した設定値を書き込む（Ｓ５１９）。
【００７８】
同一の機能IDが存在する場合は、コンバート元のPrivate DEVMODEのIndex部のIndex Tableから最新の機能Versionのレコードを取得し（Ｓ５０６）、コンバート先の機能Versionがコンバート元の機能Versionよりも新しいかを判断する（Ｓ５０７）。
【００７９】
コンバート先の機能Versionが新しいか、若しくは、コンバート元の機能Versionと同じ場合は、コンバート先の機能Compatibilityを取得し（Ｓ５０８）、コンバート元の機能Versionが機能Compatibilityの範囲内であるかを判断する（Ｓ５０９）。機能Compatibilityの範囲内の場合は、コンバート元のPrivate DEVMODEの設定値をData部から取得し（Ｓ５１０）、コンバート先のPrivate DEVMODEに取得した設定値を書き込む（Ｓ５１９）。機能Compatibilityの範囲内でない場合は、コンバート元のPrivate DEVMODEの設定値をData部から取得し（Ｓ５１１）、コンバート先の機能Convert Informationを取得する（Ｓ５１２）。そして、コンバート元から取得した設定値をコンバート先の機能Versionの値に変換し（Ｓ５１３）、コンバート先のPrivate DEVMODEに変換した設定値を書き込む（Ｓ５１９）。
【００８０】
一方、Ｓ５０７でコンバート元の機能Versionが新しい場合は、コンバート元のPrivate DEVMODEのIndex部のIndex Tableから機能Compatibilityを取得し（Ｓ５１４）、コンバート先の機能Versionが機能Compatibilityの範囲内であるかを判断する（Ｓ５１５）。機能Compatibilityの範囲内の場合は、コンバート元のPrivate DEVMODEの設定値をData部から取得し（Ｓ５１６）、コンバート先のPrivate DEVMODEに取得した設定値を書き込む（Ｓ５１９）。機能Compatibilityの範囲内でない場合は、コンバート元のIndex Tableからコンバート先の機能Versionに対応するレコードを取得し（Ｓ５１７）、コンバート元のPrivate DEVMODEの設定値（コンバート先の機能Versionに対応する設定値）をData部から取得し（Ｓ５１８）、コンバート先のPrivate DEVMODEに取得した設定値を書き込む（Ｓ５１９）。
【００８１】
その後、機能設定情報の次の機能情報が存在するかを判断し（Ｓ５２０）、次の機能情報が存在する場合はＳ５０３に戻って同様の処理を繰り返す。
【００８２】
このように、コンバート元の機能Versionとコンバート先の機能Versionが異なる場合に、機能Compatibilityを利用して設定値をコンバートすることにより、予め生成したDEVMODE構造体を、異なる機種の画像形成装置３０を制御するプリンタドライバや異なるバージョンのプリンタドライバでも利用することができるようになる。
【００８３】
図２２は、設定値のコンバート時の動作をコンバート元（機種B）、コンバート先（機種A）の機能Version、機能Compatibilityごとに表した動作表である。
【００８４】
図２２より、コンバート元の機能Versionとコンバート先の機能Versionが共に１の場合（ケース１参照）、コンバート元の設定値をコンバート先でそのまま利用することができる。
【００８５】
コンバート元の機能Versionがコンバート先の機能Versionよりも古い場合（ケース２、４参照）、コンバート先の機種Aの機能Compatibility情報（機種Aの画像形成装置３０を制御するプリンタドライバが保持する機能Compatibility情報）を利用する。コンバート元の機能Versionが機能Compatibilityの範囲内の場合（ケース２）は、設定値をそのまま利用し、機能Compatibilityの範囲外の場合（ケース４）は、Convert Informationを元に機種Bの設定値（機種Bの画像形成装置３０を制御するプリンタドライバが生成したPrivate DEVMODEの設定値）をコンバートして利用する。
【００８６】
コンバート元の機能Versionがコンバート先の機能Versionよりも新しい場合（ケース３、５参照）、コンバート元の機種Bの機能Compatibility情報を利用する。コンバート先の機能Versionが機能Compatibilityの範囲内の場合（ケース３）は、設定値をそのまま利用し、機能Compatibilityの範囲外の場合（ケース５）は、機種Bの設定値（機種Bの画像形成装置３０を制御するプリンタドライバが生成したPrivate DEVMODEのOld Versionの設定値）の値（機種Aの機能Versionに対応するもの）を利用する。
【００８７】
また、コンバート元が機能なし場合（ケース６参照）、コンバート元の情報がないため機種Aのデフォルト値を利用する。また、コンバート先が機能なしの場合（ケース７）は、なにもしない。
【００８８】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨を逸脱しない限りにおいて、その構成や制御は適宜変更可能である。
【産業上の利用可能性】
【００８９】
本発明は、DEVMODE構造体を利用して印刷設定を行う情報処理装置、印刷設定プログラム及び印刷設定方法並びにDEVMODE構造体に利用可能である。
【符号の説明】
【００９０】
１０  印刷システム
２０  情報処理装置
２１  制御部
２２  記憶部
２３  操作部
２４  表示部
２５  通信Ｉ／Ｆ部
３０  画像形成装置
【図１】
0005424134.tif 000002
【図２】
0005424134.tif 000003
【図３】
0005424134.tif 000004
【図４】
0005424134.tif 000005
【図５】
0005424134.tif 000006
【図６】
0005424134.tif 000007
【図７】
0005424134.tif 000008
【図８】
0005424134.tif 000009
【図９】
0005424134.tif 000010
【図１０】
0005424134.tif 000011
【図１１】
0005424134.tif 000012
【図１２】
0005424134.tif 000013
【図１３】
0005424134.tif 000014
【図１４】
0005424134.tif 000015
【図１５】
0005424134.tif 000016
【図１６】
0005424134.tif 000017
【図１７】
0005424134.tif 000018
【図１８】
0005424134.tif 000019
【図１９】
0005424134.tif 000020
【図２０】
0005424134.tif 000021
【図２１】
0005424134.tif 000022
【図２２】
0005424134.tif 000023