(57)【特許請求の範囲】
【請求項１】
アプリケーションからの印刷要求時に、印刷設定から設定情報を生成する印刷設定受け付け手段と、
アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理手段と、
前記画像処理手段を呼び出したアプリケーションが特定アプリケーションか否かを、前記設定情報に前記特定アプリケーションにより記述された特定アプリ情報があるか否かにより判別するアプリケーション判別手段と、を有し、
前記画像処理手段は、
前記アプリケーション判別手段が、前記特定アプリケーションにより呼び出されたと判別した場合、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成し、
前記特定アプリケーションは、前記印刷設定受け付け手段から呼び出されて起動し、文書データを生成しないアプリケーションであることを特徴とする情報処理装置。
【請求項２】
アプリケーションからの印刷要求時に、印刷設定から設定情報を生成する印刷設定受け付け手段と、
アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理手段と、
前記画像処理手段を呼び出したアプリケーションが特定アプリケーションか否かを、前記画像処理手段を呼び出す関数の引数に特定アプリ情報が含まれるか否かにより判別するアプリケーション判別手段と、を有し、
前記画像処理手段は、
前記アプリケーション判別手段が、前記特定アプリケーションにより呼び出されたと判別した場合、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成する、ことを特徴とする情報処理装置。
【請求項３】
前記特定アプリケーションは、前記印刷設定受け付け手段から呼び出されて起動し、文書データを生成しないアプリケーションである、ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記アプリケーションは、前記画像処理手段が前記印刷データを生成した段階で印刷終了を前記印刷設定受け付け手段に通知し、前記印刷設定受け付け手段は前記特定アプリケーションを起動させる、ことを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記特定アプリケーションは、前記画像処理手段が生成した前記印刷データを表示装置に表示するプレビュー用のアプリケーションである、
ことを特徴とする請求項１〜４いずれか１項に記載の情報処理装置。
【請求項６】
前記設定情報の前記特定アプリ情報は、所定のＯＳ（Operating System）上で動作する複数のプリンタドライバに対して共通の印刷条件を提供するＤＥＶＭＯＤＥのメンバ変数として記述されている、ことを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記設定情報の前記特定アプリ情報は、前記ＤＥＶＭＯＤＥの前記メンバ変数のうちdmReserved1又はdmReserved2に記述されている、 ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記設定情報の前記特定アプリ情報は、前記ＤＥＶＭＯＤＥの前記メンバ変数のうち、印刷時に使用されないDisplay専用変数に記述されている、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記画像処理手段を呼び出す関数の引数に書き込まれる前記特定アプリ情報は、前記特定アプリケーションがＯＳを呼び出す第１関数、及び、ＯＳが前記画像処理手段を呼び出す第２関数に記述されている、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項１０】
前記画像処理手段は、前記特定アプリケーションにより呼び出されたと判別しない場合、前記設定情報及び文書データから前記印刷データを生成し、
前記特定アプリケーションにより呼び出されたと判別した場合、前記特定アプリケーションにより呼び出される前に生成した前記印刷データの一部を転用して前記印刷データを生成する、ことを特徴とする請求項１〜９いずれか１項に記載の情報処理装置。
【請求項１１】
コンピュータに、
アプリケーションからの印刷要求時に、印刷設定受け付け手段が受け付けた印刷設定から設定情報を生成する印刷設定受け付けステップと、
画像処理手段を呼び出して、アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理ステップと、
前記画像処理手段を呼び出したアプリケーションが特定アプリケーションか否かを、前記設定情報に前記特定アプリケーションにより記述された特定アプリ情報があるか否かにより判別するアプリケーション判別ステップと、
前記アプリケーション判別ステップにより、前記画像処理手段が前記特定アプリケーションにより呼び出されたと判別された場合、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成するステップと、を実行させるプログラムであって、
前記特定アプリケーションは、前記印刷設定受け付け手段から呼び出されて起動し、文書データを生成しないアプリケーションであることを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションの文書データを変換してプリンタに送信する情報処理装置等に関する。
【背景技術】
【０００２】
ユーザが、アプリケーション等によって作成した文書データを印刷する際、アプリケーション、プリンタドライバ及びＯＳが連携してプリンタに印刷データが送信される。アプリケーションが動作するＰＣ（Personal  Computer）のＯＳ（Operating System）がＷｉｎｄｏｗｓ（登録商標）の場合、印刷処理には、
・ＲＡＷスプールのＷｉｎｄｏｗｓプリンティングシナリオ
・ＥＭＦスプールのＷｉｎｄｏｗｓプリンティングシナリオ
の２種類がある。
【０００３】
図１は、ＲＡＷスプールのＷｉｎｄｏｗｓプリンティングシナリオの概略を説明する図の一例である。ＰＣは、アプリケーション、ＯＳの機能としてＧＤＩ（Graphics Device Interface）、プリンタドライバ、スプーラ、プリンタプロセッサ及びポートモニタ等を有する。
【０００４】
プリンタドライバは、ＵＩ（User Interface）部、及び、グラフィックス部を有する。ユーザが、アプリケーションに対して文書の印刷指示を入力すると、アプリケーションは、プリンタドライバのＵＩ部にＤＥＶＭＯＤＥ構造体（以下、ＤＥＶＭＯＤＥという）を送出する。ＤＥＶＭＯＤＥはＯＳ上で動作する各種のプリンタドライバに対して印刷条件を共通に設定するためのメンバ変数が定義されたデータ構造である。ＵＩ部はＤＥＶＭＯＤＥを受け取ると、まず、印刷設定画面（印刷ダイアログと呼ばれることがある）をディスプレイに表示する。
【０００５】
ユーザは、用紙サイズや部数、両面印刷などの印刷条件を設定し印刷を指示する。ＵＩ部はユーザが設定した印刷条件を受け付け、アプリケーションに印刷設定が含まれるＤＥＶＭＯＤＥを送出する。
【０００６】
図示するアプリケーションは、例えば文書作成プログラムなどのアプリケーション（例えば、ＭＳ−Ｗｏｒｄ：登録商標）である。アプリケーションは、ＵＩ部からＤＥＶＭＯＤＥを取得すると、ＧＤＩコールによりＧＤＩを呼び出すと共に、ＤＥＶＭＯＤＥ及び文書データをＧＤＩに送出する。
【０００７】
ＧＤＩは、アプリケーションからＤＥＶＭＯＤＥと文書データを取得すると、ＤＤＩコールによりプリンタドライバのグラフィックス部を呼び出して、ＤＥＶＭＯＤＥと文書データを送出する。
【０００８】
グラフィックス部は、ＧＤＩから取得したＤＥＶＭＯＤＥを参照して、アプリケーションによって印刷指示された文書データから、印刷設定を反映した印刷データを作成し、その作成した印刷データをスプーラに送出する。なお、印刷データには描画データ（例えばＰＤＬのデータ）と制御データ（例えばＰＪＬの印刷コマンド）が含まれる。
【０００９】
スプーラは、グラフィックス部から取得した印刷データをスプールファイルとして記憶する。プリントプロセッサは、印刷データをスプーラに送出する。スプーラは、印刷データをポートモニタに送出する。ポートモニタは、ＰＣが有するポートの監視を行っており、プリンタが接続されているポートに印刷データを送出する。そして、プリンタは印刷データを印刷する。
【００１０】
図２は、ＥＭＦスプールのＷｉｎｄｏｗｓプリンティングシナリオの概略を説明する図の一例である。ＥＭＦスプールで行うＷｉｎｄｏｗｓプリンティングシナリオでは、ＤＧＩが呼び出されるまでの手順は図１と同じである。
【００１１】
ＧＤＩはＥＭＦデータを生成しスプーラに送出する。アプリケーションの文書データが一通りスプールされると、スプーラがプリントプロセッサにデスプールすることを伝え、プリントプロセッサがスプールデータ（ＥＭＦデータ）を取得する。プリントプロセッサは、ＥＭＦデータをページ毎に集約・逆順・製本等の処理を施す編集処理の後、ＧＤＩコールしてＧＤＩに送出する。
【００１２】
ＧＤＩは、ＤＤＩコールによりプリンタドライバのグラフィックス部を呼び出し、ＤＥＶＭＯＤＥとＥＭＦデータを送出する。グラフィクス部はＥＭＦデータとＤＥＶＭＯＤＥから印刷データ（ＲＡＷデータ）を作成し、スプーラに送出する。スプーラは印刷データが一通り送出されるとポートモニタに送出する。
【００１３】
ところで、ＤＥＶＭＯＤＥには、Public領域とPrivate領域とがある。Public領域はプリンタやプリンタドライバに関係なく共通の領域であり、ＯＳ上で動作する各プリンタドライバに対して共通のメンバ変数が定義されている。Private領域は、そのメンバ変数をプリンタドライバごとに定義可能ないわゆる拡張領域である。したがって、Private領域では、各プリンタドライバ（プリンタ)に固有の機能に関する印刷条件等を管理するためのメンバ変数を定義することができる。
【００１４】
このようにＤＥＶＭＯＤＥのPrivate領域はメンバ変数が追加されたり更新されたりする可能性があるため、その管理を容易にする技術が提案されている（例えば、特許文献１参照。）。特許文献１には、Private領域のサイズのみを固定し、メンバ変数を不定にしておき、情報配置ファイルによりメンバ変数とその位置を確定するプリンタドライバが開示されている。こうすることで、プリンタドライバ毎に別の情報配置ファイルを用意すれば、プリンタドライバの再コンパイル等が不要になる。
【発明の概要】
【発明が解決しようとする課題】
【００１５】
特許文献１に記載されたプリンタドライバは、Private領域を柔軟に構成できるが、一般的にプリンタドライバはプリンタが同じであれば、これを呼び出すアプリケーションが異なっても同じである。
【００１６】
しかしながら、プリンタドライバが、特定のアプリケーションに呼び出された場合にだけ、特定の処理を行うことが好ましい場合がある。例えば、グラフィック部はＤＥＶＭＯＤＥから制御データを作成するが、アプリケーションが保持する文書データの情報やＤＥＶＥＭＯＤＥに含まれない情報からも制御データを作成している。ところが、特定のアプリケーションは、一般のアプリケーションが保持する文書データの情報などを保持していない場合があり、この場合、プリンタドライバは誤った制御データを作成するおそれがある。
【００１７】
仮に、プリンタドライバが、特定のアプリケーションから読み出されたことを検出できれば、通常のアプリケーションから呼び出されたグラフィック部が作成した制御データを利用したり、制御データを作成しないことが可能になる。しかし、プリンタドライバには特定のアプリケーションにより呼び出されたことを検知する仕組みが搭載されていないことが一般的である。
【００１８】
本発明は、上記課題に鑑み、呼び出したアプリケーションによって異なる処理を行うことができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明は、アプリケーションからの印刷要求時に、印刷設定から設定情報を生成する印刷設定受け付け手段と、アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理手段と、前記画像処理手段を呼び出したアプリケーションが特定アプリケーションか否かを、前記設定情報に前記特定アプリケーションにより記述された特定アプリ情報があるか否かにより判別するアプリケーション判別手段と、を有し、前記画像処理手段は、前記アプリケーション判別手段が、前記特定アプリケーションにより呼び出されたと判別した場合、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成し、前記特定アプリケーションは、前記印刷設定受け付け手段から呼び出されて起動し、文書データを生成しないアプリケーションであることを特徴とする情報処理装置を提供する。
【発明の効果】
【００２０】
呼び出したアプリケーションによって異なる処理を行うことができる情報処理装置を提供することができる。
【図面の簡単な説明】
【００２１】
【図１】ＲＡＷスプールで行うＷｉｎｄｏｗｓプリンティングシナリオの概略を説明する図の一例である。
【図２】ＥＭＦスプールで行うＷｉｎｄｏｗｓプリンティングシナリオの概略を説明する図の一例である。
【図３】比較のための従来のプリンタドライバが印刷データ等を生成する手順を模式的に説明する図の一例である。
【図４】プリンタドライバが印刷データ等を生成する手順を模式的に説明する図の一例である。
【図５】印刷システムの概略構成図、ＰＣのハードウェア構成図の一例である。
【図６】プリンタドライバ、Preview.exeの機能ブロック図の一例である。
【図７】ＰＣの機能ブロック図の一例である。
【図８】印刷設定画面に表示されるプレビュー表示のための設定例を示す図の一例である。
【図９】ＤＥＶＭＯＤＥの一例を説明するための図の一例である。
【図１０】描画部が行う描画処理の処理手順を示すフローチャート図の一例である。
【図１１】前処理と後処理の印刷データを説明する図の一例である。
【図１２】Job int制御データの一例、Page int制御データの一例を示す図である。
【図１３】ＰＣの処理を模式的に説明する図の一例である。
【図１４】Preview.exeがプリンタドライバに送信するint印刷データを模式的に説明する図の一例である。
【図１５】ＰＣの処理を模式的に説明する図の一例である。
【図１６】ＰＣの動作手順を説明するシーケンス図の一例を示す。
【図１７】Public領域の他のメンバ変数に登録されるプレビュー設定の一例を示す図である。
【図１８】DOCINFO構造体の書式の一例を示す図である。
【図１９】Preview.exeが付与する文書名の一例を示す図である。
【図２０】ＰＣの動作手順を説明するシーケンス図の一例である。
【発明を実施するための形態】
【００２２】
以下、本発明を実施するための形態について実施例を挙げて説明する。
【実施例１】
【００２３】
図３は、比較のための従来のプリンタドライバが印刷データ等を生成する手順を模式的に説明する図の一例である。なお、本実施形態の印刷手順は、ＲＡＷスプール及びＥＭＦスプールのいずれに対しても適用できるため、以下では区別しない。
【００２４】
上記のように、ＵＩ部はユーザから印刷設定を受け付けてＤＥＶＭＯＤＥ構造体（以下、単にＤＥＶＭＯＤＥという）に格納し、アプリケーションに送出する。このアプリケーションは、文書作成ソフトやブラウザソフトのように印刷対象となる文書データを作成するソフトウェアの総称である。
【００２５】
アプリケーションはグラフィック部にＤＥＶＭＯＤＥ及び文書データを送出する。ここで、文書データには、文書の内容だけでなく、原稿サイズ、原稿の向きなどの書誌的事項が含まれている。
【００２６】
プリンタドライバのグラフィック部は、ＤＥＶＭＯＤＥ及び文書データから、描画データ（ＲＡＷデータ）、Ｊｏｂ用制御データ及びＰａｇｅ用制御データを作成し、プリンタに送出する。Ｊｏｂ用制御データとＰａｇｅ用制御データについては後述する。プリンタはＪｏｂ用制御データ及びＰａｇｅ用制御データを解釈して描画データ（ＲＡＷデータ）を印刷することができる。
【００２７】
図４は、本実施例のプリンタドライバが印刷データ等を生成する手順を模式的に説明する図の一例である。図４において、グラフィック部が描画データ、Ｊｏｂ用制御データ及びＰａｇｅ用制御データを作成するまでの手順は図３と同様である。ただし、これらには後に"int"という識別用の接頭語が付与される。
【００２８】
ユーザはアプリケーションに対し印刷指示の操作を行う場合、印刷開始前にＰＣが「印刷プレビュー画面を表示」するように設定しておく。このプレビュー表示のためのアプリケーションが上記の特定のアプリケーションに相当し、以下、Preview.exeという。
【００２９】
(i)グラフィック部が描画データ、Ｊｏｂ用制御データ及びＰａｇｅ用制御データを作成するとアプリケーションに通知する。アプリケーションは印刷を終了する。グラフィック部は「印刷プレビュー画面を表示」の設定に基づき、いったん印刷を終了させる。
(ii) また、UI部は、アプリケーションから印刷終了の通知により、「印刷プレビュー画面を表示」の設定に基づき、Preview.exeを起動させる（kickする）。
(iii)Preview.exeはすでに作成されている描画データ、Ｊｏｂ用制御データ及びＰａｇｅ用制御データを利用してプレビュー表示する。ユーザは、プレビュー表示を目視して印刷の仕上がりを確認すると共に、設定を忘れていた集約、ステープル、パンチ、製本などの印刷設定を新たに設定したり修正したりすることができる。
(iv) ユーザが印刷を指示すると、Preview.exeは、Preview.exeがプリンタドライバを呼び出すことを記録するため、ＤＥＶＭＯＤＥに「プレビュー設定」を書き込む。プレビュー設定については後述する。Preview.exeはユーザによる新たな印刷設定を反映したＤＥＶＭＯＤＥ´をＵＩ部に送出する。
(v)次にPreview.exeはグラフィック部に印刷指示する。このため、Preview.exeはグラフィック部に、描画データ、Ｊｏｂ用制御データ及びＰａｇｅ用制御データを送出する。グラフィック部はＵＩ部を介してＤＥＶＭＯＤＥ´を参照するので、ＤＥＶＭＯＤＥ´のプレビュー設定によりPreview.exeから呼び出されたことを検出できる。
(vi)グラフィック部は、まず、ＤＥＶＭＯＤＥ´を参照して、特定のアプリケーション（この場合はPreview.exe）から呼び出されたか否かを判定する。そして、特定のアプリケーションから読み出されたと判定すると、以下のように動作する。
ａ．ＤＥＶＭＯＤＥ´から新たにＪｏｂ用印刷設定を作成する。これにより、プレビュー表示でユーザが設定した印刷設定を反映できる。
ｂ．Preview.exeから取得したPage用制御データをそのまま転用する（新たに作成しない）。Ｐａｇｅ用制御データに必要な全ての情報がＤＥＶＭＯＤＥ´に含まれていないので、Preview.exeから呼び出された場合はPage用制御データを生成しない。
ｃ．描画データについてPreview.exeから取得した描画データをそのまま転用する。グラフィック部がすでに作成した描画データは、Preview.exeが表示しても変更がないので、グラフィック部が再度、描画データを作成する必要はない。したがって、この段階ではグラフィック部は描画データに何もしない。
(vii)  グラフィック部は、描画データ、Ｊｏｂ用制御データ及びＰａｇｅ用制御データをプリンタに送出する。
【００３０】
以上のように、本実施形態のプリンタドライバは、ＤＥＶＭＯＤＥのプレビュー設定により特定のアプリケーションから呼び出されたことを検出して、特殊な処理を行うことが可能になる。
【００３１】
〔構成例〕
図５（ａ）は印刷システム４００の概略構成図の一例を、図５（ｂ）はＰＣ１００のハードウェア構成図の一例をそれぞれ示す。ＰＣ（Personal Computer）１００とプリンタ２００がネットワーク３００を介して接続されている。ＰＣ１００がユーザの操作を受け付け、文書作成ソフトなどのアプリケーションが、ＧＤＩ、ＤＤＩ及びプリンタドライバ等を利用して印刷を要求する。プリンタドライバは、後述する手順で印刷データを作成してプリンタ２００に送信する。プリンタ２００は画像形成機能を有していれば、コピー機、複写機、ＦＡＸ装置などその呼称は問われない。また、プリンタ２００は電子写真方式の画像形成機能又はインクジェット方式の画像形成機能のどちらの機能を有していてもよい。また、ＰＣ（Personal Computer）１００とプリンタ２００はＵＳＢケーブルなどで直接接続されていてもよい。
【００３２】
ＰＣ１００は、それぞれバスで相互に接続されているＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、外部Ｉ／Ｆ１４、通信装置１５、入力装置１６、表示制御部１７及び記憶装置１８を有する。ＣＰＵ１１は、ＯＳ（Operating  System）１０、アプリケーション３１、プリンタドライバ３０、及び、Preview.exe３２を記憶装置１８から読み出して、ＲＡＭ１０３を作業メモリにして実行する。
【００３３】
アプリケーション３１は、プリンタ２００に印刷要求するものであればよく、例えば、文書作成ソフト、ブラウザソフト、プレゼン資料作成ソフト等、種々のものがある。印刷対象となる文書データを、作成、編集、表示、管理などして、印刷可能なアプリケーションであればどのようなものでもよい。なお、文書データは、文字や記号、数値だけを含むものではなく、画像、写真など種々の印刷対象物を含む。
【００３４】
ＲＡＭ１３は必要なデータを一時保管する作業メモリ（主記憶メモリ）になり、ＲＯＭ１２にはＢＩＯＳや初期設定されたデータ、スタートプログラム等が記憶されている。
【００３５】
外部Ｉ／Ｆ１４はＵＳＢケーブル等のケーブルや、可搬型の記憶媒体２０を装着するインタフェースである。通信装置１５は、ＬＡＮカードやイーサネット（登録商標）カードであり、ＣＰＵ１１からの指示によりプリンタ２００にパケットデータ（本実施形態では主に印刷データ）を送信する。
【００３６】
入力装置１６は、キーボード、マウスなど、ユーザの様々な操作指示を受け付けるユーザインターフェイスである。タッチパネルや音声入力装置を入力装置とすることもできる。表示制御部１７は、アプリケーション３１が指示する画面情報に基づき所定の解像度や色数等でディスプレイ１９の描画を制御する。ディスプレイ１９は、液晶や有機ＥＬなどのＦＰＤ（Flat  Panel  Display）である。
【００３７】
記憶装置１８は、ＨＤＤ（Hard  Disk Drive）やフラッシュメモリなどの不揮発メモリを実体とし、ＯＳ１０、プリンタドライバ３０、アプリケーション３１、及び、Preview.exe３２を記憶している。
【００３８】
記憶媒体２０は、例えば、ＳＤカードやＵＳＢメモリなど不揮発性のメモリである。ＯＳ１０、アプリケーション３１、Preview.exe３２、及び、プリンタドライバ３０は、記憶媒体２０に記録された状態又は不図示のサーバからダウンロードされる態様で配布される。
【００３９】
図６（ａ）はプリンタドライバ３０の機能ブロック図の一例を示す。プリンタドライバ３０は、ＵＩ部３４、描画部３０１、及び、連携部３５を有する。また、グラフィック部３３は描画部３０１及び印刷確認部３０２を有する。なお、本実施形態の説明に必要でない機能は省略している。
・ＵＩ部３４は、ＤＥＶＭＯＤＥとすでに格納されている印刷設定に基づき印刷設定画面（印刷ダイアログ）をディスプレイに表示し、ユーザが設定した印刷設定を受け付ける。ＵＩ部３４は印刷設定をＤＥＶＭＯＤＥに格納し、アプリケーションに送出する。
・印刷確認部３０２は、ＤＥＶＭＯＤＥを参照して、呼び出し元のアプリケーションが特定のアプリケーションか否かを判定する。
・連携部３５は、Preview.exe３２との通信を行う。例えば、描画部３０１が生成した印刷データをPreview.exe３２に送出し、Preview.exe３２からＤＥＶＭＯＤＥ´を取得してＵＩ部３４に送出する。
【００４０】
図６（ｂ）はPreview.exe３２の機能ブロック図の一例を示す。Preview.exe３２はＵＩ部３６を有する。このＵＩ部３６はプリンタドライバ３０のＵＩ部３４と同じクラスから生成された別のインスタンスである。Preview.exe３２のＵＩ部３６はプリンタドライバ３０が生成した印刷を用いてプレビュー表示を行うことができる。
【００４１】
図７は、ＰＣ１００の機能ブロック図の一例を示す。ＰＣ１００は、アプリケーション３１、ＧＤＩ（Graphics Device Interface）３８、プリンタドライバ３０、Preview.exe３２、及び、スプーラ３７を有する。
【００４２】
ＧＤＩ３８はＷｉｎｄｏｗｓ（登録商標）系のＯＳ１０のプログラムとして提供される。ＧＤＩ３８は、ＧＤＩコールをＤＤＩコールに変換してグラフィック部３３に送出する。スプーラ３７は、印刷データをスプールしてプリンタ２００に送出する。
【００４３】
＜プレビュー表示＞
本実施例ではユーザが印刷設定画面で「印刷プレビュー画面を表示」を選択することで、Preview.exe３２が動作する。
図８（ａ）は、印刷設定画面に表示されるプレビュー表示のための設定例を示す図の一例である。例えば、いくつかのタブのうちの１つの「ユーティリティ」タブに「印刷プレビュー画面を表示」というチェックボックス５０１が設けられている。ユーザがチェックボックス５０１をチェックすると、ＵＩ部３４はＤＥＶＭＯＤＥに「印刷プレビュー画面を表示」が選択されたことを登録しておく。
【００４４】
図８（ｂ）は、印刷開始後に表示されるプレビュー表示画面５００の一例を示す図である。プレビュー欄５０２にアプリケーション３１が表示する文書データがプレビュー表示されている。
【００４５】
また、プレビュー表示画面５００でユーザは、
・印刷用紙サイズ５０３
・印刷部数５０４
・カラー／白黒５０５
・両面／製本５０６
・集約５０７
・ソート５０８
・ステープル５０９
の各設定を編集することができる。
【００４６】
また、プレビュー表示画面５００でユーザは、ジョブの編集を行うことができる。ジョブの編集では、複数のジョブの印刷順を変えたり、複数のジョブを同じ設定で印刷したり、複数のジョブを１つのジョブとして印刷することができる。ジョブの編集により、いくつかのジョブの印刷直前の状態にしておき、まとめて印刷したり同じ設定で印刷することができる。
【００４７】
印刷設定画面で一度、ユーザが設定した「印刷プレビュー画面を表示」はＤＥＶＭＯＤＥに登録されているので、ユーザが印刷設定を確認せずに印刷開始の操作を行っても、プレビュー表示画面５００が表示される。このため、ユーザは印刷設定を確認でき、誤った印刷設定で印刷してしまい用紙を無駄にする状況を回避できる。
【００４８】
＜１〜４＞
以下、図７の各ブロックの動作について順に説明する。まず、図７の１〜４までの処理は、ほぼ従来の印刷手順となる。
１：アプリケーション３１はＤＥＶＭＯＤＥをＵＩ部３４に送出することで印刷設定する。
２：アプリケーション３１はＧＤＩコールにより、ＧＤＩ３８に印刷命令を送出する。
３：ＧＤＩ３８はＧＤＩコールをＤＤＩコールへ変換し、グラフィック部３３へ印刷データの生成を要求する。
４: 印刷確認部３０２は、ＤＥＶＭＯＤＥを参照して、呼び出し元のアプリケーション３１が特定のアプリケーションか否かを判定する。
【００４９】
図９（ａ）は、ＤＥＶＭＯＤＥの一例を説明するための図の一例である。ＤＥＶＭＯＤＥは、Public領域とPrivate領域の２つの領域を有する。Public領域はプリンタ２００やプリンタドライバ３０に関係なく共通の領域であり、ＯＳ上で動作する各プリンタドライバ３０に対して共通のメンバ変数が定義されている。Private領域は、そのメンバ変数をプリンタドライバ３０ごとに定義可能ないわゆる拡張領域である。図ではPublic領域にメンバ変数の一部として、dmDuplex、dmReserved1及びｄｍReserved2が、Private領域にmysetting01が図示されている。
【００５０】
Private領域のメンバ変数はそれぞれに設定される値により意味が規定されている。dmDuplex に"DMDUP_SIMPLEX"と設定されると「両面印刷しない」を意味し、"DMDUP_HORIZONTAL"が設定されると「水平方向に裏返して両面印刷する」を意味し、"DMDUP_VERTICAL"が設定されると「垂直方向に裏返して両面印刷する」を意味する。また、Private領域のメンバ変数にはプリンタドライバ３０が独自の意味を持たせることができるので、例えばmysetting01に"Yes"と設定されると「白紙節約する」を意味し、"No"と設定されると「白紙節約しない」を意味する。
【００５１】
一方、ｄｍReserved１、２はPublic領域においてプリンタドライバ３０が参照しないメンバ変数（現在は使用されない予約領域）であり、通常は"0x00000000"が設定される。
【００５２】
後述するように、本実施形態では、Preview.exe３２がｄｍReserved１、２の少なくともどちらかに"0x00000000"以外の値を設定する。よって、印刷確認部３０２はｄｍReserved１，２を参照して、"0x00000000"が設定されていると一般のアプリケーション３１がグラフィック部３３を呼び出したと判定し、"0x00000000"以外が設定されていると特定のアプリケーションがグラフィック部３３を呼び出したと判定する。
【００５３】
描画部３０１は、一般のアプリケーション３１がグラフィック部３３を呼び出したと判定すると、次の描画処理を行う。
【００５４】
図１０は、描画部３０１が行う描画処理の処理手順を示すフローチャート図の一例である。上述したように、描画部３０１は印刷データとして描画データ及び制御データを生成する。しかし、プリンタ２００が解釈する描画データ及び制御データと、Preview.exe３２が解釈する描画データ及び制御データは若干、フォーマットが異なっている。Preview.exe３２が解釈する描画データ及び制御データは、プリンタドライバ３０が内部的に使用するフォーマットであり中間データとなる。ＰＣ１００がプレビュー表示するか否かにより描画部３０１の内部処理を切り換えるよりも、処理を２段階に分ける方が実装が容易である。このため、描画部３０１は、ユーザが「印刷プレビュー画面を表示」をしたか否かに関係なくPreview.exe３２に対応するため、前処理と後処理の２段階で印刷データを生成する。前処理と後処理で得られる印刷データを区別するため、前処理で得られる印刷データに"int（Internal）"を付加した。
【００５５】
そして、ユーザが「印刷プレビュー画面を表示」を設定したか否かに応じて以下のタイミングで、描画部３０１は前処理と後処理をそれぞれ実行する。
【００５６】
ユーザが「印刷プレビュー画面を表示」をした場合：描画部３０１は前処理を行った段階で処理を停止する。Preview.exe３２は、１度目の前処理により作成された描画データ及び制御データを用いてプレビュー表示する。プレビュー表示後、描画部３０１はPreview.exe３２からint印刷データを取得して、２度目の前処理を行い、次いで後処理を行う。
【００５７】
ユーザが「印刷プレビュー画面を表示」をしない場合：描画部３０１は前処理を行い、次いで後処理を実行する。
【００５８】
すなわちいずれの場合も前処理が行われるが、後述するように、ユーザが「印刷プレビュー画面を表示」を設定した場合の１度目の前処理と２度目の前処理は処理内容が異なっている。ユーザが「印刷プレビュー画面を表示」を設定した場合の１度目の前処理と、ユーザが「印刷プレビュー画面を表示」を設定しない場合の前処理は同じである。また、後処理の内容はユーザが「印刷プレビュー画面を表示」を設定してもしなくても同様である。
【００５９】
図１１は、前処理と後処理により得られる印刷データを説明する図の一例である。制御データはプリンタ２００にジョブ全体及びページ単位の制御を通知するＰＪＬなどで記述された印刷コマンドであるので、それぞれJob 制御データ、Page 制御データと称することとする。描画データはアプリケーション３１が生成した文書データがプリンタ２００のＰＤＬによるＲＡＷデータに変換されたものである。図１１の印刷データは文書データが２ページのものである。Job int制御データは、１つのジョブに１つあればよいため、１つの印刷データに１つしか存在しない。これに対し、Page int制御データとint描画データはページ毎に生成されるので、１つの印刷データにページ数分だけ含まれる。
【００６０】
図１１に示すように、描画部３０１は、一般のアプリケーション３１から呼び出された場合、前処理において以下のデータを生成する。
(a)一般：ＤＥＶＭＯＤＥからJob int制御データを作成する。
(b)一般：ＤＥＶＭＯＤＥからPage int制御データを作成する。
(c)一般：文書データをint描画データに変換する。
【００６１】
また、描画部３０１は、後処理において以下のデータを生成する。
(d)： Job int制御データからJob 制御データを作成する。
(e)： Page int制御データからPage 制御データを作成する。
(f)： int描画データから描画データを作成する。
【００６２】
図１２（ａ）はJob int制御データの一例を、図１２（ｂ）はPage int制御データの一例をそれぞれ示す。Job int制御データには、印刷解像度、用紙サイズ、余白、部数、用紙トレイ、用紙種別、集約など、ジョブ全体の印刷の制御データが登録されている。
【００６３】
これに対し、Page int制御データには、原稿サイズ、原稿向き、原稿解像度、カラーモード、イメージ印刷の有無、などのページ単位の印刷の制御データが登録されている。原稿サイズ等の情報はＤＥＶＭＯＤＥやPreview.exe３２に保持されていない情報である。
【００６４】
＜５〜８＞
図７に戻り、５〜８について説明する。５〜８はプレビュー表示するまでの処理である。描画部３０１は前処理を完了すると、アプリケーション３１に通知する。ＤＥＶＭＯＤＥに「印刷プレビュー画面を表示」が登録されているので、グラフィック部３３はジョブを終了する。また、アプリケーション３１はＵＩ部に印刷終了を通知する。
５：プリンタドライバ３０のＵＩ部３４は、ＤＥＶＭＯＤＥを参照してPreview.exe３２を立ち上げる。
６：Preview.exe３２のＵＩ部３６は、プレビュー画面に表示するため、int印刷データ及びＤＥＶＭＯＤＥを連携部３５へ要求する。
７：連携部３５はプリンタドライバ３０のグラフィック部３３からint印刷データ及びＤＥＶＭＯＤＥを取得して、Preview.exe３２のＵＩ部３６に送出する。
８：Preview.exe３２のＵＩ部３６はint印刷データにより図８（ｂ）のようなプレビュー表示を行う。
【００６５】
図１３は、５〜８の処理を模式的に説明する図の一例である。図１３では２つのプリンタドライバ３０の処理の間に、Preview.exe３２が介在している。プリンタドライバ３０は上記の前処理と後処理を行うが、前処理の内容だけがPreview.exe３２の前後で異なっている。図７の１〜４により左側のプリンタドライバ３０の前処理が終了している。アプリケーション３１はこの段階で、印刷処理から解放されている（JoBEndでファイルを保存する）。
【００６６】
Preview.exe３２のＵＩ部３６は、int印刷データ及びＤＥＶＭＯＤＥを取得するので、以下の処理を行う。
(P1)  プリンタドライバＡＰＩにint印刷データを渡し、プレビュー表示を依頼する。
(P2)  ＤＥＶＭＯＤＥ編集部にＤＥＶＭＯＤＥを渡し、ユーザが設定した印刷設定の受け付けとＤＥＶＭＯＤＥの編集を依頼する。
【００６７】
なお、プリンタドライバＡＰＩやＤＥＶＭＯＤＥ編集部は、ソフトウェア実装上の表現に過ぎず、Preview.exe３２がプレビュー表示し、印刷設定を受け付けＤＥＶＭＯＤＥを編集してもよい。
【００６８】
ここで、ＤＥＶＭＯＤＥ編集部は、ユーザの印刷設定を変更したか否かに関わりなく、ＤＥＶＭＯＤＥのメンバ変数のdmReserved1及びｄｍReserved2に所定の値を設定する。所定の値は、"0x00000000"以外であればよいが、ここでは"ＳＡ（0x53、0x41）"とする。
【００６９】
図９（ｂ）はPreview.exe３２が編集したＤＥＶＭＯＤＥを説明する図の一例である。dmReserved1及びdmReserved2に"ＳＡ"を意味する１６進数の文字コードが設定されている。２つのメンバ変数に分ける必要はなく、dmReserved1又はdmReserved2のいずれかに"0x00000000"以外の所定の値を設定すればよい。これが上記のプレビュー設定である。
dmReserved1：0x53
dmReserved2：0x41
Public領域のメンバ変数はアプリケーションが設定することも可能な値であるため、アプリケーション（Preview.exe３２）からdmReserved1、2に値を設定することができる。Private領域のメンバ変数に値を設定することは不可能ではないが、通常、アプリケーションはPrivate領域の中身を知ることはできない。このため、ＵＩ部やＤＥＶＭＯＤＥにアクセスするためのＡＰＩ等を使用せずに、プリンタのメーカ独自機能を使うことは困難であるが、本実施形態の手法では、アプリケーションが簡単にメーカ独自機能（プレビュー設定のこと）を設定することができる。
【００７０】
ユーザがプレビュー表示画面５００から印刷設定やジョブ編集を行い、図８（ｂ）の印刷ボタン５１０を押下すると、右側のプリンタドライバ３０の処理が始まる。すなわち、Preview.exe３２は、Escape（）関数でint印刷データをＧＤＩ３８に送信する。Escape（）関数はＧＤＩ３８で処理しきれない印刷指示をそのまま、プリンタドライバ３０に送信するためのＡＰＩである。
【００７１】
図１４は、Preview.exe３２がプリンタドライバ３０に送信するint印刷データを模式的に説明する図の一例である。図１４（ａ）は変更前のint印刷データを示し、図１４（ｂ）は変更後のint印刷データをそれぞれ示す。ここで、変更には、ユーザによる変更もdmReserved1及びdmReserved2による変更も含まれる。ユーザ又はPreview.exe３２による変更を現すため、図１４（ｂ）ではＤＥＶＭＯＤＥがＤＥＶＭＯＤＥ´になっている。図１３の右側のプリンタドライバ３０は、図１４（ｂ）のint印刷データに対し前処理及び後処理を行う。
【００７２】
＜９〜１４＞
図７に戻り、９〜１４について説明する。９〜１４はPreview.exe３２から受け取ったint印刷データをプリンタドライバ３０がプリンタ２００に送出するまでの処理である。
９：Preview.exe３２のＵＩ部３６は、プリンタドライバ３０のＵＩ部３４にＤＥＶＭＯＤＥ´を送出する。例えば、ＣｒｅａｔｅＤＣ（）の引数にＤＥＶＭＯＤＥ´を指定する。
１０：Preview.exe３２のＵＩ部３６は、プリンタドライバ３０のグラフィック部３３にint印刷データを送出する。例えば、Escape（）でＤＥＶＭＯＤＥ´が含まれないint印刷データを送信する。
１１：ＧＤＩ３８は２回目のＧＤＩコールをＤＤＩコールへ変換し、グラフィック部３３に印刷データの生成を要求する。
１２：グラフィック部３３の印刷確認部３０２は、ＵＩ部３４が取得したＤＥＶＭＯＤＥ´を参照して、呼び出し元のアプリケーションが特定のアプリケーションか否かを判定する。今回は、ＤＥＶＭＯＤＥ´に図９（ｂ）のプレビュー設定が登録されているので、印刷確認部３０２は特定のアプリケーション（Preview.exe３２）から呼び出されたと判定する。
１３：描画部３０１は、印刷確認部３０２の判定結果に応じて前処理を行い、次いで後処理を行う。描画部３０１は、印刷データをスプーラ３７に送出する。
１４：スプーラ３７はプリンタ２００へ印刷データを渡し、印刷指示を行う。
【００７３】
図１５は、９〜１４までの処理を模式的に説明する図の一例である。上記のように、Preview.exe３２はＤＥＶＭＯＤＥ´をＵＩ部３４に、int印刷データをグラフィック部３３にそれぞれ送出している。描画部３０１はＤＥＶＭＯＤＥ´が必要なので、ＵＩ部３６はＤＥＶＭＯＤＥ´を描画部３０１に送出する。なお、描画部３０１はＯＳ１０のシステム権限で動作し、ＵＩ部３６はユーザ権限で動作するので、描画部３０１とＵＩ部３６は直接の通信はできないが、ＤＥＶＭＯＤＥ（又はＤＥＶＭＯＤＥ´）には共通にアクセスできる。
【００７４】
この後、図１３の右側のプリンタドライバ３０の処理が開始される。上記のように、描画部３０１は、印刷確認部３０２が特定のアプリケーションから呼び出されたという判定結果に基づき、前処理において以下のデータを生成する。
(a)特定：ＤＥＶＭＯＤＥ´からJob int制御データを作成する。
(b)特定：Preview.exe３２から取得したPage int制御データを転用する（ＤＥＶＭＯＤＥ´からPage int制御データを作成しない）。
(c)特定： int描画データを後処理に渡す。
【００７５】
すなわち、描画部３０１は特定のアプリケーション（Preview.exe３２）から呼び出された場合、すでに作成されているint印刷データを取得し、処理が不要なデータに対しては処理をスキップする。
【００７６】
描画部３０１は、後処理において以下のデータを生成する。
(d)： Job int制御データ（新たに作成されたもの）からJob 制御データを作成する。
(e)： Page int制御データ（元のまま）からPage 制御データを作成する。
(f)： int描画データ（元のまま）から描画データを作成する。
【００７７】
後処理により得られた印刷データにより、プリンタ２００は従来どおり印刷することができる。
【００７８】
〔動作手順〕
図１６は、ＰＣ１００の動作手順を説明するシーケンス図の一例を示す。なお、図ではＧＤＩ３８などを省略した。
S1：ユーザが操作することでアプリケーション３１がＵＩ部３４を起動させ、ユーザは印刷設定を行う。アプリケーション３１はＵＩ部３４に印刷設定する（ＤＥＶＭＯＤＥを作成）。
S2：アプリケーション３１はＧＤＩ３８を介してグラフィック部３３を呼び出し、印刷を開始する。
S2.1：グラフィック部３３の描画部３０１は、ＤＥＶＭＯＤＥを参照して、一般のアプリケーション３１から呼び出された際の前処理(a)一般〜(c)一般を行う。ＤＥＶＭＯＤＥと作成したint印刷データをファイルとして保存する。
S3：アプリケーション３１はint印刷データが生成されるとＵＩ部３４に印刷終了を指示する。
S3.1：ＵＩ部３４は、ＤＥＶＭＯＤＥに「印刷プレビュー画面を表示」が設定されているので、Preview.exe３２を起動する。
S.3.1.1：Preview.exe３２はint印刷データ及びＤＥＶＭＯＤＥを取得する。
S3.1.2：Preview.exe３２は、取得したint印刷データ及びＤＥＶＭＯＤＥを削除しておく。これは、すでにPreview.exe３２がint印刷データ及びＤＥＶＭＯＤＥを確保したので、２つのint印刷データ及びＤＥＶＭＯＤＥが存在することを回避するためである。なお、削除はこのタイミングでなくプレビュー表示後でもよい。
S3.1.3：Preview.exe３２はプレビュー表示する。
S3.1.4：Preview.exe３２はＤＥＶＭＯＤＥのdmReserved1及びdmReserved2にプレビュー設定を行う。
S4:Preview.exe３２は、ＵＩ部３４に印刷開始を要求する。
S5：Preview.exe３２は、Ｅｓｃａｐｅ（）関数でＧＤＩ３８をコールして印刷を開始する。これにより、描画部３０１はＤＥＶＭＯＤＥ´を参照して、(a)特定〜(c)特定及び後処理を行う。
【００７９】
以上のように、本実施形態のプリンタドライバ３０は、特定のアプリケーションがＤＥＶＭＯＤＥにプレビュー設定することで、グラフィック部３３は特定のアプリケーションから呼び出されたことを検出して、特殊な処理を行うことができる。
【００８０】
〔変形例〕
本実施例では、Preview.exe３２がＤＥＶＭＯＤＥのdmReserved1及びdmReserved2にプレビュー設定したが、Public領域の他のメンバ変数にプレビュー設定することも可能である。
【００８１】
図１７は、Public領域の他のメンバ変数に登録されるプレビュー設定の一例を示す図である。dmDisplayFrequencyは、ディスプレイの周波数をＨｚ単位で指定するメンバ変数である。プリンタ２００の印刷時にはこのメンバ変数は作用しない（印刷データの作成のためには参照されない）ので、Preview.exe３２がプレビュー設定に利用することができる。dmDisplayFrequencyにはどのような値を設定してもよいが、通常は数値が設定されるので、Preview.exe３２は数値以外の文字コード（例えば、Prev）などを設定すればよい。
【００８２】
このように、本実施例のプリンタドライバ３０は、デバイスによっては使用しないＤＥＶＭＯＤＥのメンバ変数を使用して、グラフィック部３３の処理内容を制御できる。
【実施例２】
【００８３】
本実施例では、ＤＥＶＭＯＤＥを使用しないで、グラフィック部３３が呼び出したアプリケーションを判別するプリンタドライバ３０について説明する。
【００８４】
アプケーションは文書データの印刷時、ＧＤＩ３８をStartDoc（）関数でコールする。StartDoc（）関数の書式は例えば、以下のようになる。
「int StartDoc(
HDC hdc,              // デバイスコンテキストのハンドル
CONST DOCINFO *lpdi   // ファイル名を指定する
);  」
なお、"hdc"は、すでにアプリケーション３１がコールしたCreateDC() 関数の戻り値に含まれている。"DOCINFO"はDOCINFO構造体と呼ばれ、文書データの文書名と出力ファイルの文書名が指定される。"*lpdi"は、DOCINFO構造体へのポインタである。
【００８５】
図１８（ａ）は、DOCINFO構造体の書式の一例を示す図である。
"cbSize"にはDOCINFO構造体のサイズが指定される。
"lpszDocName"には、文書データの名前が指定される。
"lpszOutput"には、出力ファイルの名前を表す文字列へのポインタが指定されるが、NULL としておくこともできる。
"lpszDataType"には、印刷ジョブを記録するためのデータ型を表す文字列が指定される。"fwType"は、印刷ジョブの追加情報が指定される。
【００８６】
アプリケーション３１は、文書データの文書名を管理しているので、文書名は既知である。したがって、StartDoc()関数でＧＤＩコールする際に、DOCINFO構造体の"lpszDocName"に文書名を設定しておくことで、ＧＤＩ３８に文書データの文書名を通知できる。
【００８７】
そして、ＧＤＩ３８はＤＤＩコールでグラフィック部３３を呼び出す際、DrvStartDoc()関数を使用する。
【００８８】
図１８（ｂ）は、DrvStartDoc()関数の書式の一例を示す図である。
"*pso"にはSURFOBJ構造体へのポインタが格納される。
"pwszDocName"には、印刷される文書データの文書名へのポインタが格納される。
"dwJobId"には、ジョブを一意に識別するためのＪＯＢＩＤが格納される。
【００８９】
したがって、グラフィック部３３は、DrvStartDoc()関数の引数pwszDocNameにより文書データの文書名を取得することができる。
【００９０】
そこで、特定のアプリケーション（Preview.exe３２）がStartDoc（）関数を呼び出す際、lpszDocNameに設定する文書データの文書名に特定の名前を付与することで、グラフィック部３３は特定のアプリケーション（Preview.exe３２）から呼び出されたと判定できる。
【００９１】
図１９は、Preview.exe３２が付与する文書名の一例を示す。Preview.exe３２は、例えば「メモ帳−無題−」という文書データの文書名に対し、「_PREVIEW」のような接尾語を付加して、lpszDocNameに設定する。なお、文書作成ソフトなどのアプリケーション３１が管理する文書名は、Job int制御データに含まれている。
【００９２】
なお、図１９では、文書名に接尾語を付与したが、接頭語を付与してもよい。この場合、Preview.exe３２は、例えば「メモ帳−無題」という文書データの文書名に対し、「PREVIEW−」のような接頭語を付与する。よって、lpszDocNameには「PREVIEW−メモ帳−無題」という文書名が付与される。
【００９３】
また、「PREVIEW」は一例であって、およそ、文書名の先頭や末尾にユーザが付けることない単語や用語であればよい。例えば、「Special_Application」などである。また、このような意味のある単語や用語である必要はなく、所定文字数以上の不作為の文字、記号、アルファベット、及び、数字の組み合わせなどでもよい。
【００９４】
図２０は、ＰＣ１００の動作手順を説明するシーケンス図の一例を示す。図２０の処理はS3.1.4までは図１６と同様である。
S1：ユーザが操作することでアプリケーション３１がＵＩ部３４を起動させ、ユーザは印刷設定を行う。アプリケーション３１はＵＩ部３４に印刷設定する（ＤＥＶＭＯＤＥを作成）。
S2：アプリケーション３１はＧＤＩ３８を介してグラフィック部３３を呼び出し、印刷を開始する。
S2.1：グラフィック部３３の描画部３０１は、ＤＥＶＭＯＤＥを参照して、一般のアプリケーション３１から呼び出された際の前処理(a)一般〜(c)一般を行う。ＤＥＶＭＯＤＥと作成したint印刷データをファイルとして保存する。
S3：アプリケーション３１はint印刷データが生成されるとＵＩ部３４に印刷終了を指示する。
S3.1：ＵＩ部３４は、ＤＥＶＭＯＤＥに「印刷プレビュー画面を表示」が設定されているので、Preview.exe３２を起動する。
S.3.1.1：Preview.exe３２はint印刷データ及びＤＥＶＭＯＤＥを取得する。
S3.1.2：Preview.exe３２は、取得したint印刷データ及びＤＥＶＭＯＤＥを削除しておく。これは、すでにPreview.exe３２がint印刷データ及びＤＥＶＭＯＤＥを確保したので、２つのint印刷データ及びＤＥＶＭＯＤＥが存在することを回避するためである。なお、削除はこのタイミングでなくプレビュー表示後でもよい。
S3.1.3：Preview.exe３２はプレビュー表示する。
S3.2：Preview.exe３２は、ＧＤＩ３８をコールするまでに、lpszDocNameに「PREVIEW−」を付加した文書名を設定する。
S4：Preview.exe３２はＵＩ部３４を起動させ、印刷設定する。本実施例ではユーザが印刷設定を変更しなければＵＩ部３４にはＤＥＶＭＯＤＥが送出される。
S5：Preview.exe３２は、ＧＤＩ３８に対しStartDoc（）関数をコールすることで印刷開始する。
S5.1：ＧＤＩ３８は、DrvStartDoc()関数によりグラフィック部３３をＤＤＩコールする。
これにより、描画部３０１はpwszDocNameを参照して、(a)特定〜(c)特定の処理及び後処理を行う。
【００９５】
以上のように、本実施形態のプリンタドライバ３０では、特定のアプリケーションが文書データに特定の文書名を設定することで、グラフィック部３３が特定のアプリケーションから呼び出されたことを検出して、特殊な処理を行うことができる。
【符号の説明】
【００９６】
３０      プリンタドライバ
３１      アプリケーション
３２      Preview.exe
３３      グラフィック部
３４、３６    ＵＩ部
３５      連携部
３７      スプーラ
３８      ＧＤＩ
１００    ＰＣ
２００    プリンタ
３０１    描画部
３０２    印刷確認部
４００    印刷システム
【先行技術文献】
【特許文献】
【００９７】
【特許文献１】特開２００９‐２３０４２６号公報
【図１】
0005807460.tif 000002
【図２】
0005807460.tif 000003
【図３】
0005807460.tif 000004
【図４】
0005807460.tif 000005
【図５】
0005807460.tif 000006
【図６】
0005807460.tif 000007
【図７】
0005807460.tif 000008
【図８】
0005807460.tif 000009
【図９】
0005807460.tif 000010
【図１０】
0005807460.tif 000011
【図１１】
0005807460.tif 000012
【図１２】
0005807460.tif 000013
【図１３】
0005807460.tif 000014
【図１４】
0005807460.tif 000015
【図１５】
0005807460.tif 000016
【図１６】
0005807460.tif 000017
【図１７】
0005807460.tif 000018
【図１８】
0005807460.tif 000019
【図１９】
0005807460.tif 000020
【図２０】
0005807460.tif 000021