(57)【特許請求の範囲】
【請求項１】
文書を印刷すべく該文書の描画命令を発行するアプリケーションと、該描画命令に基づいて印刷装置が解釈可能な印刷データを含む印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムとが実行される情報処理装置であって、
前記印刷制御プログラムの印刷設定画面を介するユーザからの指示に応じて、印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性を設定する印刷属性設定手段と、
前記アプリケーションに対して前記印刷装置が解釈可能な印刷データを生成することを許可する許可手段と、
前記許可手段により前記アプリケーションが印刷データを生成することが許可されており、かつ、前記印刷属性設定手段により印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性が設定されている場合に、前記アプリケーションが生成した印刷データを解析し、ページ区切りコードを検索する解析手段と、
前記解析手段によるページ区切りコードの検索結果に従って、該アプリケーションが生成した印刷データに対して、前記特定のページあるいは特定のページ範囲に対して前記印刷属性が付与されるべく、前記印刷属性を指定する印刷属性命令を挿入する命令挿入手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションが、前記印刷装置が解釈可能な印刷データを生成することが可能であるか判定する判定手段を更に有し、
前記許可手段は、前記判定手段により前記アプリケーションが印刷データを生成することが可能であると判定する場合に、前記アプリケーションに対して印刷データを生成することを許可することを特徴とする請求項１記載の情報処理装置。
【請求項３】
複数のアプリケーション毎のページ区切りコードを保持するページ区切りコード保持手段を更に有し、
前記解析手段は、前記ページ区切りコード保持手段により保持されている該当するアプリケーションのページ区切りコードを、前記アプリケーションが生成した印刷データから検索することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記命令挿入手段は、前記解析手段によりページ区切りコードが検索されることに応じて該印刷データのページ数を計数し、計数されたページ数が前記特定のページ、あるいは特定のページ範囲の最初のページに相当する場合に、前記アプリケーションが生成した印刷データに対して前記印刷属性を指定する印刷属性命令を挿入することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記印刷属性設定手段により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されているか判断する印刷属性判断手段を更に有し、
前記印刷属性判断手段により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されていないと判断される場合に、前記解析手段による解析処理は行わずに、生成された印刷データを含む印刷ジョブを印刷装置へ送信することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
文書を印刷すべく該文書の描画命令を発行するアプリケーションと、該描画命令に基づいて印刷装置が解釈可能な印刷データを含む印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムとが実行される情報処理装置における印刷制御方法であって、
前記印刷制御プログラムの印刷設定画面を介するユーザからの指示に応じて、印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性を設定する印刷属性設定工程と、
前記アプリケーションに対して前記印刷装置が解釈可能な印刷データを生成することを許可する許可工程と、
前記許可工程により前記アプリケーションが印刷データを生成することが許可されており、かつ、前記印刷属性設定工程により印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性が設定されている場合に、前記アプリケーションが生成した印刷データを解析し、ページ区切りコードを検索する解析工程と、
前記解析工程によるページ区切りコードの検索結果に従って、該アプリケーションが生成した印刷データに対して、前記特定のページあるいは特定のページ範囲に対して前記印刷属性が付与されるべく、前記印刷属性を指定する印刷属性命令を挿入する命令挿入工程と、
を含むことを特徴とする印刷制御方法。
【請求項７】
前記アプリケーションが、前記印刷装置が解釈可能な印刷データを生成することが可能であるか判定する判定工程を更に含み、
前記許可工程は、前記判定工程により前記アプリケーションが印刷データを生成することが可能であると判定する場合に、前記アプリケーションに対して印刷データを生成することを許可することを特徴とする請求項６記載の印刷制御方法。
【請求項８】
前記情報処理装置のメモリに保持されている複数のアプリケーション毎のページ区切りコードを読み出す読み出し工程を更に含み、
前記解析工程は、前記読み出し工程で読み出された該当するアプリケーションのページ区切りコードを、前記アプリケーションが生成した印刷データから検索することを特徴とする請求項６または７に記載の印刷制御方法。
【請求項９】
前記命令挿入工程は、前記解析工程によりページ区切りコードが検索されることに応じて該印刷データのページ数を計数し、計数されたページ数が前記特定のページ、あるいは特定のページ範囲の最初のページに相当する場合に、前記アプリケーションが生成した印刷データに対して前記印刷属性を指定する印刷属性命令を挿入することを特徴とする請求項６乃至８のいずれか１項に記載の印刷制御方法。
【請求項１０】
前記印刷属性設定工程により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されているか判断する印刷属性判断工程を更に含み、
前記印刷属性判断工程により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されていないと判断される場合に、前記解析工程による解析処理は行わずに、生成された印刷データを含む印刷ジョブを印刷装置へ送信することを特徴とする請求項６乃至９のいずれか１項に記載の印刷制御方法。
【請求項１１】
文書を印刷すべく該文書の描画命令を発行するアプリケーションが実行される情報処理装置において読み取り実行可能な、該描画命令に基づいて印刷装置が解釈可能な印刷データを含む印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムであって、
前記印刷制御プログラムの印刷設定画面を介するユーザからの指示に応じて、印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性を設定する印刷属性設定工程と、
前記アプリケーションに対して前記印刷装置が解釈可能な印刷データを生成することを許可する許可工程と、
前記許可工程により前記アプリケーションが印刷データを生成することが許可されており、かつ、前記印刷属性設定工程により印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性が設定されている場合に、前記アプリケーションが生成した印刷データを解析し、ページ区切りコードを検索する解析工程と、
前記解析工程によるページ区切りコードの検索結果に従って、該アプリケーションが生成した印刷データに対して、前記特定のページあるいは特定のページ範囲に対して前記印刷属性が付与されるべく、前記印刷属性を指定する印刷属性命令を挿入する命令挿入工程と、
を前記情報処理装置に実行させるための印刷制御プログラム。
【請求項１２】
前記アプリケーションが、前記印刷装置が解釈可能な印刷データを生成することが可能であるか判定する判定工程を更に前記情報処理装置に実行させ、
前記許可工程は、前記判定工程により前記アプリケーションが印刷データを生成することが可能であると判定する場合に、前記アプリケーションに対して印刷データを生成することを許可することを特徴とする請求項１１記載の印刷制御プログラム。
【請求項１３】
前記情報処理装置のメモリに保持されている複数のアプリケーション毎のページ区切りコードを読み出す読み出し工程を更に前記情報処理装置に実行させ、
前記解析工程は、前記読み出し工程で読み出された該当するアプリケーションのページ区切りコードを、前記アプリケーションが生成した印刷データから検索することを特徴とする請求項１１または１２に記載の印刷制御プログラム。
【請求項１４】
前記命令挿入工程は、前記解析工程によりページ区切りコードが検索されることに応じて該印刷データのページ数を計数し、計数されたページ数が前記特定のページ、あるいは特定のページ範囲の最初のページに相当する場合に、前記アプリケーションが生成した印刷データに対して前記印刷属性を指定する印刷属性命令を挿入することを特徴とする請求項１１乃至１３のいずれか１項に記載の印刷制御プログラム。
【請求項１５】
前記印刷属性設定工程により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されているか判断する印刷属性判断工程を更に前記情報処理装置に実行させ、
前記印刷属性判断工程により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されていないと判断される場合に、前記解析工程による解析処理は行わずに、生成された印刷データを含む印刷ジョブを印刷装置へ送信することを特徴とする請求項１１乃至１４のいずれか１項に記載の印刷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションおよびプリンタドライバが搭載されたクライアントコンピュータとプリンタが通信媒体で接続された印刷システムにおいて適用される情報処理装置および印刷制御方法および印刷制御プログラムに関する。特に、特定のページで異なる印刷属性が設定されている場合に、アプリケーションで生成された印刷データに対しても、印刷ジョブ途中で印刷属性を変更する情報処理装置および印刷制御方法および印刷制御プログラムに関する。
【背景技術】
【０００２】
アプリケーションからプリンタドライバを使用して印刷を行う場合、特定のページあるいはページ範囲に対して、ジョブ全体の印刷属性とは異なる印刷属性設定を行いたい、という需要がある。
【０００３】
例えば、複数の章からなるドキュメントの作成を行った場合、章の始まりのページのみ色紙を使用し、他のページは白紙を使用したい、というケースがある。この場合、ジョブ全体としては、用紙は白紙を使用する、という設定を行うが、章の始まりのページのみ、色紙を使用する、というジョブ全体の印刷属性設定とは異なる印刷属性設定を行う。例えば、用紙サイズ、片面／両面、フィニッシング、カラー設定など、他の設定に関しても特定のページあるいはページ範囲に対してジョブ全体の印刷属性設定とは異なる設定を行いたいケースがある。
【０００４】
よって近年のプリンタドライバでは、特定のページあるいはページ範囲に対してジョブ全体の印刷属性設定とは異なる印刷属性設定が可能で、ページ区切りのタイミングで印刷属性を変更することによりページ毎に異なる印刷属性での印刷を実現することができる。特許文献１には、アプリケーションからオペレーティングシステム（以下ＯＳ）の描画部（ＧＤＩ）に対して文書の描画命令を発行し、ＧＤＩが生成したメタファイルをプリンタドライバが受け取り印刷データを生成するシステムが開示されている。このシステムでは、プリンタドライバは、受け取ったメタファイルをページ単位に設定された印刷設定に従って印刷データに変換している。また、特許文献２には、ＧＤＩが生成した中間データをスプールし、各ページの部数設定に従って中間データを編集し、再度ＧＤＩを介して印刷指示を行うことで、ページ単位に部数指定された印刷データを生成する仕組みが開示されている。
【０００５】
このように、一般的なプリンタドライバは、アプリケーションからＧＤＩを介して描画命令を受け取り、この描画命令に基づいて生成される各ページの印刷データをパッキングして印刷ジョブを生成する構成を取っている。
【０００６】
一方、近年は、アプリケーション自身がＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：ページ記述言語）コードを直接生成しプリンタドライバ経由でプリンタに送信することもある。例えば、米国Ａｄｏｂｅ社のアプリケーションは、Ｐｏｓｔｓｃｒｉｐｔ（以下、ＰＳ）形式の印刷データを生成することが可能である。もちろんプリンタドライバでもＰＳデータを生成することは可能であるが、Ａｄｏｂｅ社のアプリケーションで作成された文書（画像）は、ＯＳのＧＤＩに合わせて描画命令を発行すると、ＧＤＩの機能に依存してしまうため、画質が劣化してしまうことがある。例えばＧＤＩはグラデーション表現に弱いため、米国マイクロソフト社のＯＳであるＷＩＮＤＯＷＳ（登録商標）のＧＤＩ（Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）描画命令に合わせると、段階的に明度や色味が変化させる単位で描画命令を区切る必要がある。そのため、なめらかに階調表現等のグラデーション表現を行うことができないという問題がある。そのため、アプリケーション自信が印刷データを生成することによりＧＤＩの描画機能にあわせることなく、高品質な印刷データを生成することが可能となっている。このようにアプリケーションが印刷装置が解釈可能な印刷データを生成する印刷処理系（パススルー系と呼ばれる）では、オペレーティングシステム（ＯＳ）の描画部（ＧＤＩモジュール）及びプリンタドライバは、この印刷データになんら手を加えることはない。そのため、プリンタドライバは、パススルー系では、印刷データの解析処理や編集処理を行わないため、印刷ジョブの途中での印刷属性変更ができなかった。
【０００７】
この問題点の一部を解決するために、本出願人により特許文献３が出願されている。特許文献３には、プリンタドライバのユーザインタフェース画面からＮｕｐや製本などの特定の印刷設定が指定されている場合に、アプリケーションに印刷データを生成させず、プリンタドライバ側で印刷データを生成できるように、パススルー処理系を禁止している。このように、プリンタドライバからアプリケーションに対してパススルー処理系を禁止することで、Ｎｕｐや製本印刷だけでなく、ページ単位の印刷属性の変更を行うことが可能である。しかしながら、この場合は、従来のようにアプリケーションはＯＳのＧＤＩに依存する描画機能で描画命令を発行しなければならず、印刷品質が低下してしまうという問題がある。
【特許文献１】特開２００４−１２６８７１号公報
【特許文献２】特開２００３−０５８３３４号公報
【特許文献３】特開２００２−０９１７２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
背景技術で説明したように、従来の技術では、アプリケーション自身がＰＤＬコードを直接生成するパススルー処理系では、プリンタドライバではなんら処理を加えていないため、印刷ジョブの途中で印刷属性を変更できないという問題点があった。
【０００９】
また、プリンタドライバで印刷データを生成する処理系では、アプリケーションは、ＯＳの描画処理能力に合わせて描画命令を発行するため、高機能なアプリケーションで生成した文書の品質が低下してしまうおそれがある。
【００１０】
これらの問題点を解決するための１つの手法として、ジョブチケット方式と呼ばれる印刷ジョブの生成方法がある。ジョブチケット方式とは、アプリケーションで作成された印刷データに対して、各ページの印刷属性が記述されたジョブチケットを添付してプリンタへ送信するものである。このジョブチケットとは、印刷属性設定を記述したデータであり、各ページの印刷データとは別に、印刷ジョブの先頭部分に付加されてプリンタに送信される。これにより、印刷データ自体はアプリケーションが生成するため、高品質を保つことができ、また、ジョブチケットに各ページの印刷属性が記述されているため、印刷ジョブの途中で印刷属性を変更することが可能である。
【００１１】
しかしながらジョブチケット方式の場合、プリンタ側でジョブチケットの解析を行わなければならず、汎用的な印刷装置に対しては、印刷ジョブの途中で印刷属性を変更する機能を提供することができないという問題がある。
【００１２】
そこで本発明は、アプリケーションが印刷データを生成する場合にも、プリンタドライバで印刷データ中に印刷属性を変更する命令を付加することで、汎用的な印刷装置に対しても、印刷ジョブの途中の印刷属性を変更することを可能にすることを目的とする。
【課題を解決するための手段】
【００１３】
本願発明は上記課題を鑑みてなされたものであり、文書を印刷すべく該文書の描画命令を発行するアプリケーションと、該描画命令に基づいて印刷装置が解釈可能な印刷データを含む印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムとが実行される情報処理装置であって、前記印刷制御プログラムの印刷設定画面を介するユーザからの指示に応じて、印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性を設定する印刷属性設定手段と、前記アプリケーションに対して前記印刷装置が解釈可能な印刷データを生成することを許可する許可手段と、前記許可手段により前記アプリケーションが印刷データを生成することが許可されており、かつ、前記印刷属性設定手段により印刷ジョブ中の特定のページ、あるいは特定のページ範囲に対する印刷属性が設定されている場合に、前記アプリケーションが生成した印刷データを解析し、ページ区切りコードを検索する解析手段と、前記解析手段によるページ区切りコードの検索結果に従って、該アプリケーションが生成した印刷データに対して、前記特定のページあるいは特定のページ範囲に対して前記印刷属性が付与されるべく、前記印刷属性を指定する印刷属性命令を挿入する命令挿入手段とを有することを特徴とする。
【００１４】
また、前記アプリケーションが、前記印刷装置が解釈可能な印刷データを生成することが可能であるか判定する判定手段を更に有し、前記許可手段は、前記判定手段により前記アプリケーションが印刷データを生成することが可能であると判定する場合に、前記アプリケーションに対して印刷データを生成することを許可することを特徴とする。
【００１５】
また、複数のアプリケーション毎のページ区切りコードを保持するページ区切りコード保持手段を更に有し、前記解析手段は、前記ページ区切りコード保持手段により保持されている該当するアプリケーションのページ区切りコードを、前記アプリケーションが生成した印刷データから検索することを特徴とする。
【００１６】
また、前記命令挿入手段は、前記解析手段によりページ区切りコードが検索されることに応じて該印刷データのページ数を計数し、計数されたページ数が前記特定のページ、あるいは特定のページ範囲の最初のページに相当する場合に、前記アプリケーションが生成した印刷データに対して前記印刷属性を指定する印刷属性命令を挿入することを特徴とする。
【００１７】
また、前記印刷属性設定手段により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されているか判断する印刷属性判断手段を更に有し、前記印刷属性判断手段により前記特定のページ、あるいは特定のページ範囲に対して、前記印刷ジョブ全体に対する印刷属性と異なる印刷属性が設定されていないと判断される場合に、前記解析手段による解析処理は行わずに、生成された印刷データを含む印刷ジョブを印刷装置へ送信することを特徴とする。
【００１８】
また、上記手段を実行する各工程を含む印刷制御方法、及び上記手段を情報処理装置に実現する印刷制御プログラムにより解決する。
【発明の効果】
【００１９】
本発明によって、アプリケーションが印刷装置が解釈可能な印刷データを生成する場合にも、プリンタドライバとして印刷制御プログラムを用いて、印刷データ中に特定のページあるいは特定のページ範囲で印刷属性を変更する指示を付加することができる。これにより、一般的な印刷装置に対しても、ページ毎に印刷設定を変更することが可能となる。
【発明を実施するための最良の形態】
【００２０】
［システム構成］
図１は、本発明におけるシステム構成の一例を示すシステム構成図である。
【００２１】
図に示すように、本発明が適用される一例の印刷システムは、クライアントＰＣ１０１および１０２、プリンタ１０３から構成されており、これらはネットワーク１０４によって通信することが可能となっている。尚、本システムでは、ネットワーク上に複数のクライアントＰＣが存在することを示すために２台図示しているが、２台とも同じ構成のため以降、クライアントＰＣの１０１のみを説明に使用する。
【００２２】
また、本発明の情報処理装置に好適なクライアントＰＣ（パーソナルコンピュータ）１０１は文書などを作成するためのいくつかのアプリケーション、プリンタ１０３で解釈可能な印刷データを生成するプリンタドライバが搭載されている。印刷装置であるプリンタ１０３は、ネットワーク１０４を介して入力された印刷データを解釈し、印刷属性に従って各ページの印刷データの印刷処理を実行する。
【００２３】
［ホストコンピュータ及びプリンタのハードウェア構成］
図２９は、ホストコンピュータ３０００（図１のクライアントＰＣ１０１）及びプリンタ１５００（図１のプリンタ１０３）のハードウェア構成例を示すブロック図である。なお、本実施形態の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ、ＷＡＮ等のネットワークを介して接続され、処理が行われるシステムであっても本発明を適用することができる。
【００２４】
図２９において、コンピュータ３０００は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて動作するＣＰＵ１を備えている。ＣＰＵ１は、以降で後述される本発明の各実施形態に係わる処理を含む、図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理及びそれに基づく印刷処理の実行を制御する。
【００２５】
このＣＰＵ１がシステムバス４に接続されている各デバイスの制御を総括する。また、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（ＯＳ）等が記憶されている。また、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には前記文書処理の際に使用するフォントデータ等が記憶されている。さらに、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には前記文書処理等を行う際に使用する各種データが記憶されている。ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。
【００２６】
キーボードコントローラ（ＫＢＣ）５は、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）６は、ＣＲＴディスプレイ（ＣＲＴ）１０による表示を制御する。７はディスクコントローラ（ＤＫＣ）を示し、ハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。
【００２７】
外部メモリ１１は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、本発明の印刷制御プログラム（以下プリンタドライバと呼ぶ）等を記憶する。プリンタコントローラ（ＰＲＴＣ）８は、双方向性インターフェース（インターフェース）２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。
【００２８】
なお、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて、予め登録された種々のウィンドウを開き、種々のデータ処理を実行する。ユーザは、印刷を実行する際に、印刷の設定に関するウィンドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行うことができる。
【００２９】
プリンタ１５００は、プリンタＣＰＵ１２によって制御される。プリンタＣＰＵ１２は、ＲＯＭ１３に記憶された制御プログラム等、あるいは外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続されている印刷部（プリンタエンジン）１７に印刷出力情報としての画像信号を出力する。
【００３０】
また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等が記憶されている。また、ＲＯＭ１３のフォント用ＲＯＭには前記印刷出力情報を生成する際に使用するフォントデータ等が記憶される。また、ＲＯＭ１３のデータ用ＲＯＭには、ハードディスク等の外部メモリ１４がないプリンタの場合には、コンピュータ上で利用される情報等が記憶されている。
【００３１】
ＣＰＵ１２は、入力部１８を介してコンピュータとの通信処理が可能となっている。これにより、プリンタ内の情報等をコンピュータ３０００に通知することができる。ＲＡＭ１９は、ＣＰＵ１２の主メモリや、ワークエリア等として機能するＲＡＭである。また、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。
【００３２】
前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、１８は前述した操作パネルで操作のためのスイッチ及びＬＥＤ表示器等により構成される入力部である。なお、プリンタ１５００は図示しないＮＶＲＡＭを有し、操作部１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００３３】
印刷部１７は、本実施形態では電子写真方式のエンジンである。したがって、印刷データはトナーのドットによって最終的に紙などの媒体上に記録される。なお、本発明における印刷の方式はこのような電子写真方式に限られない。例えば、インクジェット方式など、ドットを形成して印刷を行ういずれの方式の印刷装置にも本発明を適用することができる。
【００３４】
［プリンタドライバの動作概要］
図２は、アプリケーションから印刷指示を行う際に表示画面に表示される印刷ダイアログ画面である。また、図３〜図７は、本発明の印刷制御プログラムとしてのプリンタドライバにより提供されるユーザインタフェース（印刷設定画面とも呼ぶ）の一例を示す模式図である。
【００３５】
図２において、２０１はアプリケーションから印刷を行う際に開かれる、出力先と簡易な印刷設定を行うための印刷ダイアログ画面である。このウィンドウ２０１内の設定項目において、２０２はターゲットとなる出力先のプリンタドライバを選択する送信先の選択欄である。尚、各プリンタドライバには出力先のポートとして印刷装置のＩＰアドレスが設定されている。このように画面上に表示させる選択欄２０２を介するユーザ操作により、本システムの所望の出力先デバイスが選択可能となる。
【００３６】
２０３はアプリケーションで作成した文書の中から出力ページを選択するページ設定コントロールである。なお、この印刷ダイアログが表示される際に、アプリケーション画面上で開いている文書が印刷対象文書となる。このように画面上に表示させるページ設定コントロール２０３を介して本システムのプリンタなどのデバイスにて印刷出力させるべきページをユーザにより選択可能とする。この指定により、全ページ印刷させることも、特定のページを印刷させることも可能である。
【００３７】
２０４は本システムのプリンタなどのデバイスにて印刷出力すべき印刷ジョブの出力部数を指定する部数設定コントロールである。図示の矢印（スクロールバーの矢印）をクリックすることで、部数の増減が設定できる。また、２０７は前記送信先選択欄２０２にて選択された送信先デバイスに関する詳細設定を行うためのプロパティボタンである。マウス等のポインティングデバイスを用いたユーザ操作によりプロパティボタン２０７が押下されたことに応答し、クライアントＰＣ１０１のディスプレイ上に図３〜図６に示す各種の詳細画面が表示させる。
【００３８】
そして、図２〜図７の各種の操作画面を介してユーザによる所望の設定が済んだ上で、ＯＫキー２０５をキー入力すれば、ユーザの所望の設定に従った印刷を開始させることが出来る。当該処理を取り消す場合には、キャンセルキー２０６をユーザが押下することで、これを受け、制御部は印刷を取りやめて、画面２０１の表示を終了させる。
【００３９】
図３〜図７は、図２に示した操作画面上のプロパティボタン２０７がユーザによりクリックされたことに応答し、クライアントＰＣの画面上に表示させる操作画面（ＧＵＩ：グラフィカルユーザインタフェース）である。このＧＵＩは、プリンタドライバにより提供され、ＯＳを介してディスプレイ上に表示される。
【００４０】
この画面には、例えば「ページ設定」，「仕上げ」，「給紙」，「印刷品質」等のタブキーが設けられており、それらをポインティングデバイスを用いてクリックすることにより、「ページ設定」に関する設定，「仕上げ」に関する設定，「給紙」に関する設定，「印刷品質」に関する設定等の異なる各種詳細な印刷出力条件の設定を行うことができる。
【００４１】
図３では、「ページ設定」タブが押下された場合に、プリンタドライバにより表示される操作画面例である。該画面において、用紙サイズ設定部３０１は、ユーザからの指示に応じて、アプリケーションから入力される文書の用紙サイズと、印刷すべきジョブの記録紙の用紙サイズを設定する項目である。ページレイアウト設定部３０２は、ユーザからの指示に応じて、一枚の記録紙の同一面上に複数ページ分の原稿データを配列形成させるレイアウトモードを選択する項目である。
【００４２】
用紙向き設定部３０３は、ユーザからの指示に応じて、印刷用紙に対する原稿の向きを、ポートレイト（縦）とランドスケープ（横）のいずれであるかを設定するための項目である。部数設定部３０４は、ユーザからの指示に応じて、処理対象となる印刷ジョブの印刷部数を設定するための項目である。
【００４３】
次に、図４は、「仕上げ」タブが押下された場合に、プリンタドライバにより表示される操作画面例である。この画面では、印刷装置の仕上げ機能に関わる固有の設定情報、例えばステープル処理の設定、ソート処理の設定、パンチ処理の設定、穴あけ処理の設定、製本処理の設定などのフィニッシングの設定を行うことができる。
【００４４】
該画面において、印刷方法設定部４０１は、ユーザからの指示に応じて、片面印刷、両面印刷、製本印刷から印刷方法を選択するための項目である。綴じ代設定部４０２は、ユーザからの指示に応じて、印刷対象の文書の綴じ方向として、長辺綴じ左、長辺綴じ右、短編綴じ上、短辺綴じ下の選択肢から設定するための項目である。
【００４５】
また、図４の操作画面のデフォルトキー４０３をユーザが押下することで、図４の操作画面における印刷詳細設定を初期値へ戻すよう制御される。
【００４６】
さらに、４０４はＯＫキーで、このキーを押下すると、プロパティ設定を有効にして、図２の画面に戻る。また、４０５はキャンセルキーで、このキーを押下すると、プロパティ設定を無効にして、図２の画面に戻る。
【００４７】
また、図示省略するが、同様にして「給紙」タブでは、給紙段などの指定、「印刷品質」タブでは、解像度やハーフトーン設定、などの選択を行うことができる。
【００４８】
図５は「特殊設定」タブが押下された場合に表示させる操作画面例である。該画面は、「ページ設定」、「仕上げ」、「給紙」、「印刷品質」でジョブに対して設定した印刷属性とは別に、特定のページ、あるいはページ範囲に対して、ジョブ全体の印刷属性とは異なる印刷属性を設定するためのシートである。
【００４９】
このシートにおいて、表示裏表紙設定部５０１は、本文データとは別に表紙や裏表紙を設定するためのボタンである。用紙挿入部５０２は、本文データとは別に挿入する用紙を設定するためのボタンである。例外ページ設定部５０３は、特定のページあるいはページ範囲に対して、ジョブ設定とは異なる設定を行うためのボタンである。
【００５０】
また、５０４は、これらのボタンにより設定された、ジョブの設定とは異なる項目をリスト表示するための領域である。ページ例外表示領域５０４の左の列は、設定対象となっている特定のページあるいはページ範囲を示すページ欄である。中央の設定項目欄は、設定の項目を表し、右の列の設定内容欄は、例外設定の内容を表示している。なお、この表示は一例を示したものであり他の形式、項目を表示してもかまわない。なお、ユーザが作成した５０４に列挙される特殊設定群について、隣接するページあるいはページ範囲が同じ設定になった場合は、結合ボタン５０５を用いてリストの結合を行うことができる。これは、予め特殊設定リスト５０４の中から隣接する結合したい設定を選択し、このボタンを押下することにより結合される。また、ユーザが作成した５０４に列挙される特殊設定群について、削除したい設定がある場合、それを削除するために５０６の削除ボタンを用意している。これは、予め特殊設定リスト５０４の中から削除したい設定を選択し、このボタンを押下することにより削除される。また、ユーザが作成した５０４に列挙される特殊設定群について、設定内容を変更したい設定がある場合、それを設定変更するために５０７の設定ボタンを用意している。これは、予め特殊設定リスト５０４の中から削除したい設定を選択し、このボタンを押下することにより設定変更が可能となる。
【００５１】
図６は、図５の特殊設定プロパティシートにおいて、例外ページボタン５０３を押下したときに表示される例外ページ設定のダイアログを示したものである。この例外ページ設定のダイアログでは、特定のページあるいはページ範囲に対して、ジョブとは異なる設定を行うことができる。
【００５２】
６０１は設定の対象とするページあるいはページ範囲を設定するコントロールである。特定のページを指定したい場合、適用開始ページと適用終了ページに同じページ番号を入力すればそのページのみに対して、以下のコントロールで設定する値が適用される。６０２は６０１で設定したページあるいはページ範囲に対して、ジョブの設定とは異なる設定を行うコントロールである。６０２ではメディアに関する設定が可能となっている。具体的には、用紙タイプ、用紙サイズ、片面／両面の設定が可能となっている。６０３は、６０１で設定したページあるいはページ範囲に対して、ジョブの設定とは異なる設定を行うコントロールである。６０３ではカラーに関する設定が可能となっている。具体的には、カラーモード、中間調、入力プロファイルの設定が可能となっている。図６の各種のコントロールを介してユーザによる所望の設定が済んだ上で、ＯＫキー６０４をキー入力すれば、ユーザの所望の設定を適用させることが出来る。当該設定を取り消す場合には、キャンセルキー６０５をユーザが押下することで、プリンタドライバはこれを受け、設定内容を破棄して図６の表示を終了させる。
【００５３】
図７はプリンタドライバをプリンタの設定を行うためのメニューから開いたときに表示される、プリンタドライバにより提供されるダイアログであり、「デバイス設定」シートが追加で表示されている。米国マイクロソフト社のＷＩＮＤＯＷＳ（登録商標）  ＯＳでは、プリンタの設定フォルダには、クライアントＰＣ１０１にインストールされているプリンタドライバがアイコン表示されている。このアイコンを選択し、右クリックを行うことで開かれるメニューからプロパティを選択することにより、図７のダイアログが表示される。
【００５４】
図７の「デバイス設定」タブシートでは、デバイスの構成情報およびプリンタドライバの設定を行うことが可能であり、７０１では給紙オプションの装着状況を設定するコントロール、７０２は排紙オプションの装着状況を設定するコントロールである。また７０３はプリンタドライバの設定を行うコントロールであり、ここではアプリケーションからのＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：ページ記述言語）コードの出力を許可するか禁止するかを設定するコントロールである。７０３の選択肢としては、アプリケーションからのＤＰＬ出力を常に許可することを示す選択肢と、常に禁止することを示す選択肢と、許可するかを自動的に判断することを示す選択肢が含まれている。
【００５５】
なお、アプリケーションからのＰＤＬコード出力については図１１および図１２にてその動作の仕組みを説明する。図７の各種のコントロールを介してユーザによる所望の設定が済んだ上で、ＯＫキー７０６をキー入力すれば、ユーザの所望の設定を適用させることが出来る。当該設定を取り消す場合には、キャンセルキー７０７をユーザが押下することで、プリンタドライバはこれを受け、設定内容を破棄して図７の表示を終了させる。
【００５６】
このように、ユーザが所望の出力条件（印刷属性）を図２〜図７の各種の印刷設定画面を介して設定した上で、ＯＫボタンを押下することで、印刷属性を反映した印刷ジョブが生成される。尚、この印刷ジョブは、印刷データ中の特定のページ或いは特定のページ範囲にジョブ全体とは異なる印刷属性が印刷データ内の印刷命令として指定される。
【００５７】
［第１の実施の形態］
上述した図１〜図７および図２９が本発明の前提の構成である。次に、本発明に好適な第１の実施の形態について詳述する。
【００５８】
［プリンタドライバ構成の説明］
図８はプリンタドライバを含むクライアントＰＣ１０１内部のソフトウエアの構成を示したものである。図８において、ホストコンピュータ８０１は、図１のクライアントＰＣ１０１に相当し、オペレーティングシステム（以下、ＯＳ）８０２が搭載されている。そして、本発明の印刷制御プログラムであるプリンタドライバ８０５及び、アプリケーションソフトウエア（以下、アプリケーション）８０８は、このＯＳ上にインストールされ、ＯＳ上でＣＰＵにより制御される。
【００５９】
プリンタドライバは、ユーザＩ／Ｆの表示や設定の保存などを行うユーザインタフェースドライバ８０６と、アプリケーションからＯＳを通して指示される印刷描画命令をプリンタが解釈可能な印刷データに変換するグラフィックドライバ８０７から構成されている。ユーザインタフェースドライバは、アプリケーションからＯＳを通して印刷設定が指示されたとき、図２〜図６に示す印刷設定ダイアログ、プロパティシートを表示する。
【００６０】
なお、ＯＳが管轄する保存領域内に、プリンタドライバの設定保存領域８０３があり、ユーザインタフェースドライバにてユーザが設定した印刷属性はこのプリンタドライバ設定保存領域に保存される。また、ユーザインタフェースドライバ、グラフィックドライバ、アプリケーションソフトウエアはＯＳを介してこのプリンタドライバ設定保存領域にアクセスすることができ、ユーザが設定した印刷属性を読み取ることが可能である。
さらに、クライアントコンピュータは、通信Ｉ／Ｆ８１０とプリンタ側の通信Ｉ／Ｆ８１１とを介して、ローカルエリアネットワークなどの通信媒体で接続されている。グラフィックドライバ８０７は、ＯＳ８０２を介してプリンタ８０９に印刷データの送信が可能であり、またプリンタの構成情報やステータスなどを、ＯＳを介して取得することも可能である。
【００６１】
［印刷設定及び印刷ジョブの生成の処理手順］
次に、ユーザがアプリケーションメニューからプリントメニューを選択し、プリンタドライバ上で印刷属性の設定を行い、印刷ジョブがプリンタへ出力されるまでの手順を説明する。
【００６２】
クライアントＰＣ１０１におけるユーザによる印刷属性の設定手順を図９を用いて説明する。なお、ここで説明するアプリケーションは一般的なものであり、ＯＳの描画部（ＧＤＩ）に対して文書の描画命令を発行する種類に相当する。
【００６３】
まず、ステップＳ９０１において、ユーザがアプリケーションソフトウエアのメニューから印刷設定のメニューを選択することにより、クライアントＰＣは、図２に示す印刷ダイアログ画面を表示する。この印刷ダイアログ画面上でユーザによりプロパティボタンが押下されると、ステップＳ９０２において、アプリケーションがＯＳのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）をコールする。このコールは、プリンタドライバに印刷属性設定のプロパティシートを表示するように指示するためのものである。この指示により、プリンタドライバのユーザインタフェースドライバはこの指示を受けて、ステップＳ９０３において、ユーザインタフェースドライバ８０６は、図３に示した印刷属性設定のプロパティシートを表示する。
【００６４】
続いて、Ｓ９０４においてユーザは前述した図３〜図７のプロパティシートやダイアログ上で所望の印刷属性設定の指定を行うことにより、プリンタドライバ８０５は、各印刷属性の設定値を入力する。ユーザは印刷属性設定を行った後、図２のプロパティシートのＯＫボタンを押下して設定した印刷属性を確定する。このＯＫボタン押下を受けて、Ｓ９０５のステップにおいて、ユーザインタフェースドライバ８０６は、ユーザが設定した印刷属性の設定値をＯＳのＡＰＩをコールしてＯＳ内の印刷属性設定保存領域に保存する。これで印刷属性設定とその設定値保存が完了する。
【００６５】
次にクライアントＰＣ１０１における印刷処理（印刷ジョブの生成処理）手順を図１０を用いて説明する。
【００６６】
ユーザはドキュメントを印刷するために、アプリケーションソフトウエアのメニューから印刷メニューを選択する。ステップＳ１００１において、印刷メニューから印刷指示されることに応じてアプリケーションソフトウエアはＯＳのＡＰＩをコールすし、プリンタドライバは印刷要求である印刷開始指示を受け付ける。なお、この過程で一度、図３に示す印刷設定ダイアログを表示するケースもある。この印刷要求を受けて、ＯＳはプリンタドライバに印刷開始指示を行う。
【００６７】
そして、ステップＳ１００２において、プリンタドライバ８０５は、この印刷開始指示に応じて、ＯＳのプリンタドライバ設定保存領域８０３に保存されている印刷属性設定値を読み出す。続いて、アプリケーション８０８がＯＳ８０２のグラフィックエンジン（ＧＤＩ）に対して描画命令を発行する。そして、ステップＳ１００３において、ＯＳ８０２がプリンタドライバ８０５に描画関数を出力ことにより、ＯＳ８０２を介して、プリンタドライバ８０５は、描画命令を受け付ける。
【００６８】
すると、ステップＳ１００４において、プリンタドライバ８０５のグラフィックドライバ８０７は、読み出した印刷属性に従って、入力された描画命令から各物理ページの印刷データを生成する。尚、物理ページとは、印刷用紙の１ページに対応するサイズであり、論理ページとはアプリケーションが出力する文書の描画命令の１ページに相当するサイズである。ページレイアウトで「１ページ／枚」が指定されている場合は、１物理ページは１論理ページに相当し、「２頁／枚」が指定されている場合には、１物理ページは、２論理ページに相当する。
【００６９】
そして、ステップＳ１００５において、プリンタドライバ８０５は、生成された各ページ（物理ページ）の印刷データから、ＪＬ（Ｊｏｂ  Ｌａｎｇｕａｇｅ）のようなジョブ制御言語でラッピングすることにより、印刷ジョブを生成する。続いてステップＳ１００６において、プリンタドライバ８０５は、ＯＳ８０２のスプーラ（図示省略）を介して、生成されている印刷ジョブを出力する。これにより、印刷ジョブがネットワークを介してプリンタ８０９へ送信されることになる。
【００７０】
以上述べた手順によりユーザが印刷属性を設定し、その結果、印刷ジョブのプリンタへの出力を行うことが可能となる。
【００７１】
［ＰＤＬコードを自身で生成するアプリケーション］
図１１では、ＯＳのグラフィックエンジンに適合する描画命令を発行する一般的なアプリケーションの印刷の流れを説明したが、ここではアプリケーション自身がＰＤＬコードを生成する種類のアプリケーションについて説明する。なお今後、自身がＰＤＬコードを生成するアプリケーションを「パススルーアプリケーション」と呼ぶことにする。これは後の動作説明で明らかになるが、アプリケーション自身が生成したＰＤＬコードは、プリンタドライバは何も加工せずに「パススルー」して出力されることから、パススルーアプリケーションと呼ばれる。また、パススルーアプリケーションが生成するＰＤＬコードは米国Ａｄｏｂｅ社が開発したＰｏｓｔＳｃｒｉｐｔが一般的である。
【００７２】
図１１は、パススルーアプリケーションの印刷データの流れを説明したものである。パススルーアプリケーションの動作を図１２を用いて説明する。
【００７３】
まずＳ１２０１で、ユーザはアプリケーションメニューから印刷メニューを選択してＯＫボタンを押下する。これにより、アプリケーション１１０８からＯＳ１１０２を介してプリンタドライバ１１０５に印刷要求が発行される。なお、この前に必要があれば印刷属性の設定を行うが、ユーザの印刷属性の設定の流れは図９と同じであるため説明は割愛する。次に、Ｓ１２０１の印刷指示をきっかけとして、Ｓ１２０２において、アプリケーション１１０８はＯＳ１１０２を経由してプリンタドライバ１１０５にパススルー印刷処理系をサポートしているかどうかを問い合わせる。一般的に、プリンタドライバがサポートしているＰＤＬ言語がＰｏｓｔＳｃｒｉｐｔの場合、プリンタドライバは、ＯＳ１１０２を経由して受信したアプリケーション１１０８のＰｏｓｔＳｃｒｉｐｔコードを、そのままプリンタに送信する経路をサポートする。これを「パススルー印刷をサポートしている」という。尚、本発明のプリンタドライバは、図７で説明したように、パススルー印刷はサポートしているが、アプリケーションに対してパススルー印刷処理系を許可するか否かをユーザ設定することが可能である。よって、プリンタドライバは、アプリケーション１１０８からの問合せに対して、図７の項目７０３の設定値に従って、アプリケーション１１０８に対して、パススルー印刷処理系を用いることを許容するか禁止するかを切り替える。
【００７４】
Ｓ１２０２において、プリンタドライバから「パススルー不可」であることが返答された場合、Ｓ１２０３に進む。Ｓ１２０３の通常印刷の流れは図１０の印刷処理の流れと同じであるため説明を割愛する。Ｓ１２０２でプリンタドライバから「パススルー可能（許可）」であることが返答された場合、パススルー印刷の経路（Ｓ１２０４以降）に処理が進む。
【００７５】
Ｓ１２０４のステップにおいて、アプリケーション１１０８はＯＳ１１０２を通して、プリンタドライバ１１０５のグラフィックドライバ１１０７に印刷開始指示を行う。この指示をきっかけとしてＳ１２０５のステップにおいて、プリンタドライバ１１０５を構成しているグラフィックドライバ１１０７は、のプリンタドライバ設定保存領域１１０３から保存されている印刷属性設定値を読み出す。そして、アプリケーション１１０８は、設定されている印刷属性をプリンタドライバから取得する。
【００７６】
次に、Ｓ１２０６のステップにおいて、アプリケーション１１０８は、取得した印刷属性に従って、アプリケーション自身でＰＤＬコード（多くはＰｏｓｔＳｃｒｉｐｔコード）を生成する。そして、ＯＳ１１０２とプリンタドライバ１１０５はパススルー印刷経路１１１２を通して、なんらＰＤＬコードを編集することなく転送出力する。なお一般的には、アプリケーション１１０８が生成するＰＤＬコードのデータ量は多いため、アプリケーション１１０８が生成したデータは何回かの転送パケットに分けて、プリンタドライバおよびプリンタに送信される。最後にＳ１２０７において、プリンタ１１０９は受信した印刷属性コード、印刷コードを解釈、レンダリングして印刷を行い終了する。
【００７７】
［本発明の印刷の流れ］
以上がシステム構成、一般的なアプリケーションとパススルーアプリケーションの印刷の流れである。以降、本発明にかかわる印刷の流れを説明する。
【００７８】
図１３は本発明によるプリンタドライバの構造を示したものであり、この構造の多くは図８の構成と同じため、差分についてのみ説明を行う。
【００７９】
図８との差分はプリンタドライバを構成しているグラフィックドライバの内部構造でこれについては次の図１４で詳細を説明する。もうひとつの差分はページ区切りコードテーブル１３０４である。このページ区切りコードテーブルとは、パススルーアプリケーションのアプリケーション自身が生成するＰＤＬコードで使用するページ区切りコードをテーブルにしたもので、詳細は図１５に示す。
【００８０】
図１５において、１５０１はパススルーアプリケーション名称、１５０２はパススルーアプリケーションのバージョン、１５０３はそのパススルーアプリケーションが生成するＰＤＬコードのページ区切りコードである。例えば１４０４はアプリケーションＡのバージョン１において、このアプリケーションＡ自身が生成するＰＤＬコードで使用しているＰＤＬコードは“ｓｈｏｗｐａｇｅ”であることを示している。このように、Ｐｏｓｔｃｒｉｐｔ言語で共通言語である場合にも、アプリケーションの種類によりページ区切りコードは統一されていないことになる。よって、後述するように、プリンタドライバは、印刷要求を行ったアプリケーションの種類により、ページ区切りを判定するための基準となるページ区切りコードを切り替える必要がある。
【００８１】
次に、図１４はプリンタドライバ１３０５のグラフィックドライバ１３０７の内部モジュールを示したものである。これらモジュールの働きは実際の印刷の流れの説明の中に詳しい。
【００８２】
次に図１６のフローチャートを用いて、プリンタドライバの印刷処理に係る手順を説明する。なおここでは、ユーザは図５と図６に示すようにページ毎の印刷属性設定を行っているものとする。例えば、２および３ページは例外設定として両面印刷、４〜８ページは例外設定として用紙サイズがＡ３で用紙タイプとして光沢紙を使用することが設定される。このように、特定のページまたは特定のページ範囲に対して、印刷ジョブとは異なる印刷属性がなされえているものとする。
【００８３】
ユーザの印刷属性設定は、図９のフローチャート、印刷開始指示は図１２のフローチャートと同様であるため、図１６のフローチャートでは図１２のＳ１２０６の手順時のプリンタドライバ側の詳細動作について説明する。
【００８４】
まずＳ１６０１において、プリンタドライバが、プリンタドライバユーザＩ／ＦのパススルースイッチはＯＮになっているか確認する。この確認は、プリンタドライバがＯＳ１４０９を通して、プリンタドライバ設定保存領域１４０７に格納されているプリンタドライバユーザＩ／Ｆ設定値を取得して判定する。プリンタドライバのパススルースイッチとは、図７の７０３に示すスイッチのことである。このスイッチはパススルーアプリケーションがＰＤＬコードを生成、送信することを許可するかどうかのスイッチとなっている。このスイッチに応じて、Ｓ１２０２で説明した、パススルーアプリケーションからプリンタドライバへのパススルーサポート状況の問い合わせに応じてプリンタドライバがパススルーアプリケーションに応答する。このスイッチが「アプリケーションからのＰＤＬ出力を許可する」の場合、プリンタドライバはパススルーアプリケーションに対して「パススルー出力をサポート」と応答する。また他の選択肢「アプリケーションからのＰＤＬ出力を禁止する」の場合、プリンタドライバはパススルーアプリケーションに対して「パススルー出力を非サポート」と応答する。このスイッチがプリンタドライバのユーザＩ／Ｆに存在する理由は、アプリケーション自身がＰＤＬコードを生成してプリンタドライバをパススルー処理すると、プリンタドライバ側で処理する高度な機能が使用できないからである。例えば、ポスター印刷（１ページのドキュメントを２ｘ２などの複数枚に拡大出力する機能）などが使用できなくなるため、ユーザＩ／Ｆにパススルーを許可するか禁止するかのスイッチを設けている。
【００８５】
Ｓ１６０１において、プリンタドライバのパススルースイッチが禁止されている場合、通常の印刷系となるためＳ１６１３に進み、通常の印刷後、終了する。Ｓ１６０１において、プリンタドライバのパススルーが許可されている場合、次のステップに進む。Ｓ１６０２のステップにおいて、プリンタドライバはグラフィックドライバ１４０８のアプリケーション名／バージョン取得モジュール１４０１により、アプリケーション名とバージョンを取得する。プリンタドライバはＯＳのＡＰＩを通してアプリケーション名とそのバージョンを取得することができるようになっている。
【００８６】
次にＳ１６０３のステップでは、プリンタドライバのグラフィックドライバ１４０８のアプリケーション種別判定モジュール１４０３がパススルーアプリであるかどうかを判定する。この判定は、図１５に示すパススルーアプリケーションのページ区切りコードテーブルのアプリケーション名をスキャンすることにより行う。このページ区切りコードテーブルは、ＯＳ１４０９を通して、１４１０にアクセスする。
【００８７】
Ｓ１６０２のステップにおいて取得したアプリケーション名がパススルーアプリケーションではない場合、通常の印刷となるため、Ｓ１６１３に進み通常の印刷を行い、終了する。Ｓ１６０３のステップにおいて、アプリケーションがパススルーアプリケーションである場合、Ｓ１６０４に進む。
【００８８】
Ｓ１６０３のステップでは、アプリケーション名が「アプリケーションＣ」、バージョンが「１」が取得できたものとする。Ｓ１６０４では、プリンタドライバは、プリンタドライバユーザＩ／Ｆの特殊設定シートで、ページあるいはページ範囲ごとに異なる印刷属性設定がされているかどうかを判定する。この判定は、グラフィックドライバ１４０８の印刷設定状況判定モジュール１４０２が、ＯＳ１４０９を通してプリンタドライバ設定保存領域１４０７にアクセスすることにより行う。この例では、図５の５０４に示すようにページ範囲ごとに異なる印刷属性設定がされているため、次のＳ１６０５以降のステップに進む。しかし、Ｓ１６０４において、ページあるいはページ範囲ごとに異なる設定がされていない場合、プリンタドライバはページ区切りで印刷属性を変更する必要がないため、Ｓ１６１４に進み、通常のパススルーの印刷、すなわち、パススルーアプリケーションが生成したＰＤＬデータをそのままプリンタに送信する、という動作をとる。
【００８９】
この実施例では、ページ範囲ごとに異なる設定がされているため、Ｓ１６０５に進む。Ｓ１６０５ではアプリケーション名とバージョン番号をキーとして、図１５のページ区切りコードテーブルから、そのアプリケーションのページ区切りコードを取得する。この実施例ではアプリケーション名が「アプリケーションＣ」、バージョンが「１」であるため、ページ区切りコードとして図１５より”ｓｈｏｗｐａｇｅ”を取得する。次にＳ１６０６において、パススルーアプリケーションからＰＤＬデータを取得する。なお、ＰＤＬデータを取得して解析する部分、Ｓ１６０６からＳ１６１２が繰り返されているが、これはパススルーアプリケーションがＰＤＬコードを一度に生成するのではなく、何回かに分けて生成、プリンタドライバに渡すためである。次にプリンタドライバはＳ１６０６において取得したＰＤＬコードに、Ｓ１６０５で取得したページ区切りコード”ｓｈｏｗｐａｇｅ”が含まれているか検索する。この検索は、グラフィックドライバ１４０８のページ区切りコード検索モジュール１４０４により行う。このＰＤＬコードに”ｓｈｏｗｐａｇｅ”が含まれていなければ、Ｓ１６１１に進み、そのＰＤＬコードをそのままプリンタに送信する。
【００９０】
ＰＤＬコードに”ｓｈｏｗｐａｇｅ”が含まれていれば、次にＳ１６０８に進み、ページ数計数を行う。このページ数計数は、グラフィックドライバ１４０８のページ数計数モジュール１４０５により行う。Ｓ１６０９のステップにおいて、印刷属性を切り替えるページであれば、Ｓ１６１０に進み、ページ区切りコード”ｓｈｏｗｐａｇｅ”の直後に必要な印刷属性設定コードを挿入する。この印刷属性変更コード挿入は、グラフィックドライバ１４０８の印刷属性変更コード挿入１４０６により行う。次にＳ１６１１に進み、そのコードをプリンタに送信する。
【００９１】
このようにページ区切りコードの直後に必要な印刷属性変更を行った場合の出力コード概要について説明する。
【００９２】
図１７は、本発明の処理を使用しないプリンタドライバが生成する印刷コードの構造である。この印刷コードは、ページ区切りコードを含むパススルーアプリケーションが生成したＰＤＬコード１７０２に対して、このＰＤＬコードの先頭に一般的にジョブチケット１７０１と呼ばれる印刷属性設定コードを付加することにより、ページ毎の印刷属性設定を実現している。この方法では、ジョブチケット１７０１に各ページの印刷属性まで記述しているため、パススルーアプリケーションが生成したＰＤＬコードに手を加えることなくページあるいはページ範囲ごとの印刷属性の切り替えを実現している。しかしこのジョブチケット方式の場合、先に述べたようにプリンタはこのジョブチケットを解釈するための特殊な構造が必要となる。そのため、一般的なプリンタに対しては、ジョブチケット方式による特定ページの印刷属性変更処理を実現することはできない。
【００９３】
次に、図１８は、本発明の処理手順を用いたプリンタドライバにより生成されるＰＤＬコードの構造の一例である。本発明の処理において、プリンタドライバはパススルーアプリケーションが生成したＰＤＬコードをスキャンして、各ページのページ区切りコードを検索して、必要なページ区切りコードの直後でＰＤＬコードを使用して印刷属性を切り替える。このＰＤＬコードは印刷属性もＰＤＬコードを使用しているため、図１７に示すようなジョブチケットを解釈する特殊な構造がプリンタ側に必要なく、一般的なプリンタを使用して印刷属性の切り替えが可能となる。
【００９４】
ここでこの動作の具体例を示す。図５の設定では２および３ページが両面印刷となっている。そのため、１ページ目のページ区切りコードの直後に印刷属性を両面印刷に切り替える必要がある。図１９はアプリケーションＣバージョン１が生成したＰＤＬコードであり、１９０１がはじめに出現するページ区切りコード”ｓｈｏｗｐａｇｅ”である。ここでは、Ｓ１６０７、Ｓ１６０９の判定を通して、この”ｓｈｏｗｐａｇｅ”のあとに両面印刷に切り替える印刷属性コードを挿入する。図２０は両面印刷コードを挿入したコードであり、２００１は１ページ目のページ区切りコード”ｓｈｏｗｐａｇｅ”、２００２はこのページ区切りコードの直後に挿入した両面印刷に切り替えるコード、”＜＜／Ｄｕｐｌｅｘ  ｔｒｕｅ＞＞ｓｅｔｐａｇｅｄｅｖｉｃｅ”である。このコードにより、パススルーアプリケーションのＰＤＬコードに対してもページ途中で印刷属性を変更することが可能となり、ページあるいはページ範囲ごとに異なる印刷属性設定が可能となっている。
【００９５】
図２１および図２２はパススルーアプリケーションが「アプリケーションＣ」バージョンが「バージョン２」のときのＰＤＬコード例を示したものであり、図２１が印刷属性変更コードを挿入する前のコード、図２２が印刷属性変更コードを挿入したあとのコードである。また、この部分は、図５の４〜８ページを、用紙サイズをＡ３、用紙タイプを光沢紙に変更する部分のものであるとする。ページ区切りコードは図１５から”ｓｐ”であり、図２１の２１０１は３ページ目のページ区切りコードとする。このとき、２１０１の直後に用紙サイズをＡ３、用紙タイプを光沢紙に変更するコードを挿入する。図２２はこのコードを挿入した例であり、２２０２は用紙サイズ、用紙タイプをそれぞれＡ３、光沢紙に変更するコードである。
【００９６】
このようにして、パススルーアプリケーションが生成するＰＤＬコードに対して、プリンタドライバがＰＤＬコードの中から適切なページ区切りコードを検索、印刷属性変更コードを挿入することにより、ページあるいはページ範囲に対して異なる印刷属性設定を可能としている。
【００９７】
［第２の実施の形態］
次に本発明による第二の実施例を説明する。なお、使用する印刷システムや前提条件は実施例１と同様であるため、重複する説明は割愛して差分となる部分のみの説明を行う。
【００９８】
図２３は本実施例で説明するプリンタドライバの構造である。次に、図２４はプリンタドライバ２３０５のグラフィックドライバ２３０７の内部モジュールを示したものである。これらモジュールの働きは実際の印刷の流れの説明の中に詳しい。
【００９９】
次に図２６の流れ図を用いて印刷の流れを説明する。なおここでは、ユーザは実施例１と同様、図５に示すようなページ毎の印刷属性設定を行っているものとする。すなわち、２および３ページは例外設定として両面印刷、４〜８ページは例外設定として用紙サイズがＡ３で用紙タイプとして光沢紙を使用する、という設定である。
【０１００】
ユーザの印刷属性設定は、図９の流れ図、印刷開始指示は図１２の流れ図となるため、この流れ図では本発明となる図１２のＳ１２０６の部分の詳細動作について説明する。まずＳ２６０１において、プリンタドライバが、プリンタドライバユーザＩ／ＦのパススルースイッチがＯＮになっているか確認する。この確認は、グラフィックドライバ２３０７がＯＳ２３０２を通して、プリンタドライバ設定保存領域２３０３に格納されているプリンタドライバユーザＩ／Ｆ設定値を取得して判定する。Ｓ２６０１において、プリンタドライバのパススルースイッチが禁止されている場合、通常の印刷系となるためＳ２６１２に進み、通常の印刷後、終了する。
【０１０１】
Ｓ２６０１において、プリンタドライバのパススルーが許可されている場合、次のステップに進む。Ｓ２６０２のステップにおいて、プリンタドライバはグラフィックドライバ２３０７のアプリケーション名取得モジュール２４０１により、アプリケーション名を取得する。次にＳ２５０３のステップでは、プリンタドライバのグラフィックドライバ２３０７のアプリケーション種別判定モジュール２４０３がパススルーアプリであるかどうかを判定する。この判定は、図２５に示すパススルーアプリケーションテーブルのアプリケーション名をスキャンすることにより行う。このテーブルは、パススルーアプリケーションの一覧が保持されている。このパススルーアプリケーションテーブルは、ＯＳ２３０２を通して、ページ区切りコードテーブル２３０４にアクセスする。
【０１０２】
Ｓ２６０３のステップにおいて取得したアプリケーション名がパススルーアプリケーションではない場合、通常の印刷となるため、Ｓ２６１２に進み通常の印刷を行い、終了する。Ｓ２６０３のステップにおいて、アプリケーションがパススルーアプリケーションである場合、Ｓ２６０４に進む。Ｓ２６０４では、プリンタドライバは、プリンタドライバユーザＩ／Ｆの特殊設定シートで、ページあるいはページ範囲ごとに異なる印刷属性設定がされているかどうかを判定する。この例では、図５の５０４に示すようにページ範囲ごとに異なる印刷属性設定がされているため、次のＳ２６０５以降のステップに進む。しかし、Ｓ２６０４において、ページあるいはページ範囲ごとに異なる設定がされていない場合、プリンタドライバはページ区切りで印刷属性を変更する必要がないため、Ｓ２６１３に進み、通常のパススルーの印刷、すなわち、パススルーアプリケーションが生成したＰＤＬデータをそのままプリンタに送信する、という動作をとる。
【０１０３】
この実施例では、ページ範囲ごとに異なる設定がされているため、Ｓ２６０５に進む。Ｓ２６０５ではプリンタドライバのグラフィックドライバはパススルーアプリケーションからのＰＤＬデータを取得する。次に、Ｓ２６０６において、グラフィックドライバ２３０７の簡易インタープリタ２４０４はページ区切りコードの検出を行う。この検出は、グラフィックドライバ２３０７の簡易インタープリタモジュール２４０４により行う。
【０１０４】
このページ区切りコードの検出について説明する。
【０１０５】
一般にＰｏｓｔＳｃｒｉｐｔコードを出力するパススルーアプリケーションは、ＰｏｓｔＳｃｒｉｐｔ言語のページ区切り（排出）コードである”ｓｈｏｗｐａｇｅ”を出力する代わりに、コードの容量を少なくするためにＰＤＬコードの先頭で”ｓｈｏｗｐａｇｅ”を別の文字列に置き換えるケースがある。例えば、図２７に示す２７０１がその例である。このコードでは、”ｓｈｏｗｐａｇｅ”というコードをより短いコード、”ｓｐ”で置き換えることを意味している。これは実施例１で説明したページ区切りコードの判別に頼らず、プリンタが搭載する印刷コードを受信してレンダリングするためのインタープリタから、描画部分やデバイス制御部分などの不要な部分を削除した簡易インタープリタにより行う。簡易インタープリタは、例えば２７０１に示すコードの処理を行い、ページ区切りに関する検知を行う。
【０１０６】
このＰＤＬコードにページ区切り指示が含まれていなければ、Ｓ２６１０に進み、そのＰＤＬコードをそのままプリンタに送信する。ＰＤＬコードにページ区切り指示が含まれていれば、次にＳ２６０７に進み、ページ数計数を行う。このページ数計数は、グラフィックドライバ２３０７のページ数計数モジュール（４０５により行う。Ｓ２６０８のステップにおいて、印刷属性を切り替えるページであれば、Ｓ２６０９に進み、ページ区切りコード相当のコードの直後に必要な印刷属性設定コードを挿入する。この印刷属性変更コード挿入は、グラフィックドライバ２３０７の印刷属性変更コード挿入２４０６により行う。次にＳ２６１０に進み、そのコードをプリンタに送信する。
【０１０７】
ここでこの動作の具体例を示す。図５の設定では２および３ページが両面印刷となっている。そのため、１ページ目のページ区切りコードの直後に印刷属性を両面印刷に切り替える必要がある。図２７はアプリケーションＣが生成したＰＤＬコードであり、２７０１のコードを簡易インタープリタ２４０４が処理をして、”ｓｐ”がページ区切り指示であることを認識する。次に、２７０２の”ｓｐ”が、はじめに出現するページ区切り指示である。ここではこの”ｓｐ”のあとに両面印刷に切り替える印刷属性コードを挿入する。図２８は両面印刷コードを挿入したコードであり、２８０１は１ページ目のページ区切りコード”ｓｐ”、２８０２はこのページ区切りコードの直後に挿入した両面印刷に切り替えるコード、”＜＜／Ｄｕｐｌｅｘ  ｔｒｕｅ＞＞ｓｅｔｐａｇｅｄｅｖｉｃｅ”である。このコードにより、パススルーアプリケーションのＰＤＬコードに対してもページ途中で印刷属性を変更することが可能となり、ページあるいはページ範囲ごとに異なる印刷属性設定が可能となっている。
【０１０８】
このようにして、パススルーアプリケーションが生成するＰＤＬコードに対して、プリンタドライバがＰＤＬコードの中から適切なページ区切りコードを検索、印刷属性変更コードを挿入することにより、ページあるいはページ範囲に対して異なる印刷属性設定を可能としている。
【０１０９】
（さらに他の実施形態）
なお、本発明は、複数の機器（例えばコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（複写機、プリンタ、ファクシミリ装置など）に適用してもよい。
【０１１０】
また、本発明の目的は、前述した各実施形態で示したフローチャートの手順を実現するプログラムコードを記憶した記憶媒体から、システムあるいは装置のコンピュータが格納されたプログラムコードを読出し実行することによっても達成される。
【０１１１】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１１２】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１１３】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明に含まれる。
【０１１４】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、実際の処理を行う場合も本発明に含まれる。すなわち、プログラムコードの指示に基づき機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明に含まれる。
【図面の簡単な説明】
【０１１５】
【図１】本発明の印刷システム図
【図２】プリンタドライバのプロパティシート
【図３】プリンタドライバのページ設定シート
【図４】プリンタドライバの仕上げシート
【図５】プリンタドライバの特殊設定シート
【図６】プリンタドライバのページ例外詳細設定ダイアログ
【図７】プリンタドライバのデバイス設定シート
【図８】クライアントコンピュータに搭載されているアプリケーション、ＯＳ、プリンドライバの構成図
【図９】ユーザがプリンタドライバで印刷属性設定する流れ図
【図１０】印刷の流れ図
【図１１】パススルーアプリケーションのデータフロー図
【図１２】パススルーアプリケーションがＰＤＬコードを生成するときの印刷の流れ図
【図１３】第１の実施の形態のクライアントコンピュータのアプリケーション、ＯＳ、プリンドライバの構成図
【図１４】グラフィックドライバの内部モジュール図
【図１５】ページ区切りコードテーブル
【図１６】第１の実施の形態の動作を説明する流れ図
【図１７】従来のジョブチケット方式のジョブ
【図１８】本発明によるジョブ
【図１９】ｓｈｏｗｐａｇｅを含むＰＤＬコード
【図２０】印刷属性変更コードを含むＰＤＬコード
【図２１】ｓｐを含むＰＤＬコード
【図２２】印刷属性変更コードを含むＰＤＬコード
【図２３】第２の実施の形態のクライアントコンピュータのアプリケーション、ＯＳ、プリンドライバの構成図
【図２４】グラフィックドライバの内部モジュール図
【図２５】パススルーアプリケーションテーブル
【図２６】第１の実施の形態の動作を説明する流れ図
【図２７】ページ区切りコードを含むＰＤＬコード
【図２８】印刷属性変更コードを含むＰＤＬコード
【図２９】本発明の印刷システムにおけるハードウェアのブロック図
【符号の説明】
【０１１６】
１  ＣＰＵ
２  ＲＡＭ
３  ＲＯＭ
５  キーボードコントローラ
６  ＣＲＴコントローラ
７  ディスクコントローラ
８  ネットワークインタフェース
９  キーボード
１０  表示部（ＣＲＴ）
１１  外部メモリ
１２  ＣＰＵ
１３  ＲＯＭ
１７  印刷部
１９  ＲＡＭ
２１  ネットワーク（ＬＡＮ）
１０１  クライアントＰＣ
１０４  ネットワーク
１０３  プリンタ
【図１】
0004667229.tif 000002
【図２】
0004667229.tif 000003
【図３】
0004667229.tif 000004
【図４】
0004667229.tif 000005
【図５】
0004667229.tif 000006
【図６】
0004667229.tif 000007
【図７】
0004667229.tif 000008
【図８】
0004667229.tif 000009
【図９】
0004667229.tif 000010
【図１０】
0004667229.tif 000011
【図１１】
0004667229.tif 000012
【図１２】
0004667229.tif 000013
【図１３】
0004667229.tif 000014
【図１４】
0004667229.tif 000015
【図１５】
0004667229.tif 000016
【図１６】
0004667229.tif 000017
【図１７】
0004667229.tif 000018
【図１８】
0004667229.tif 000019
【図１９】
0004667229.tif 000020
【図２０】
0004667229.tif 000021
【図２１】
0004667229.tif 000022
【図２２】
0004667229.tif 000023
【図２３】
0004667229.tif 000024
【図２４】
0004667229.tif 000025
【図２５】
0004667229.tif 000026
【図２６】
0004667229.tif 000027
【図２７】
0004667229.tif 000028
【図２８】
0004667229.tif 000029
【図２９】
0004667229.tif 000030