(57)【要約】      （修正有）【課題】プリンタドライバとＷｉｎ３２アプリケーションの性能及び品質が向上し、ユーザの利便性を向上させることを可能にする。【解決手段】プリントチケットとＤＥＶＭＯＤＥ構造体とを扱う印刷制御装置において、プリントチケットに基づいて、ＤＥＶＭＯＤＥのパブリック部を構築し（Ｓ１２０２）、また、ＤＥＶＭＯＤＥのプライベート部にプリントチケットを埋め込む（Ｓ１２０５、Ｓ１２０８）。一方、ＤＥＶＭＯＤＥのプライベート部に埋め込まれたプリントチケットを抽出する。【選択図】      図５
2006285870.tif 000002
【特許請求の範囲】
【請求項１】
印刷設定をＸＭＬ形式のプリントチケットで扱うアプリケーションと、印刷設定をバイナリ形式の印刷設定構造体で管理するプリンタドライバとが動作する印刷制御装置において、
前記ＸＭＬ形式のプリントチケットに基づいて、前記バイナリ形式の印刷設定構造体の公開データ部分を構築する構築手段と、
前記バイナリ形式の印刷設定構造体の未公開データ部分に前記ＸＭＬ形式のプリントチケットを埋め込む埋め込み手段と、
前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットを抽出する抽出手段と
を有することを特徴とする印刷制御装置。
【請求項２】
前記埋め込み手段は、
前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空きサイズを取得する取得手段と、
前記取得手段によって取得された空きサイズと前記ＸＭＬ形式のプリントチケットのサイズとを比較する第１の比較手段と、
前記第１の比較手段による比較の結果、前記空きサイズが前記ＸＭＬ形式のプリントチケットのサイズ未満であった場合に、前記ＸＭＬ形式のプリントチケットを圧縮する圧縮手段と
を含むことを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記圧縮手段によって圧縮された前記ＸＭＬ形式のプリントチケットと、前記取得手段によって取得された空きサイズとを比較する第２の比較手段と、
前記第２の比較手段による比較の結果、前記圧縮後の前記ＸＭＬ形式のプリントチケットが前記空きサイズ以下であった場合に、該圧縮後のＸＭＬ形式のプリントチケットを、前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空き領域に格納する第１の格納手段と
を含むことを特徴とする請求項２記載の印刷制御装置。
【請求項４】
前記埋め込み手段は、
前記第１の比較手段による比較の結果、前記空きサイズが前記ＸＭＬ形式のプリントチケットのサイズ以上であった場合に、前記ＸＭＬ形式のプリントチケットを、前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空き領域に格納する第２の格納手段
を更に含むことを特徴とする請求項２または３に記載の印刷制御装置。
【請求項５】
前記埋め込み手段は、
前記第２の比較手段による比較の結果、前記圧縮後の前記ＸＭＬ形式のプリントチケットが前記空きサイズよりも大きかった場合に、該圧縮後の前記ＸＭＬ形式のプリントチケットを、前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空き領域に格納することを中止する中止手段
を更に含むことを特徴とする請求項３記載の印刷制御装置。
【請求項６】
前記抽出手段は、
前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットが圧縮されているか否かを判断する判断手段と、
前記判断手段によって圧縮されていると判断された場合に、前記ＸＭＬ形式のプリントチケットを圧縮状態から展開する展開手段と
を含むことを特徴とする請求項２乃至４のいずれか１項に記載の印刷制御装置。
【請求項７】
前記ＸＭＬ形式のプリントチケットと前記バイナリ形式の印刷設定構造体の公開データ部分とのうち優先すべきデータを決定する決定手段と、
前記決定手段によって前記ＸＭＬ形式のプリントチケットを優先すべきと決定されたとき、前記ＸＭＬ形式のプリントチケットの内容と前記バイナリ形式の印刷設定構造体の公開データ部分の内容とに矛盾があるか否かを判断する判断手段と、
前記判断手段によって矛盾があると判断されたとき、前記バイナリ形式の印刷設定構造体の公開データ部分の内容に基づいて、前記ＸＭＬ形式のプリントチケットを修正する修正手段と
を更に有することを特徴とする請求項１乃至６のいずれかに記載の印刷制御装置。
【請求項８】
印刷設定をＸＭＬ形式のプリントチケットで扱うアプリケーションと、印刷設定をバイナリ形式の印刷設定構造体で管理するプリンタドライバとが動作する印刷制御装置に適用される印刷制御方法において、
前記ＸＭＬ形式のプリントチケットに基づいて、前記バイナリ形式の印刷設定構造体の公開データ部分を構築する構築ステップと、
前記バイナリ形式の印刷設定構造体の未公開データ部分に前記ＸＭＬ形式のプリントチケットを埋め込む埋め込みステップと、
前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットを抽出する抽出ステップと
を有することを特徴とする印刷制御方法。
【請求項９】
前記埋め込みステップは、
前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空きサイズを取得する取得ステップと、
前記取得ステップにおいて取得された空きサイズと前記ＸＭＬ形式のプリントチケットのサイズとを比較する第１の比較ステップと、
前記第１の比較ステップにおける比較の結果、前記空きサイズが前記ＸＭＬ形式のプリントチケットのサイズ未満であった場合に、前記ＸＭＬ形式のプリントチケットを圧縮する圧縮ステップと
を含むことを特徴とする請求項８記載の印刷制御方法。
【請求項１０】
前記圧縮ステップにおいて圧縮された前記ＸＭＬ形式のプリントチケットと、前記取得ステップにおいて取得された空きサイズとを比較する第２の比較ステップと、
前記第２の比較ステップにおける比較の結果、前記圧縮後の前記ＸＭＬ形式のプリントチケットが前記空きサイズ以下であった場合に、該圧縮後のＸＭＬ形式のプリントチケットを、前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空き領域に格納する第１の格納ステップと
を含むことを特徴とする請求項９記載の印刷制御方法。
【請求項１１】
前記埋め込みステップは、
前記第１の比較ステップにおける比較の結果、前記空きサイズが前記ＸＭＬ形式のプリントチケットのサイズ以上であった場合に、前記ＸＭＬ形式のプリントチケットを、前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空き領域に格納する第２の格納ステップ
を更に含むことを特徴とする請求項９または１０に記載の印刷制御方法。
【請求項１２】
前記埋め込みステップは、
前記第２の比較ステップにおける比較の結果、前記圧縮後の前記ＸＭＬ形式のプリントチケットが前記空きサイズよりも大きかった場合に、該圧縮後の前記ＸＭＬ形式のプリントチケットを、前記バイナリ形式の印刷設定構造体の未公開データ部分を格納すべきメモリ領域の空き領域に格納することを中止する中止ステップ
を更に含むことを特徴とする請求項１０記載の印刷制御方法。
【請求項１３】
前記抽出ステップは、
前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットが圧縮されているか否かを判断する判断ステップと、
前記判断ステップによって圧縮されていると判断された場合に、前記ＸＭＬ形式のプリントチケットを圧縮状態から展開する展開ステップと
を含むことを特徴とする請求項９乃至１１のいずれか１項に記載の印刷制御方法。
【請求項１４】
前記ＸＭＬ形式のプリントチケットと前記バイナリ形式の印刷設定構造体の公開データ部分とのうち優先すべきデータを決定する決定ステップと、
前記決定ステップにおいて前記ＸＭＬ形式のプリントチケットを優先すべきと決定されたとき、前記ＸＭＬ形式のプリントチケットの内容と前記バイナリ形式の印刷設定構造体の公開データ部分の内容とに矛盾があるか否かを判断する判断ステップと、
前記判断ステップにおいて矛盾があると判断されたとき、前記バイナリ形式の印刷設定構造体の公開データ部分の内容に基づいて、前記ＸＭＬ形式のプリントチケットを修正する修正ステップと
を更に有することを特徴とする請求項８乃至１３のいずれかに記載の印刷制御方法。
【請求項１５】
印刷設定をＸＭＬ形式のプリントチケットで扱うアプリケーションと、印刷設定をバイナリ形式の印刷設定構造体で管理するプリンタドライバとが動作する印刷制御装置に適用される印刷制御方法を、コンピュータに実行させるためのプログラムにおいて、
前記ＸＭＬ形式のプリントチケットに基づいて、前記バイナリ形式の印刷設定構造体の公開データ部分を構築する構築ステップと、
前記バイナリ形式の印刷設定構造体の未公開データ部分に前記ＸＭＬ形式のプリントチケットを埋め込む埋め込みステップと、
前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットを抽出する抽出ステップと
を有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御方法、及びプログラムに関し、特に、印刷設定をＸＭＬ形式のプリントチケットで扱うアプリケーションと、印刷設定をバイナリ形式の印刷設定構造体で管理するプリンタドライバとが動作する印刷制御装置、該印刷制御装置に適用される印刷制御方法、及び該印刷制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
従来、マイクロソフト社のオペレーティングシステム（ＯＳ）であるＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓ（登録商標）のプリンティング環境において、Ｗｉｎ３２アプリケーションが使用するＤＥＶＭＯＤＥ構造体と呼ばれるメモリブロックが、印刷設定指示データとして重要な役割を担っている。
【０００３】
図８は、ＤＥＶＭＯＤＥ構造体の全体構成を示す図である。
【０００４】
ＤＥＶＭＯＤＥ構造体は、デバイスの初期化やプリンタの環境に関する情報を保持するメモリ領域であって、その特徴は、仕様が公開されているパブリック部３０１と、仕様が公開されてなく、プリンタドライバのみがアクセス可能なプライベート部３０２との２つの領域から構成されることにある。一般に、ＤＥＶＭＯＤＥ構造体のパブリック部３０１には、用紙、用紙の向き、解像度などのごく基本部分のみが記述され、大部分を占める残りの部分はプライベート部３０２に記述される。
【０００５】
図９は、図８に示すＤＥＶＭＯＤＥ構造体のパブリック部３０１の構成を示す図である。
【０００６】
図９においてメンバ「dmDeviceName」は、プリンタドライバがサポートするデバイス名を指定する。
【０００７】
メンバ「dmSpecVersion」は、ＤＥＶＭＯＤＥ構造体の基準になった初期化データ仕様のバージョン番号を指定する。
【０００８】
メンバ「dmDriverVersion」は、プリンタドライバの開発者が割り当てたプリンタドライバのバージョン番号を指定する。
【０００９】
メンバ「dmSize」は、dmDriverData (デバイス固有の情報) メンバを除いたＤＥＶＭＯＤＥ構造体のサイズをバイト単位で指定する。
【００１０】
メンバ「dmDriverExtra」は、この構造体に続くプライベートなドライバデータのバイト長を保持する。
【００１１】
メンバ「dmFields」は、ＤＥＶＭＯＤＥ構造体の残りのメンバで、初期化されているメンバを指定する。
【００１２】
メンバ「dmOrientation」は、印刷する用紙の方向を指定する。
【００１３】
メンバ「dmPaperSize」は、印刷する用紙のサイズを指定する。
【００１４】
メンバ「dmPaperLength」は、印刷する用紙の長さを指定する。
【００１５】
メンバ「dmPaperWidth」は、印刷する用紙の幅を指定する。
【００１６】
メンバ「dmScale」は、印刷出力をスケーリングするときの、スケーリング係数を指定する。
【００１７】
メンバ「dmCopies」は、デバイスが複数部数のコピーをサポートしているときは、印刷するコピー部数を指定する。
【００１８】
メンバ「dmDefaultSource」は、予約を指定する。
【００１９】
メンバ「dmPrintQuality」は、プリンタの解像度を指定する。
【００２０】
メンバ「dmColor」は、カラープリンタでのカラーとモノクロとの切り替えを指定する。
【００２１】
メンバ「dmDuplex」は、両面印刷ができるプリンタで、両面印刷するかどうかを指定する。
【００２２】
メンバ「dmYResolution」は、プリンタの y 方向の解像度をインチ当たりのドット数で指定する。
【００２３】
メンバ「dmTTOption」は、TrueType（登録商標）フォントの印刷方法を指定する。
【００２４】
メンバ「dmCollate」は、複数部数を印刷するときにページ順にそろえるかどうかを指定する。
【００２５】
メンバ「dmFormName」は、使用するフォーム名を指定する。
【００２６】
メンバ「dmUnusedPadding」は、ＤＥＶＭＯＤＥ構造体をＤＷＯＲＤ境界に揃えるために使用する。
【００２７】
メンバ「dmBitsPerPel」は、ディスプレイデバイスのカラー解像度をピクセル当たりのビット数で指定する。
【００２８】
メンバ「dmPelsWidth」は、可視のデバイスの表面の幅をピクセル単位で指定する。
【００２９】
メンバ「dmPelsHeight」は、可視のデバイスの表面の高さをピクセル単位で指定する。
【００３０】
メンバ「dmDisplayFlags」は、デバイスのディスプレイモードを指定する。
【００３１】
メンバ「dmDisplayFrequency」は、特定のモードでのディスプレイデバイスの周波数をヘルツで指定する。
【００３２】
このように、ＤＥＶＭＯＤＥ構造体のパブリック部３０１は、マイクロソフト社によってＣ言語のヘッダファイルとして厳密に規定されている。一方、プリンタドライバを開発する各社が独自に定義するＤＥＶＭＯＤＥ構造体のプライベート部３０２は、ＤＥＶＭＯＤＥ構造体において、パブリック部３０１の直後に続き、その拡張サイズはメンバ「dmDriverExtra」で指定される。
【００３３】
２００４年米国シアトルにて、「ＷｉｎＨＥＣ２００４」というハードウェアエンジニアリングカンファレンスが、マイクロソフト社によって開催された。この場にて、マイクロソフト社の次世代のプリンティングシステムでは、プリントチケットと呼ばれるＸＭＬベースの印刷設定指示データ（一般的な用語として「ジョブチケット」とも言う）が使用されることが公表された。
【００３４】
従来形式の印刷設定指示データであるＤＥＶＭＯＤＥは、構造体で記述される。ＤＥＶＭＯＤＥの大部分を占めるプライベート部３０２の仕様は、プリンタベンダーが各社自由に決めることができる部分であるため、各社毎に内容が異なっており、非公開である。またＤＥＶＭＯＤＥは、バイナリデータのため、中身を参照してもユーザが設定内容を認識することができない。また、ＤＥＶＭＯＤＥのプライベート部３０２にはプリンタドライバのみがアクセス可能であるという特徴や、プリンタドライバとの独自ＡＰＩを有しているＷｉｎ３２アプリケーションが、プリンタドライバと独自ＡＰＩを用いて通信することでＤＥＶＭＯＤＥの内容（例えば、ステイプル位置や、排紙面のフェイスアップ／ダウンなど、本来ＤＥＶＭＯＤＥのプライベート部３０２に記述されている機器特有の設定内容）を利用可能であるという特徴をもつ。アプリケーションがプリンタドライバからＤＥＶＭＯＤＥの内容を取得する技術は、例えば特許文献１に記述されている。
【００３５】
一方、新しい形式の印刷設定指示データであるプリントチケットは、ＸＭＬ（Extensible Markup Language）で記述される、仕様は公開されている、テキストなので可読性あり、プリンタドライバが直接アクセスすることは不可能、ＷｉｎＦＸアプリケーションから利用可能という特徴をもつ。
【特許文献１】特開２００３−０９１３８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００３６】
上述したように、ＷｉｎＦＸアプリケーションからプリントチケットを利用できるようになることは大きな前進であるが、これはアプリケーション層に限った話で、ドライバ層では大きく事情が異なる。これを、図１０を参照して説明する。
【００３７】
図１０は、アプリケーション層からＯＳ層、そしてドライバ層に至る各階層においてＤＥＶＭＯＤＥ及びプリントチケットの印刷設定指示データがどのようにやり取りされるかを示す図である。
【００３８】
図１０においてアプリケーション層のＷｉｎ３２アプリケーションが、ＯＳ層のＷｉｎ３２ＡＰＩ（Application Programming Interface）を介して、ドライバ層のプリンタドライバ５０１とＤＥＶＭＯＤＥをやり取りする。
【００３９】
一方、アプリケーション層のＷｉｎＦＸアプリケーションが、ＯＳ層のＷｉｎＦＸＡＰＩ（Application Programming Interface）を介して、ドライバ層のプリンタドライバ５０１とプリントチケットをやり取りする処理は、やや複雑になる。すなわち、米国マイクロソフト社の仕様では、プリンタドライバ５０１の入出力はあくまでもＤＥＶＭＯＤＥに限られる。そのため、プリンタドライバ５０１は、プリントチケットに対応するために、プリントチケットとＤＥＶＭＯＤＥとを相互変換するサブモジュール５０２をドライバ層に提供する必要がある。このサブモジュール５０２が機能することによって、プリンタドライバ５０１は、ＤＥＶＭＯＤＥしか扱えないにも拘わらず、ＷｉｎＦＸアプリとの間で実質的にプリントチケットをやり取りすることが可能となる。
【００４０】
図１０に示すように、プリンタドライバ５０１は、従来のＷｉｎ３２アプリケーションの仕様と互換性を保持するために依然として、バイナリで非公開なデータ形式である印刷設定指示データＤＥＶＭＯＤＥを取り扱う必要がある。その結果、Ｗｉｎ３２アプリケーションとの印刷設定のやり取りは従来のＤＥＶＭＯＤＥで行うためプリンタドライバはそのまま対応できるが、ＷｉｎＦＸアプリケーションと印刷設定のやり取りを行う場合には、プリントチケットとＤＥＶＭＯＤＥとの間の相互変換処理（以下「チケットサイクル」と称する）が頻繁に行われる。このようなチケットサイクルには問題がある。これを、図１１を参照して説明する。
【００４１】
図１１は、チケットサイクルを示す図である。ＷｉｎＦＸアプリケーションがプリントチケットを作成する場合は、相互変換サブモジュール５０２によりＤＥＶＭＯＤＥに変換してプリンタドライバが受け取ることになる。そして、プリンタドライバＵＩを介して設定された印刷設定はＤＥＶＭＯＤＥで管理されるが、ＷｉｎＦＸアプリケーションに印刷設定を渡す場合は、プリンタドライバは相互変換サブモジュール５０２によりＤＥＶＭＯＤＥをプリントチケットに変換してＷｉｎＦＸアプリケーションが受け取ることになる。
【００４２】
そのため、例えば、プリントチケットの印刷設定指示の表現能力がＤＥＶＭＯＤＥのそれよりも低い場合、プリンタドライバＵＩで設定された印刷設定のＤＥＶＭＯＤＥから、ＷｉｎＦＸアプリケーションに渡すためのプリントチケットへの変換Ｔ１において、印刷設定指示データＤＥＶＭＯＤＥの情報の一部が欠落してしまうという問題がある。
【００４３】
このようなデータの欠落を防ぐために、プリントチケットにＤＥＶＭＯＤＥそのものを埋め込む方法が考えられる。
【００４４】
図１２は、マイクロソフト社のＵｎｉｄｒｖ形式プリンタドライバで生成されたプリントチケットの一例を示す図である。図１２の例では、プリントチケットの中にＤＥＶＭＯＤＥそのもの（７００）が埋め込まれている。
【００４５】
しかしながら、このようにプリントチケットにＤＥＶＭＯＤＥを埋め込むというデータ欠落防止方法では、ＤＥＶＭＯＤＥの印刷設定指示の表現能力がプリントチケットのそれよりも大きいということが前提であり、プリントチケットの印刷設定指示の表現能力がＤＥＶＭＯＤＥのそれよりも大きい場合には、このデータ欠落を防止できない。
【００４６】
また、プリンタドライバ５０１が依然として、従来のＷｉｎ３２アプリケーションの仕様と互換性を保持するためにＤＥＶＭＯＤＥを取り扱う必要があることに変わりがなく、そのために、チケットサイクルの処理が複雑で重い、プリントチケットとＤＥＶＭＯＤＥとをそれぞれ管理する必要があるので管理のための処理が面倒、プリントチケットはＸＭＬベースにも拘わらず簡単に任意のタグを追加できない、ＤＥＶＭＯＤＥのサイズは初期化時に固定値で決定されるので、ＤＥＶＭＯＤＥには後から記述を増やすことができないといった様々な制限が生じ、ユーザに不利益をもたらすことがあった。
【００４７】
また、従来のＷｉｎ３２アプリケーションは、ＤＥＶＭＯＤＥ構造体のプライベート部にアクセスして直接読み書きすることができないので、図１３に示すように、プリンタドライバ８００が独自に拡張したドライバ拡張インターフェース（Ｉ／Ｆ）８０１を介してＤＥＶＭＯＤＥプライベート部８０３にアクセスする。図１３は、Ｗｉｎ３２アプリケーション８０２と、プリンタドライバ８００のドライバ拡張インターフェース８０１と、ＤＥＶＭＯＤＥプライベート部８０３との関係を示す図である。
【００４８】
このようなドライバ拡張インターフェース８０１によって、Ｗｉｎ３２アプリケーション８０２は、ＤＥＶＭＯＤＥ構造体のプライベート部８０３にアクセスして読み書きすることができるようになり、その結果、Ｗｉｎ３２アプリケーション８０２は、プリンタドライバ８００が独自にサポートする機能（例えばステイプルなど）を指定することが可能になる。このＷｉｎ３２アプケーション８０２が使用するドライバ拡張インターフェース８０１は、各社独自の方法でプリンタドライバ８００に実装されるものであり、汎用性のあるインターフェースではない（互換性のないインターフェースである）。プリンタドライバ８００の種類が変わればドライバ拡張インターフェース８０１の使い方も変わるため、Ｗｉｎ３２アプリケーション８０２の構成は、非常に複雑になり、開発の負荷が大きい。
【００４９】
一方、図１４に示すように、ＷｉｎＦＸアプリケーション９００は、プリントチケット９０１に直接アクセス可能なので、プリンタドライバを介さずプリントチケット９０１を直接読み書きすることができる。図１４は、ＷｉｎＦＸアプリケーション９００とプリントチケット９０１との関係を示す図である。
【００５０】
このように、ＷｉｎＦＸアプリケーション９００はプリントチケット９０１に直接アクセスできるので、ＷｉｎＦＸアプリケーション９００の構成は、極めてシンプルな構成となる。
【００５１】
しかしながら、上述した従来のＷｉｎ３２アプリケーション８０２はプリントチケット９０１を扱えないので、ＤＥＶＭＯＤＥ８０３を使うしか方法がなく、その場合に、プリンタドライバ８００が独自に拡張したドライバ拡張インターフェース８０１に頼らざるをえないので、アプリケーション開発に大きな負担となっていた。
【００５２】
本発明はこのような問題点に鑑みてなされたものであって、プリンタドライバとＷｉｎ３２アプリケーションの性能及び品質が向上し、ユーザの利便性を向上させることを可能にした印刷制御装置、印刷制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００５３】
上記目的を達成するために、請求項１記載の発明によれば、印刷設定をＸＭＬ形式のプリントチケットで扱うアプリケーションと、印刷設定をバイナリ形式の印刷設定構造体で管理するプリンタドライバとが動作する印刷制御装置において、前記ＸＭＬ形式のプリントチケットに基づいて、前記バイナリ形式の印刷設定構造体の公開データ部分を構築する構築手段と、前記バイナリ形式の印刷設定構造体の未公開データ部分に前記ＸＭＬ形式のプリントチケットを埋め込む埋め込み手段と、前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットを抽出する抽出手段とを有することを特徴とする印刷制御装置が提供される。
【００５４】
また、請求項８記載の発明によれば、印刷設定をＸＭＬ形式のプリントチケットで扱うアプリケーションと、印刷設定をバイナリ形式の印刷設定構造体で管理するプリンタドライバとが動作する印刷制御装置に適用される印刷制御方法において、前記ＸＭＬ形式のプリントチケットに基づいて、前記バイナリ形式の印刷設定構造体の公開データ部分を構築する構築ステップと、前記バイナリ形式の印刷設定構造体の未公開データ部分に前記ＸＭＬ形式のプリントチケットを埋め込む埋め込みステップと、前記バイナリ形式の印刷設定構造体の未公開データ部分に埋め込まれた前記ＸＭＬ形式のプリントチケットを抽出する抽出ステップとを有することを特徴とする印刷制御方法が提供される。
【００５５】
さらに、上記印刷制御方法をコンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００５６】
本発明によれば、ＸＭＬ形式のプリントチケットとバイナリ形式の印刷設定構造体との間に包含関係がないので、チケットサイクルにおいて情報が欠落しない。チケットサイクル処理が非常にシンプルになるため処理速度が速くなる。Ｗｉｎ３２ベースのアプリケーションであっても、プリントチケットを中心とした高度な印刷処理が可能になる。
【００５７】
以上により、プリンタドライバとＷｉｎ３２アプリケーションの性能及び品質が向上し、ユーザの利便性を向上させることができる。
【発明を実施するための最良の形態】
【００５８】
以下、本発明を実施するための最良の形態について、図面を参照して説明する。
【００５９】
図１は、本発明の一実施の形態に係る印刷制御装置（ホストコンピュータ）を含む印刷システムの構成を示すブロック図である。
【００６０】
図１において、３０００はホストコンピュータであり、ＣＰＵ１、ＲＯＭ３、および外部メモリ１１を備える。ＣＰＵ１は、ＲＯＭ３を構成するプログラム用ＲＯＭまたは外部メモリ１１に記憶された文書処理プログラム等に基づいて、図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。また、ＣＰＵ１は、システムバス４に接続される各デバイスを総括的に制御する。
【００６１】
また、ＲＯＭ３のプログラム用ＲＯＭまた外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下「ＯＳ」という）等が記憶され、ＲＯＭ３を構成するフォント用ＲＯＭまたは外部メモリ１１には、上記文書処理を実行する際に使用するフォントデータ等が記憶され、ＲＯＭ３を構成するデータ用ＲＯＭまたは外部メモリ１１には、上記文書処理等を実行する際に使用する各種データが記憶される。
【００６２】
またホストコンピュータ３０００には更に、ＲＡＭ２、キーボードコントローラ（ＫＢＣ）５、ＣＲＴコントローラ（ＣＲＴＣ）６、ディスクコントローラ（ＤＫＣ）７、プリンタコントローラ（ＰＲＴＣ）８、キーボード（ＫＢ）９、ＣＲＴディスプレイ（ＣＲＴ）１０が備えられる。
【００６３】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。キーボードコントローラ５は、キーボード９や不図示のポインティングデバイスからの信号入力を制御する。ＣＲＴコントローラ６は、ＣＲＴディスプレイ１０の表示を制御する。ディスクコントローラ７は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下「プリンタドライバ」という）等を記憶するハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。
【００６４】
プリンタコントローラ８は、所定の双方向性インターフェース２１を介してプリンタ１５００に接続されて、プリンタ１５００との間の通信制御処理を実行する。
【００６５】
なお、ＣＰＵ１は、例えばＲＡＭ２上に設定される表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴディスプレイ１０上でのＷＹＳＩＷＹＧ（What You See Is What You Get）を可能としている。
【００６６】
また、ＣＰＵ１は、ＣＲＴディスプレイ１０上に表示されるマウスカーソル等で指示されたコマンドに基づいて、登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタ１５００の設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行うことができる。
【００６７】
プリンタ１５００は、ＣＰＵ１２、ＲＯＭ１３、および外部メモリ１４を備える。ＣＰＵ１２は、ＲＯＭ１３を構成するプログラム用ＲＯＭまたは外部メモリ１１に記憶された印刷制御プログラム等に基づいて、システムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【００６８】
また、ＲＯＭ１３のプログラム用ＲＯＭには、ＣＰＵ１２の制御プログラム等が記憶される。ＲＯＭ１３を構成するフォント用ＲＯＭには、上記出力情報を生成する際に使用するフォントデータ等が記憶され、ＲＯＭ１３を構成するデータ用ＲＯＭには、ハードディスク（ＨＤ）等の外部メモリが存在しないプリンタの場合に、ホストコンピュータ３０００上で利用される情報等が記憶される。
【００６９】
さらに、プリンタ１５００では、ＣＰＵ１２が、入力部１８を介してホストコンピュータ３０００との間の通信処理が可能となっており、プリンタ１５００内の情報等をホストコンピュータ３０００に通知可能に構成されている。
【００７０】
ＲＡＭ１９は、ＣＰＵ１２の主メモリ、ワークエリア等として機能するとともに、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ（不揮発性ＲＡＭ）等に用いられる。
【００７１】
外部メモリ１４は、ハードディスク（ＨＤ）、ＩＣカード等から構成され、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、外部メモリを複数個備え、内蔵フォントデータに加えて、オプションフォントデータを格納したり、言語系の異なるプリンタ制御言語を解釈するプログラムを格納したりするようにしてもよい。
【００７２】
操作部２２には、操作パネル、スイッチ、ＬＥＤ表示器等が配される。
【００７３】
つぎに、図２を参照して、ホストコンピュータ３０００によって行われる典型的な印刷データ生成について説明する。
【００７４】
図２は、ホストコンピュータ３０００で実行されるプログラムモジュールを示す図である。
【００７５】
図２に示すアプリケーション２０１、グラフィックエンジン２０２、プリンタドライバ２０３、およびシステムスプーラ２０４は、外部メモリ１１に保存されたファイルとして存在し、ＯＳやモジュールによってＲＡＭ２にロードされ、実行される。また、アプリケーション２０１およびプリンタドライバ２０３は、ＦＤやＣＤ−ＲＯＭによって、またはネットワークを経由して外部メモリ１１のＨＤに追加することが可能となっている。
【００７６】
外部メモリ１１に保存されているアプリケーション２０１が、ＲＡＭ２にロードされ実行されることによって、最終的にプリンタ１５００で印刷が行われるためには、まず同様にＲＡＭ２にロードされ実行可能となっているグラフィックエンジン２０２が、アプリケーション２０１の出力を利用して画像出力（描画）を行う。グラフィックエンジン２０２は、プリンタ１５００に対応して用意されたプリンタドライバ２０３を、外部メモリ１１からＲＡＭ２にロードし、プリンタドライバ２０３は、グラフィックエンジン２０２からの画像出力をプリンタ１５００用の制御コマンドに変換する。変換されたプリンタ制御コマンドは、ＯＳによってＲＡＭ２にロードされたシステムスプーラ２０４を経て、インターフェース２１経由でプリンタ１５００へ出力される。
【００７７】
図３は、アプリケーションと各プリンタ用のプリンタドライバとの一般的な関係を表わした模式図である。
【００７８】
アプリケーション１００はオペレーティングシステム１０１が提供する各種関数（ＡＰＩ）をコールして処理を行い、オペレーティングシステム１０１は印刷に関わる処理を、選択されているプリンタのプリンタドライバ１０２または１０３が提供する関数（ＤＤＩ）をコールして処理を行い、アプリケーション１００から、選択されたプリンタへの印刷が可能となっている。
【００７９】
このとき、プリンタドライバ１０２または１０３と、オペレーティングシステム１０１と、アプリケーション１００との間でプリンタの印刷設定指示データがやり取りされる。この印刷設定指示データのやり取りを表したのが、図１０に示す図である。図１０については既に説明済みなので、ここでは説明を省略する。
【００８０】
図４は、本実施の形態におけるＤＥＶＭＯＤＥ構造体の構成を示す図である。
【００８１】
本実施の形態におけるＤＥＶＭＯＤＥ構造体では、プリンタドライバが独自に管理するＤＥＶＭＯＤＥプライベート部１１２０にＸＭＬ形式（タグ形式）のプリントチケット１１３０を埋め込むようにする。すなわち、本実施の形態におけるＤＥＶＭＯＤＥ構造体は、見かけ上はＤＥＶＭＯＤＥ構造体であるが、実質的にはプリントチケットそのものがプライベート部１１２０に含まれていることになる。
【００８２】
また、ＤＥＶＭＯＤＥプライベート部１１２０には、プリントチケット１１３０以外に、ＤＥＶＭＯＤＥの種類を示すシグネチャ１１０１、ＤＥＶＭＯＤＥプライベート部の記述内容よりもプリントチケットの記述内容を優先するときに「有効」に設定されるプリントチケット優先フラグ１１０２、プリントチケットを圧縮するときに「有効」に設定されるプリントチケット圧縮フラグ１１０３が挿入される。
【００８３】
本実施の形態では、このような構造をもったＤＥＶＭＯＤＥ構造体を採用し、図１０に示すサブモジュール５０２において発生するチケットサイクルを効率よく処理（図４のようにＤＥＶＭＯＤＥを生成する）することが本実施の形態の特徴となる。以下、チケットサイクルの具体的な処理フローを説明する。
【００８４】
図５は、ドライバ層のプリンタドライバ５０１と相互変換サブモジュール５０２において行われるプリントチケットのＤＥＶＭＯＤＥ構造体への埋め込み処理の手順を示すフローチャートである。
【００８５】
まずステップＳ１２０１にて、サブモジュール５０２は、ＷｉｎＦＸアプリケーションからＯＳ層のＡＰＩを介して入力されたＸＭＬ形式のプリントチケットを受け取る。
【００８６】
ステップＳ１２０２にて、プリントチケットの各印刷設定に基づき、ＤＥＶＭＯＤＥのパブリック部１１１０を構築する。一般にプリントチケットの印刷設定指定能力は、ＤＥＶＭＯＤＥのパブリック部１１１０の印刷設定指定能力を超えているので処理自体は単純である。
【００８７】
ステップＳ１２０３にて、サブモジュール５０２は、ＤＥＶＭＯＤＥのパブリック部１１１０にあるメンバｄｍＤｒｉｖｅｒＥｘｔｒａの保持データに基づき、ＤＥＶＭＯＤＥのプライベート部１１２０を格納すべきメモリ領域の空きサイズＳを取得する。
【００８８】
ステップＳ１２０４にて、サブモジュール５０２は、空きサイズＳとプリントチケットのサイズとを比較し、空きサイズＳがプリントチケットのサイズ以上であるならば、ステップＳ１２０５に進み、空きサイズＳがプリントチケットのサイズ未満であるならば、ステップＳ１２０６に進む。
【００８９】
ステップＳ１２０５では、サブモジュール５０２は、ＤＥＶＭＯＤＥのプライベート部１１２０の空き領域にプリントチケット１１３０を埋め込む。このとき、サブモジュール５０２は、シグネチャ１１０１を設定し、プリントチケット優先フラグ１１０２を「有効」に設定し、プリントチケット圧縮フラグ１１０３を「無効」に設定する。
【００９０】
ステップＳ１２０６では、ＤＥＶＭＯＤＥのプライベート部１１２０にプリントチケットの全データを収めることはできないので、サブモジュール５０２は、プリントチケットのデータを圧縮する。
【００９１】
ステップＳ１２０７にて、サブモジュール５０２は、空きサイズＳと、ステップＳ１２０６で圧縮されたプリントチケットの圧縮後のサイズとを比較する。空きサイズＳがプリントチケットの圧縮後サイズ以上であるならば、ステップＳ１２０８に進み、空きサイズＳがプリントチケットの圧縮後サイズ未満であるならば、ステップＳ１２０９に進む。
【００９２】
ステップＳ１２０８では、サブモジュール５０２は、ＤＥＶＭＯＤＥのプライベート部１１２０の空き領域に圧縮済みプリントチケット１１３０を埋め込む。このとき、シグネチャ１１０１を設定し、プリントチケット優先フラグ１１０２を「有効」に設定し、プリントチケット圧縮フラグ１１０３を「有効」に設定する。
【００９３】
ステップＳ１２０９では、サブモジュール５０２は、プリントチケットのＤＥＶＭＯＤＥ構造体への埋め込みを諦め、エラー処理を行う。
【００９４】
以上で、プリントチケットのＤＥＶＭＯＤＥ構造体への埋め込み処理を完了する。
【００９５】
図６は、ドライバ層のプリンタドライバ５０１とサブモジュール５０２において行われるＤＥＶＭＯＤＥ構造体からプリントチケットを取り出す処理の手順を示すフローチャートである。これは、プリンタドライバにより管理されているＤＥＶＭＯＤＥの印刷設定を、ＷｉｎＦＸアプリケーションが要求した場合に発生する。
【００９６】
ステップＳ１３０１にて、プリンタドライバ５０１からサブモジュール５０２にＤＥＶＭＯＤＥが入力される。
【００９７】
ステップＳ１３０２にて、サブモジュール５０２は、ＤＥＶＭＯＤＥのプライベート部１１２０からプリントチケット１１３０を取り出す。
【００９８】
ステップＳ１３０３にて、サブモジュール５０２は、プリントチケット圧縮フラグ１１０３を参照し、該フラグが「有効」に設定されているか否か、すなわちプリントチケットが圧縮されているか否かを判別する。プリントチケット圧縮フラグ１１０３が「有効」に設定されているならば、ステップＳ１３０４に進み、「有効」に設定されていなければ、ステップＳ１３０４をスキップしてステップＳ１３０５に進む。
【００９９】
ステップＳ１３０４では、ステップＳ１３０２で得たプリントチケットは圧縮されているので、圧縮を解除する。
【０１００】
ステップＳ１３０５では、サブモジュール５０２は、プリントチケット優先フラグ１１０２が「有効」に設定されているか否かを判別する。プリントチケット優先フラグ１１０２が「有効」に設定されているならば、ステップＳ１３０６に進み、「有効」に設定されていなければ、本処理を終了する。
【０１０１】
ステップＳ１３０６では、サブモジュール５０２は、ステップＳ１３０２またはステップＳ１３０４で得たプリントチケットとＤＥＶＭＯＤＥのパブリック部１１１０の設定内容とを比較する。比較の結果、矛盾するような記述が有るならば、ステップＳ１３０７へ進む。ないならば本処理を終了する。
【０１０２】
ステップＳ１３０７では、サブモジュール５０２は、ステップＳ１３０２またはステップＳ１３０４で得たプリントチケットの内容をＤＥＶＭＯＤＥのパブリック部１１１０の設定内容に合うように修正する。
【０１０３】
以上のようにして、ＤＥＶＭＯＤＥからプリントチケットの取り出しを完了する。
【０１０４】
なお、図５に示すプリントチケットのＤＥＶＭＯＤＥ構造体への埋め込み処理と、図６に示すＤＥＶＭＯＤＥ構造体からプリントチケットを取り出す処理とは、プリンタドライバ５０１とサブモジュール５０２によって実行されるが、これらの処理は非常に単純であるので、ＤＥＶＭＯＤＥのやり取りを行うためのＡＰＩ（プライベート部に対しては独自ＡＰＩ）をサポートしているＷｉｎ３２アプリケーションが、これらと同じ内容の処理を行うようにすることは容易であり、Ｗｉｎ３２アプリケーションが行うようにしてもよい。これを、図７を参照して説明する。
【０１０５】
図７は、本実施の形態におけるプリントチケットの埋め込まれたＤＥＶＭＯＤＥ構造体１４１（図４に例示）に対して直接読み書き可能であるＷｉｎ３２アプリケーション１４０を示す図である。このＷｉｎ３２アプリケーション１４０は、図５に示すプリントチケットのＤＥＶＭＯＤＥ構造体への埋め込み処理と、図６に示すＤＥＶＭＯＤＥ構造体からプリントチケットを取り出す処理とを実行できるものとする。
【０１０６】
Ｗｉｎ３２アプリケーション１４０は、図５に示すプリントチケットのＤＥＶＭＯＤＥ構造体への埋め込み処理を実行することにより、ＤＥＶＭＯＤＥ構造体の中にプリントチケットを埋め込んで、プリントチケットの埋め込まれたＤＥＶＭＯＤＥ構造体１４１（図４に例示）を作成できる。また、Ｗｉｎ３２アプリケーション１４０は、図６に示すＤＥＶＭＯＤＥ構造体からプリントチケットを取り出す処理を実行することにより、ＤＥＶＭＯＤＥ構造体１４１の中にシグネチャ１１０１（図４）が設定されていることを認識して、ＤＥＶＭＯＤＥ構造体１４１が、プリントチケットの埋め込まれたＤＥＶＭＯＤＥ構造体であることを知り得、その結果、Ｗｉｎ３２アプリケーション１４０は、図１４に示すＷｉｎＦＸアプリケーション９００とプリントチケット９０１との関係と同じように、ＤＥＶＭＯＤＥ構造体１４１に対して直接読み書きを行うことができるようになる。
【０１０７】
〔他の実施の形態〕
本発明の目的は、上記の実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【０１０８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０９】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１１０】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１１】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１２】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も、本発明に含まれることは言うまでもない。
【０１１３】
この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【図面の簡単な説明】
【０１１４】
【図１】本発明の一実施の形態に係る情報処理装置を含むプリンタ制御システムの構成を示すブロック図である。
【図２】ホストコンピュータで実行されるプログラムモジュールを示す図である。
【図３】アプリケーションと各プリンタ用のプリンタドライバとの一般的な関係を表わした模式図である。
【図４】本実施の形態におけるＤＥＶＭＯＤＥ構造体の構成を示す図である。
【図５】ドライバ層のプリンタドライバと相互変換サブモジュールにおいて行われるプリントチケットのＤＥＶＭＯＤＥ構造体への埋め込み処理の手順を示すフローチャートである。
【図６】プリンタドライバにおいて行われるＤＥＶＭＯＤＥ構造体からプリントチケットを取り出す処理の手順を示すフローチャートである。
【図７】本実施の形態におけるプリントチケットの埋め込まれたＤＥＶＭＯＤＥ構造体に対して直接読み書き可能であるＷｉｎ３２アプリケーションを示す図である。
【図８】ＤＥＶＭＯＤＥ構造体の全体構成を示す図である。
【図９】図８に示すＤＥＶＭＯＤＥ構造体のパブリック部の構成を示す図である。
【図１０】アプリケーション層からＯＳ層、そしてドライバ層に至る各階層においてＤＥＶＭＯＤＥ及びプリントチケットの印刷設定指示データがどのようにやり取りされるかを示す図である。
【図１１】チケットサイクルを示す図である。
【図１２】マイクロソフト社のＵｎｉｄｒｖ形式プリンタドライバで生成されたプリントチケットの一例を示す図である。
【図１３】Ｗｉｎ３２アプリケーションと、プリンタドライバのドライバ拡張インターフェースと、ＤＥＶＭＯＤＥプライベート部との関係を示す図である。
【図１４】ＷｉｎＦＸアプリケーションとプリントチケットとの関係を示す図である。
【符号の説明】
【０１１５】
１４０  Ｗｉｎ３２アプリケーション
１４１  ＤＥＶＭＯＤＥプライベート部
１１０１  シグネチャ
１１０２  プリントチケット優先フラグ
１１０３  プリントチケット圧縮フラグ
１１１０  ＤＥＶＭＯＤＥパブリック部
１１２０  ＤＥＶＭＯＤＥプライベート部
１１３０  プリントチケット
１５００  プリンタ
３０００  ホストコンピュータ
【図１】
2006285870.tif 000003
【図２】
2006285870.tif 000004
【図３】
2006285870.tif 000005
【図４】
2006285870.tif 000006
【図５】
2006285870.tif 000007
【図６】
2006285870.tif 000008
【図７】
2006285870.tif 000009
【図８】
2006285870.tif 000010
【図９】
2006285870.tif 000011
【図１０】
2006285870.tif 000012
【図１１】
2006285870.tif 000013
【図１２】
2006285870.tif 000014
【図１３】
2006285870.tif 000015
【図１４】
2006285870.tif 000016