(57)【要約】【課題】入力されるデータの形式を文字列とするプリンタドライバであっても、アプリケーションから入力される印刷制御コマンドをプリンタに対して正常に出力することである。【解決手段】アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する（Ｓ９０５）。ここで、プリンタ制御コマンド形式であると判断した場合、入力される入力データのバイト列を解析して文字列のデータに変換する（Ｓ）。そして、変換された文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力し（Ｓ）、文字列のデータの形式であると判断した場合、入力データをプリンタにする出力する（Ｓ）特徴とする。【選択図】図６
2009134645.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置であって、
前記プリンタドライバは、
入力される入力データのバイト列を解析して文字列のデータに変換する変換手段と、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断手段と、
前記判断手段がプリンタ制御コマンド形式であると判断した場合、前記変換手段により変換された文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力し、前記判断手段が文字列のデータの形式であると判断した場合、前記入力データをプリンタにする出力する出力手段とを備えたことを特徴とするデータ処理装置。
【請求項２】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置であって、
前記プリンタドライバは、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断手段と、
前記判断手段によりプリンタ制御コマンド形式であると判断された場合、入力される入力データのバイト列を解析して文字列のデータに変換する変換手段と、
前記変換手段により変換された文字列のデータを保存する保存手段と、
前記保存手段から読みされる前記文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力し、前記判断手段が文字列のデータの形式であると判断した場合、前記入力データをプリンタにする出力する出力手段とを備えたことを特徴とするデータ処理装置。
【請求項３】
前記プリンタドライバは、特定のオペレーティングシステムに従い入力される入力データが特定形式の場合、前記入力データを文字列のデータと判断することを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
前記アプリケーションは、前記入力データがプリンタ制御コマンド形式である場合に、前記入力データに形式としてＲＡＷを指定することを特徴とする請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置であって、
前記プリンタドライバは、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断手段と、
前記判断手段が前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であると判断した場合、入力される入力データのバイト列を解析して文字列のデータに変換する第１のフィルタと、
前記第１のフィルタにより変換された文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力する第２のフィルタと、を備えたことを特徴とするデータ処理装置。
【請求項６】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置であって、
前記プリンタドライバは、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断手段と、
前記判断手段が前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であると判断した場合、入力される入力データのバイト列を解析して文字列のデータに変換して保存手段に保存する第１のフィルタと、
前記第１のフィルタにより保存された文字列のデータの構成要素を読み込んで解析して、前記プリンタが解析できる印刷コマンドをプリンタに出力する第２のフィルタと、を備えたことを特徴とするデータ処理装置。
【請求項７】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置における印刷処理方法であって、
入力される入力データのバイト列を解析して文字列のデータに変換する変換ステップと、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断ステップと、
前記判断ステップがプリンタ制御コマンド形式であると判断した場合、前記変換ステップにより変換された文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力し、前記判断ステップが文字列のデータの形式であると判断した場合、前記入力データをプリンタにする出力する出力ステップとを備えたことを特徴とする印刷処理方法。
【請求項８】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置における印刷処理方法であって、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断ステップと、
入力される入力データのバイト列を解析して文字列のデータに変換する変換ステップと、
前記変換ステップにより変換された文字列のデータを保存手段に保存する保存ステップと、
前記判断ステップがプリンタ制御コマンド形式であると判断した場合、前記保存手段から読みされる前記文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力し、前記判断ステップが文字列のデータの形式であると判断した場合、前記入力データをプリンタにする出力する出力手段とを備えたことを特徴とする印刷処理方法。
【請求項９】
前記プリンタドライバは、特定のオペレーティングシステムに従い入力される入力データが特定形式の場合、前記入力データを文字列のデータと判断することを特徴とする請求項７又は８記載の印刷処理方法。
【請求項１０】
前記アプリケーションは、前記入力データがプリンタ制御コマンド形式である場合に、前記入力データに形式としてＲＡＷを指定することを特徴とする請求項７乃至９のいずれか１項に記載の印刷処理方法。
【請求項１１】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置における印刷処理方法であって、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断ステップと、
前記判断ステップにより前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であると判断した場合、入力される入力データのバイト列を解析して文字列のデータに変換する第１のフィルタ処理ステップと、
前記第１のフィルタ処理ステップにより変換された文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力する第２のフィルタ処理ステップと、を備えたことを特徴とする印刷処理方法。
【請求項１２】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置における印刷処理方法であって、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断ステップと、
前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であると判断した場合、入力される入力データのバイト列を解析して文字列のデータに変換して保存手段に保存する第１のフィルタ処理ステップと、
前記第１のフィルタにより保存された文字列のデータの構成要素を読み込んで解析して、前記プリンタが解析できる印刷コマンドをプリンタに出力する第２のフィルタ処理ステップと、を備えたことを特徴とする印刷処理方法。
【請求項１３】
請求項７乃至１２のいずれか１項に記載の印刷処理方法をコンピュータに実行させるためのプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【請求項１４】
請求項７乃至１２のいずれか１項に記載の印刷処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトからの印刷指示に基づき印刷情報を印刷装置に転送するプリンタドライバを備えるデータ処理装置の印刷処理に関するものである。
【背景技術】
【０００２】
従来より、アプリケーションソフトからの印刷指示に基づき印刷情報を印刷装置に転送するプリンタドライバを備えるデータ処理装置を含む印刷システムが知られている。
【０００３】
この場合において、データ処理装置において、アプリケーションソフトからの印刷指示に基づき、印刷ジョブ毎にスプールファイルを生成して一旦ハードディスク等の記憶装置に中間印刷データを記憶する。そして、記憶装置に記憶された中間印刷データをプリンタ制御コマンドに変換し、プリンタの動作状況に応じてプリンタへ出力する。
【０００４】
この種の印刷システムは、データ処理装置がオペレーティングシステム（以下「ＯＳ」と略す）を実行することにより、ＯＳの印刷サポート機能とプリンタドライバにより実現されるのが一般的である。
【０００５】
データ処理装置には、様々なプリンタが接続されるため、ＯＳの印刷サポート機能はプリンタドライバを呼び出し、プリンタの種類に応じたプリンタ制御コマンドを生成する。ここで、ＯＳの印刷サポート機能は、アプリケーションに文書データを描画させることにより、中間印刷データをスプールする。ＯＳの印刷サポート機能はスプールされた中間印刷データをプリンタドライバに供給することで、プリンタ制御コマンドを生成し出力する。そして、プリンタドライバから出力されたプリンタ制御コマンドはプリンタに供給され、プリンタにより印刷処理が実行される。
【０００６】
一方、プリンタ制御コマンドを文書データとするアプリケーションソフトも存在する。
【０００７】
つまり、この種のアプリケーションソフトが印刷を行う際は、アプリケーションソフトがプリンタ制御コマンドを出力することを意味する。
【０００８】
ただし、アプリケーションソフト自身がプリンタ制御コマンドを生成することは少なく、プリンタドライバによって生成されたプリンタ制御コマンドを保存して利用することが多い。
【０００９】
この場合、アプケーションソフトが出力したプリンタ制御コマンドは、ＯＳの印刷サポート機能により、記憶装置にそのままスプールされる。そして、ＯＳの印刷サポート機能は、記憶装置にスプールされたプリンタ制御コマンドをプリンタドライバに供給する。
【００１０】
ここで、プリンタドライバはプリンタ制御コマンドをそのまま出力するか、必要に応じ編集処理を行ってプリンタ制御コマンドを出力する。
【００１１】
そして、プリンタドライバから出力されたプリンタ制御コマンドはプリンタに供給され、プリンタに供給され、プリンタにより印刷処理が実行される。
【００１２】
図１３は、従来の印刷システムにおける第１の印刷処理例を説明する図である。本例は、例えばマイクロソフト社のＯＳであるＷｉｎｄｏｗｓ（登録商標）上でアプリケーションソフトが実行され、ユーザがアプリケーションソフトの文書データの印刷を指示した場合のデータの流れを示すものである。
【００１３】
図１３において、アプリケーションソフト（以下、アプリケーションと呼ぶ）１０１からユーザの操作により印刷指示がなされると、その指示内容はＯＳの印刷サポート機能１０３に送られる。
【００１４】
具体的には、図示しないＧＤＩ（Ｇｒａｐｈｉｃ  ＤｅｖｉｃｅＩｎｔｅｒｆａｃｅ）により、仮想化された印刷領域であるデバイスコンテキスト（以下「ＤＣ」と略す）が作成されてアプリケーション１０１へ供給される。
【００１５】
アプリケーション１０１により文書データの描画処理がＤＣに対して行われ、その結果、ＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）と称される、デバイスに依存しない中間印刷データが生成される。
【００１６】
中間印刷データは、ＯＳの印刷サポート機能１０３によって、印刷ジョブ毎にスプールファイル１０５として一時的に記憶装置にスプールされる。
【００１７】
この際、ＥＭＦ形式のデータがスプールされるため、ＯＳの印刷サポート機能１０３によりスプールファイル１０５に「ＥＭＦ」というデータ型が付与される。その後、スプールファイル１０５に格納されたデータは、ＯＳの印刷サポート機能１０３によりデスプールされ、プリンタドライバ１１１に供給される。
【００１８】
なお、プリンタドライバ１１１を構成するモジュールの中で、デスプール時の動作に関連するモジュールは、プリントプロセッサ１１３、グラフィックモジュール１１５、ランゲージモニタ１１７となる。
【００１９】
上述したように、本例は、スプールファイル１０５のデータ型が「ＥＭＦ」であることから、プリントプロセッサ１１３はスプールファイル１０５に格納されたＥＭＦをページ単位で編集し、グラフィックモジュール１１５に供給する。
【００２０】
次に、グラフィックモジュール１１５は、ＯＳの印刷サポート機能１０３を利用しながら、供給されたＥＭＦを出力先のプリンタ１２１に応じたプリンタ制御コマンドに変換して出力する。また、ランゲージモニタ１１７はプリンタ１２１と通信を行いながら、プリンタ１２１の動作状況に応じてプリンタ制御コマンドをプリンタ１２１に出力する。
【００２１】
このようにして、アプリケーション１０１は文書を描画することにより、デバイス非依存の中間印刷データが一旦スプールされ、プリンタドライバ１１１によってラスタライズ処理が行われ、最終的にデバイス依存のプリンタ制御コマンドに変換される。
【００２２】
なお、図１３に示した印刷処理を行うプリンタドライバを以下ＧＤＩプリンタドライバと称する。
【００２３】
一方、プリンタ制御コマンドを文書データとするアプリケーションからの印刷では、データの流れが上記印刷処理とは異なる。
【００２４】
アプリケーション１０１からユーザ操作により印刷指示がなされると、その印刷指示内容はＯＳの印刷サポート機能１０３に送られる。そして、ＯＳの印刷サポート機能１０３により仮想化されたプリンタであるプリンタハンドルが作成されてアプリケーション１０１へ供給される。
【００２５】
アプリケーション１０１は文書データの内容であるプリンタ制御コマンドの書込み処理をプリンタハンドルに対して行う。この際、アプリケーションは「ＲＡＷ」というデータ型を指定する。
【００２６】
プリンタハンドルに書き込まれたプリンタ制御コマンドはＯＳの印刷サポート機能１０３により、印刷ジョブ毎にスプールファイル１０５として一時的に記憶装置にスプールされる。
【００２７】
この際、アプリケーション１０１により「ＲＡＷ」というデータ型が指定されているため、ＯＳの印刷サポート機能１０３によりスプールファイル１０５に「ＲＡＷ」というデータ型が付与される。
【００２８】
次に、スプールファイル１０５に格納されたデータはＯＳの印刷サポート機能１０３によりデスプールされ、プリンタドライバ１１１に供給される。
【００２９】
なお、プリンタ制御コマンドが記憶装置にスプールされた場合、プリンタドライバ１１１を構成するモジュールの中で、デスプール時の動作に関連するモジュールはプリントプロセッサ１１３、ランゲージモニタ１１７となる。
【００３０】
本例は、スプールファイル１０５のデータ型が「ＲＡＷ」であることから、プリントプロセッサ１１３はスプールファイル１０５から、プリンタ制御コマンドを読出しランゲージモニタ１１７に供給する。
【００３１】
そして、ランゲージモニタ１１７はプリンタ１２１と通信を行いながら、プリンタの動作状況に応じてプリンタ制御コマンドをプリンタに出力する。
【００３２】
以上のようにＧＤＩプリンタドライバを用いれば、アプリケーション１０１が印刷内容を描画した場合は中間印刷データがスプールファイル１０５にスプールされ、プリンタドライバ１１１によりプリンタ制御コマンドが生成され、プリンタ１２１に供給される。
【００３３】
また、アプリケーション１０１がプリンタ制御コマンドを扱う場合には、プリンタ制御コマンドがスプールファイル１０５にスプールされ、プリンタドライバ１１１により、プリンタに供給される。
【００３４】
マイクロソフト社のＷｉｎｄｏｗｓファミリーのＯＳの一つにＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）がある。Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）は、ＧＤＩプリンタドライバの他に、ＸＰＳプリンタドライバと呼ばれるプリンタドライバを動作させる機能を有している。
【００３５】
ＸＰＳプリンタドライバの特徴の１つに、スプールファイルに格納されるデバイス非依存の中間印刷データの形式がＸＰＳであることが挙げられる。
【００３６】
ここで、ＸＰＳとは、ＸＭＬＰａｐｅｒＳｐｅｃｉｆｉｃａｔｉｏｎの略で、マイクロソフト社が開発したオープン規格の電子文書フォーマット（文字列のデータフォーマット）の一つである。
【００３７】
図１４は、従来の印刷システムにおける第２の印刷処理例を説明する図である。本例は、上記ＸＰＳプリンタドライバを用いた印刷システム例である。
【００３８】
図１４において、アプリケーション２０１からユーザ操作により印刷指示がなされると、その指示内容はＯＳの印刷サポート機能２０３に送られる。
【００３９】
具体的には図示しないＧＤＩにより、仮想化された印刷領域であるＤＣが作成されてアプリケーション２０１へ供給される。
【００４０】
ここで、アプリケーション１０１により文書データの描画処理がＤＣに対して行われる。描画内容は、図示しないＭＸＤＣ（Ｍｉｃｒｏｓｏｆｔ  ＸＰＳ  ＤｏｃｕｍｅｎｔＣｏｎｖｅｒｔｅｒ）によりＸＰＳ形式に変換され、その結果、ＸＰＳ形式の中間印刷データが生成される。
【００４１】
ＸＰＳ形式の中間印刷データは、ＯＳの印刷サポート機能２０３によって、印刷ジョブ毎にスプールファイル２０５として一時的に記憶装置にスプールされる。
【００４２】
この際、ＯＳの印刷サポート機能２０３によりスプールファイル２０５に「ＲＡＷ」というデータ型が付与される。
【００４３】
つまり、ＸＰＳプリンタドライバを用いた場合、スプールファイル２０５のデータ型が「ＲＡＷ」であることは、ＸＰＳ形式のデータがスプールされていることを意味する。スプールファイル２０５に格納されたデータはＯＳの印刷サポート機能２０３によりデスプールされ、プリンタドライバ２１１に供給される。
【００４４】
プリンタドライバ２１１を構成するモジュールの中で、デスプール時の動作に関連するモジュールはプリンタ制御コマンド生成フィルタ２１３、ランゲージモニタ２１７となる。スプールファイル２０５のデータ型が「ＲＡＷ」であることから、ＯＳの印刷サポート機能２０３はスプールファイル２０５に格納されたＸＰＳ形式のデータを、プリンタ制御コマンド生成フィルタ２１３に供給する。
【００４５】
プリンタ制御コマンド生成フィルタ２１３は、供給されたＸＰＳの各ページのレンダリング処理を行い、プリンタ制御コマンドを出力する。ランゲージモニタ２１７はプリンタ２２１と通信を行いながら、プリンタの動作状況に応じてプリンタ制御コマンドをプリンタに出力する。
【００４６】
このようにして、アプリケーションは文書を描画することにより、ＸＰＳ形式の中間印刷データとして一旦スプールされ、プリンタドライバによってレンダリングが行われ、最終的にデバイス依存のプリンタ制御コマンドに変換される。
【００４７】
ＸＰＳプリンタドライバのモジュールは、１つ以上のフィルタで構成される。
【００４８】
図１４に示す印刷システム例では、フィルタが１つのみ存在するＸＰＳプリンタドライバを例示した。
【００４９】
ＸＰＳプリンタドライバに複数のフィルタが存在する場合、プリンタ制御コマンド生成フィルタの他に、ページのレイアウト処理を担うページレイアウトフィルタを設けることが一般に知られている。なお、複数のフィルタ構成を採用することをパイプラインと称する。
【００５０】
例えば、ページレイアウトフィルタがスプールファイルのＸＰＳを受け取り、レイアウト処理を行い、レイアウト後のＸＰＳを出力する。
【００５１】
プリンタ制御コマンド生成フィルタ２１３は、ページレイアウトフィルタからレイアウト後のＸＰＳを受け取り、プリンタ制御コマンドをランゲージモニタ２１７に対して出力する。
【００５２】
また、ＸＰＳプリンタドライバの各フィルタは、入力をＸＰＳストリームで受け取るか、ＸＰＳパートで受け取るかを指定することができるように構成されている。
【００５３】
ここで、ＸＰＳストリームとはＸＰＳ文書をバイト列として扱うことを意味し、ＸＰＳパートとはＸＰＳ文書をＸＰＳの論理構造であるＸＰＳパートとして扱うことを意味する。
【００５４】
このため、入力をＸＰＳストリームで受け取る場合、フィルタがＸＰＳ文書のデータ構造の解析を行う必要がある。一方、入力をＸＰＳパートで受け取る場合、ＯＳの印刷サポート機能が解析処理を代行するため、フィルタはＸＰＳの扱いが容易になる利点が有る。
【特許文献１】特開２００１−２１６１０９号公報
【特許文献２】特開２００５−０８４８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００５５】
前述したように、印刷システムにおいて、プリンタ制御コマンドを文書データとして扱い、印刷を行うアプリケーションが存在する。また、前述したように、ＸＰＳ文書の扱いを容易にするために、入力をＸＰＳパートで受け取るフィルタを有するＸＰＳプリンタドライバが存在する。
【００５６】
このようなアプリケーションとＸＰＳプリンタドライバを組み合わせた場合、次のような解決すべき課題があった。
【００５７】
図１４において、アプリケーション２０１からユーザ操作により印刷指示がなされると、その印刷指示内容はＯＳの印刷サポート機能２０３に送られる。ＯＳの印刷サポート機能２０３により仮想化されたプリンタであるプリンタハンドルが作成されてアプリケーション２０１へ供給される。
【００５８】
アプリケーション２０１は、文書データの内容であるプリンタ制御コマンドの書込み処理をプリンタハンドルに対して行う。この際、アプリケーションは「ＲＡＷ」というデータ型を指定する。
【００５９】
プリンタハンドルに書込まれたプリンタ制御コマンドはＯＳの印刷サポート機能２０３により、印刷ジョブ毎にスプールファイル２０５として一時的に記憶装置にスプールされる。
【００６０】
この際、アプリケーション１０１により「ＲＡＷ」というデータ型が指定されているため、ＯＳの印刷サポート機能２０３によりスプールファイル２０５に「ＲＡＷ」というデータ型が付与される。
【００６１】
スプールファイル２０５に格納されたデータはＯＳの印刷サポート機能２０３によりデスプールされ、プリンタドライバ２１１に供給される。
【００６２】
スプールファイル２０５のデータ型が「ＲＡＷ」であることから、ＯＳの印刷サポート機能２０３は、スプールファイル２０５に格納されたプリンタ制御コマンド形式のデータを、プリンタ制御コマンド生成フィルタ２１３に供給する。
【００６３】
ところが、プリンタ制御コマンド生成フィルタ２１３は入力の受け取り方としてＸＰＳパートを指定している。
【００６４】
しかし、スプールされているデータがプリンタ制御コマンドであるため、プリンタ制御コマンド生成フィルタ２１３はＸＰＳパートを受け取れない。
【００６５】
従って、プリンタ制御コマンド生成フィルタ２１３は、入力されたプリンタ制御コマンド形式データを扱うことができない。この結果、アプリケーション２０１により出力されたプリンタ制御コマンドはプリンタ２２１に送信されず、印刷が実行されない問題が発生する。
【００６６】
すなわち、プリンタ制御コマンドを文書データとして扱い、印刷を行うアプリケーションが、入力をＸＰＳパートで受け取るフィルタを有するＸＰＳプリンタドライバで印刷を行うと、印刷を実行することが出来ないという課題があった。
【００６７】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、入力されるデータの形式を文字列とするプリンタドライバであっても、アプリケーションから入力される印刷制御コマンドをプリンタに対して正常に出力できる仕組みを提供することである。
【課題を解決するための手段】
【００６８】
上記目的を達成する本発明のデータ処理装置は以下に示す構成を備える。
【００６９】
アプリケーションから入力される入力データをプリンタドライバを介して処理するデータ処理装置であって、前記プリンタドライバは、入力される入力データのバイト列を解析して文字列のデータに変換する変換手段と、前記アプリケーションから入力される入力データの形式がプリンタ制御コマンド形式であるか、又は文字列のデータの形式であるかのいずれであるかを判断する判断手段と、前記判断手段がプリンタ制御コマンド形式であると判断した場合、前記変換手段により変換された文字列のデータの構成要素を解析し前記プリンタが解析できる印刷コマンドをプリンタに出力し、前記判断手段が文字列のデータの形式であると判断した場合、前記入力データをプリンタにする出力する出力手段とを備えたことを特徴とする。
【発明の効果】
【００７０】
本発明によれば、入力されるデータの形式を文字列とするプリンタドライバであっても、アプリケーションから入力される印刷制御コマンドをプリンタに対して正常に出力できる。
【発明を実施するための最良の形態】
【００７１】
次に本発明を実施するための最良の形態について図面を参照して説明する。
【００７２】
＜印刷システム構成の説明＞
【００７３】
〔第１実施形態〕
【００７４】
図１は、本発明の第１実施形態を示すデータ処理装置を適用する印刷システムの構成を説明するブロック図である。本例は、プリンタ１３０３がデータ処理装置１３０５が通信インタフェース１３０７を介して相互に通信可能な印刷システム例である。また、本例では、プリンタ１３０３は、画像形成を行うインクジェット方式のプリンタであり、後述するデータ処理装置１３０５で生成されたプリンタ制御コマンドに基づいて記録媒体１３０１に画像の形成を行う。本印刷システムでは、プリンタの種類については特に問わないが、ここでは、プリンタ１３０３がインクジェット方式のカラープリンタを想定して、以下説明する。
【００７５】
データ処理装置１３０５は、アプリケーションが印刷ジョブを作成し、プリンタドライバ１３１５が印刷ジョブのスプールデータから、接続されたプリンタ１３０３の印刷動作を制御するコマンドの生成を行う。
【００７６】
本実施形態ではデータ処理装置１３０５としてパーソナルコンピュータを用いている。つまり、パーソナルコンピュータとして、ＣＰＵ、ＲＡＭ、ＲＯＭ、入力デバイス、出力デバイス、通信デバイス等を含む各種のハードウエア資源と、ソフトウエア資源を備えているものとする。ここで、ソフトウエア資源とは、ＯＳを含む、各種のアプリケーション、デバイスドライバとして機能するプリンタドライバが含まれる。
【００７７】
特に、プリンタドライバ１３１５は、従来の印刷システムで説明しているように、入力をＸＰＳパートで受け取るフィルタを有するＸＰＳプリンタドライバで構成されているものとする。したがって、ＯＳとしては、前掲しているように、マイクロソフト社のＷｉｎｄｏｗｓファミリーのＯＳであるＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）を例として説明する。しかしながら、本発明が適用可能なＯＳとしては、上記Ｗｉｎｄｏｗｓ  Ｖｉｓｔａに限定されるものではない。
【００７８】
なお、アプリケーションからの印刷指示に対する印刷の設定に関しては、入力操作部１３３５を介してユーザからの指示や入力を受付ける構成となっている。ここで、入力操作部１３３５は、キーボード、ポインティングデバイス等を含むものとする。したがって、ユーザは、プリンタドライバ１３１５が表示装置を介して提供するユーザインタフェースを介して種々の印刷条件、印刷部数、印刷品位、印刷レイアウト、色味等を設定することができる。
【００７９】
データ処理装置１３０５には、データ処理装置１３０５におけるソフトウエアの動作を制御するＯＳが組み込まれており、このＯＳ上で各種機能ブロックが動作する。
【００８０】
通信インタフェース１３０７は、データ処理装置１３０５とプリンタ１３０３を接続する通信インタフェースである。本実施形態ではシリアルインタフェースであるＵＳＢを用いているが、この他に、ＩＥＥＥ１３９４、Ｅｔｈｅｒｎｅｔ（登録商標）、ＩｒＤＡ、ＩＥＥＥ８０２．１１、電力線などのシリアルインタフェースや、セントロニクス、ＳＣＳＩなどのパラレルインタフェースを利用することもできる。
【００８１】
また、通信インタフェース１３０７は、通信を実現するものであれば有線／無線を問わずどのようなインタフェースであっても構わない。
【００８２】
このように、本実施形態における印刷システムとは、単体の装置ではなく、データ処理装置１３０５と画像形成を行うプリンタ１３０３とが特定の双方向インタフェースで接続された構成をとっているが、この例に限られることなく、このようなデータ処理装置とプリンタの機能が一体となった装置一体型の印刷システムであってもよい。
【００８３】
なお、プリンタ１３０３及びデータ処理装置１３０５とも本実施形態の特徴を説明する上で特に必要ないと思われる機能については省略する。
【００８４】
中央制御部１３３３は、データ処理装置１３０５の各種機能を制御し、ＣＰＵの持つ機能がこれに該当する。入力操作部１３３５は、ユーザの意図を汲み取るための各種入力機器から構成される。
【００８５】
情報通知部１３３７は、印刷設定をユーザに通知する。ここで、通知方法としては、モニタなどの表示装置を使用する場合や、音声による通知などが考えられる。
【００８６】
Ｉ／Ｆ制御部１３３１は、データ処理装置１３０５のインタフェース機能を司る。Ｉ／Ｆ制御部１３３１は、例えばＵＳＢのホスト側のコントローラによって構成され、ＵＳＢホストとしての機能を有する。
【００８７】
また、ＵＳＢホストとしての機能の一部はＯＳやドライバなどソフトウエアによっても構成される。記憶部１３３９はＯＳやアプリケーションプログラムやプリンタドライバの命令コードを格納したり、ソフトウエアが動作するにあたり一時的にデータを保存・読込みするのに使用される。
【００８８】
記憶部１３３９は、例えばハードディスクドライブや半導体メモリ（例えばＲＡＭ）などで構成される。
【００８９】
プリンタドライバ１３１１は、印刷のための各種設定や印刷データの生成及びプリンタの制御をデータ処理装置１３０５上で行うためのソフトウエアである。プリンタドライバ１３１１は、プリンタ１３０３に同梱されて提供されるＣＤ−ＲＯＭを読み取り、或いは、メーカのホームページからダウンロードされることで、データ処理装置１３０５の記憶部１３３９にインストールすることができる。なお、ＣＤ−ＲＯＭには、インストーラが付属しており、インストーラを起動することで、ユーザが望む環境でプリンタドライバをインストールすることができる。  
【００９０】
中央制御部１３３３により、プリンタドライバ１３１５のプログラムが実行されて、コンフィギュレーションモジュール１３１３や、ランゲージモニタ１３１７、フィルタパイプラインを構成するＸＰＳ文書出力フィルタ１３２１やプリンタ制御コマンド生成フィルタ１３２３などの機能が実現される。
【００９１】
コンフィギュレーションモジュール１３１３は、用紙の設定や印刷品位の設定などを含む各種印刷設定を行う。また、コンフィギュレーションモジュール１３１３は、ユーザからの指示や入力を受け付け、設定された内容を表示装置に表示もしくは通知する機能を有する。
【００９２】
ＸＰＳ文書出力フィルタ１３２１は、入力データが印刷コマンドであってもＸＰＳ文書を出力するフィルタである。また、ＸＰＳ文書出力フィルタ１３２１の出力は、プリンタ制御コマンド生成フィルタ１３２３の入力となる。プリンタ制御コマンド生成フィルタ１３２３では、入力されたＸＰＳ文書をもとにプリンタ制御コマンドを出力するフィルタである。
【００９３】
プリンタ制御コマンド生成フィルタ１３２３で作成されたプリンタ制御コマンドは、ランゲージモニタ１３１７を介してＩ／Ｆ制御部１３３１に送られ、プリンタ１３０３に送られる。
【００９４】
＜ＸＰＳ文書の構成＞
【００９５】
以下、ＸＰＳのデータ構造について説明する。
【００９６】
図２は、本実施形態を示すデータ処理装置で扱うＸＰＳ文書の構成を説明する図である。なお、ＸＰＳ文書は以下の特徴を備える。
【００９７】
ＸＰＳ文書はＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ（以下ＦＤＳ）をルートとするツリー構造になっている。
【００９８】
ＦＤＳは複数のＦｉｘｅｄＤｏｃｕｍｅｎｔ（以下ＦＤ）を持ち、ＦＤは複数のＦｉｘｅｄＰａｇｅ（以下ＦＰ）を持つ。ＦＤＳとＦＤとＦＰのそれぞれは、ＸＰＳパートと呼ばれることがある。
【００９９】
ＦＰは文書のページの内容をＸＭＬ形式で記述しており、実際に表示または印刷される内容を含んでいる。ＦＰのページ内容で使用されるフォントや画像等の資源は複数のＦＰで共有することができる。
【０１００】
また、ＦＤＳとＦＤとＦＰははそれぞれ印刷設定をＰｒｉｎｔＴｉｃｋｅｔ（以下ＰＴ）で持つことができる。ＰＴはＸＰＳ文書を印刷する際の印刷設定をＸＭＬ形式で記述したものである。以下、具体的なＸＰＳ文書の構造を説明する。
【０１０１】
図２において、ＸＰＳ文書５０１の論理構造は、ＦＤＳ５０３がルートとなるツリー構造となっている。
【０１０２】
ＦＤＳ５０３は、子としてＦＤ５１１とＦＤ５１３を有する。また、ＦＤ５１１は、子としてＦＰ５２１とＦＰ５２３を有する。さらに、ＦＤ５１３は、子としてＦＰ５２５を有する。
【０１０３】
なお、印刷設定を記述したＰＴについては、ＦＤＳ５０３がＰＴ５３１を、ＦＤ５１１がＰＴ５３３を、ＦＰ５２１がＰＴ５３５を、ＦＤ５１３がＰＴ５３７をそれぞれ保持している。また、ＦＰ５２３とＦＰ５２５はＰＴを保持していない。
【０１０４】
さらに、ＦＰ５２１とＦＰ５２３がフォントや画像等の資源５４１を共有しており、ＦＰ５２５はフォントや画像等の資源５４３を利用している。
【０１０５】
以上説明したように、ＸＰＳ文書は、論理的にＸＰＳパートという概念を用いると理解が容易になる。ただし、ＸＰＳ文書自体はバイト列（ストリーム）として取り扱いも可能である。
【０１０６】
＜プリンタドライバの動作＞
【０１０７】
図３は、本実施形態を示す第１のプリンタドライバの構成を説明する図である。本例は、プリンタドライバがＸＰＳプリンタドライバによる第１のフィルタ処理と、第２のフィルタ処理の例である。特に、印刷システムをＯＳの印刷サポート機能とプリンタドライバを中心に示した例である。なお、図１に示したプリンタドライバ１３１５は、図３において、プリンタドライバ３１１に対応する。
【０１０８】
図３において、プリンタドライバ３１１の中で特に重要となるモジュールは、第１のフィルタとして機能するプリンタ制御コマンド格納フィルタ３１５と第２のフィルタとして機能するプリンタ制御コマンド生成抽出フィルタ３１３である。
【０１０９】
ここで、プリンタ制御コマンド格納フィルタ３１５は入力をＸＰＳストリームで受け取るように指定している。一方、プリンタ制御コマンド生成抽出フィルタ３１３は入力をＸＰＳパートで受け取るように指定している。
【０１１０】
また、ユーザインタフェースの機能を提供するコンフィギュレーションモジュールについては、本発明に関与していないので図示していないことを明記しておく。
【０１１１】
まず、図３を用いてＸＰＳ形式の中間印刷データがスプールされる際のプリンタドライバの処理の流れを説明する。
【０１１２】
アプリケーション３０１による印刷指示に応じ、ＯＳの印刷サポート機能３０３が動作し、スプールファイル３０５が作成されＸＰＳ形式の中間印刷データが記憶装置に格納される。なお、スプール時の詳細な処理は前述しているのでここでは簡潔に説明する。つまり、スプールファイル３０５のデータ型が「ＲＡＷ」指定されている。
【０１１３】
デスプールにおいて、スプールファイル３０５のデータ型が「ＲＡＷ」であることから、ＯＳの印刷サポート機能３０３はスプールファイル３０５に格納されたＸＰＳ形式のデータを、プリンタ制御コマンド格納フィルタ３１５に供給する。
【０１１４】
プリンタ制御コマンド格納フィルタ３１５は、入力されたデータの形式を解析し、ＸＰＳ形式と判断する。プリンタ制御コマンド格納フィルタ３１５が入力されたデータの形式がＸＰＳ形式と判断した場合、プリンタ制御コマンド格納フィルタ３１５は、入力されたデータをそのまま出力する。ここで、プリンタ制御コマンド格納フィルタ３１５から出力されたデータは、ＯＳの印刷サポート機能３０３によりプリンタ制御コマンド生成抽出フィルタ３１３に供給される。
【０１１５】
プリンタ制御コマンド生成抽出フィルタ３１３は、入力されたデータを解析し、プリンタ制御コマンドが格納されているか調査する。
【０１１６】
ここでは、プリンタ制御コマンドが格納されていないので、入力されたＸＰＳ文書の各ページをレンダリングし、最終的にプリンタ制御コマンドをランゲージモニタ３１７に出力する。
【０１１７】
ランゲージモニタ３１７は、プリンタ３２１と通信を行いながら、プリンタ３２１の動作状況に応じてプリンタ制御コマンドをプリンタ３２１に出力する。
【０１１８】
続いて、プリンタ制御コマンドがスプールされる際のプリンタドライバの処理の流れを図３を用いて説明する。ここでは、プリンタ制御コマンドがスプールされるので、データ型が「ＲＡＷ」である。
【０１１９】
アプリケーション３０１による印刷指示に応じ、ＯＳの印刷サポート機能３０３が動作し、スプールファイル３０５が作成されプリンタ制御コマンドが記憶装置に格納される。なお、スプール時の詳細な処理は前述しているのでここでは簡潔に説明する。
【０１２０】
スプールファイル３０５のデータ型が「ＲＡＷ」であることから、ＯＳの印刷サポート機能３０３はスプールファイル３０５に格納されたプリンタ制御コマンド形式のデータを、プリンタ制御コマンド格納フィルタ３１５に供給する。
【０１２１】
次に、プリンタ制御コマンド格納フィルタ３１５は、入力されたデータの形式を解析し、プリンタ制御コマンド形式と判断する。
【０１２２】
プリンタ制御コマンド格納フィルタ３１５が入力されたデータがプリンタ制御コマンド形式と判断した場合、入力されたプリンタ制御コマンドを記憶部１３３９にキャッシュし文字列に変換する。
【０１２３】
そして、プリンタ制御コマンド格納フィルタ３１５は、変換されたその文字列をプライベートキーワードで格納したＰＴを作成する。
【０１２４】
そして、プリンタ制御コマンド格納フィルタ３１５は、作成したＰＴを持つＦＤＳを含むＸＰＳ文書を作成し、出力する。プリンタ制御コマンド格納フィルタ３１５から出力されたデータはＯＳの印刷サポート機能３０３によりプリンタ制御コマンド生成抽出フィルタ３１３に供給される。
【０１２５】
プリンタ制御コマンド生成抽出フィルタ３１３は、入力されたデータ、ここではＸＰＳ文書を解析し、ＦＤＳのＰＴにプリンタ制御コマンドが格納されているかを調査する。ここでは、プリンタ制御コマンドが格納されているので、プリンタ制御コマンド生成抽出フィルタ３１３は、入力されたＸＰＳ文書からプリンタ制御コマンドを抽出し、ランゲージモニタ３１７に出力する。
【０１２６】
次に、ランゲージモニタ３１７はプリンタ３２１と通信を行いながら、プリンタ３２１の動作状況に応じてプリンタ制御コマンドをプリンタ３２１に出力する。
【０１２７】
なお、入力されたデータの形式を解析する処理について、図４を用いて後述する。また、ＰＴへプリンタ制御コマンドを格納した際の例は、図５を用いて後述する。
【０１２８】
以上のように、プリンタ制御コマンド格納フィルタ３１５でプリンタ制御コマンドを記憶装置に格納したＸＰＳ文書を作成し、プリンタ制御コマンド生成抽出フィルタ３１３でＸＰＳ文書からプリンタ制御コマンドを抽出することで、アプリケーションからのプリンタ制御コマンドが記憶装置にスプールされても、ＸＰＳプリンタドライバが適切に印刷処理を行うことができる。
【０１２９】
＜データ形式の判定＞
【０１３０】
本実施形態におけるプリンタ制御コマンド格納フィルタ３１５は、ＸＰＳストリームとして入力されたデータがＸＰＳであるか判別する必要が有る。
【０１３１】
図４は、図３に示したＸＰＳ文書の先頭部分のバイナリ・ダンプの一例を示す図である。
【０１３２】
図４に示すように、一般的に、広く用いられている画像や文書のフォーマットは、ヘッダ部分にマジックナンバを格納していることが多い。
【０１３３】
つまり、データの先頭部分を参照すれば、比較的容易に画像や文書の種類を判別することが可能である。
【０１３４】
ＸＰＳ文書の場合、少なくとも先頭のバイト目が'Ｐ'（０ｘ５０）、２バイト目が'Ｋ'（０ｘ４ｂ）となっている。
【０１３５】
従って、プリンタ制御コマンド格納フィルタ３１５は、先頭２バイトを参照した時点で、プリンタ制御コマンドとの差異が明らかになれば、ＸＰＳであることは判別できる。
【０１３６】
なお、入力されたデータの形式がプリンタ制御コマンドであるかどうかの判断は、プリンタドライバが動作対象とするプリンタにより異なるため、ここでは詳細を説明しない。しかし、プリンタ制御コマンドの体系には固有のパターンが存在することが一般的であるため、判別することは可能である。
【０１３７】
＜ＰＴへのプリンタ制御コマンドの格納＞
【０１３８】
図５は、図２に示したＰＴへプリンタ制御コマンドを格納する処理を説明する図である。
【０１３９】
図５に示すように、ＰＴはＸＭＬ文書であるため、プリンタ制御コマンドはＢａｓｅ６４エンコード等を用いて文字列に変換する。また、プリンタ制御コマンドの文字列をＰＴに格納する際に使用するキーワードは、パブリックのＰｒｉｎｔＳｃｈｅｍａには定義されていないため、プライベートのキーワードを用いる。
【０１４０】
図５に示す例では、ＰｒｉｎｔＴｉｃｋｅｔ要素でプライベートの名前空間を「ｎｓ００００」と定義している。そして、Ｐｒｏｐｅｒｔｙ要素を用い、ｎａｍｅ属性を「ｎｓ００００：ＲａｗＪｏｂＰｒｉｎｔＣｏｍｍａｎｄ」としている。このＰｒｏｐｅｒｔｙ要素の子要素であるＶａｌｕｅ要素を用いて、文字列に変換されたプリンタ制御コマンドを格納している。
【０１４１】
従って、ＰＴにプリンタ制御コマンドが含まれているかどうかを判断するためには、ＰＴ中に存在するＰｒｏｐｅｒｔｙ要素を列挙し、ｎａｍｅ属性に上記のプライベートのキーワードを持つＰｒｏｐｅｒｔｙ要素があるかを調べればよい。
【０１４２】
なお、厳密に判断するためには、Ｐｒｏｐｅｒｔｙ要素の子要素であるＶａｌｕｅ要素が存在し、さらに文字列の値が記載されていることを調べればよいことは言うまでもない。
【０１４３】
＜プリンタ制御コマンド格納フィルタ＞
【０１４４】
図６は、本実施形態を示すデータ処理装置における第１のデータ処理手順の一例を示すフローチャートである。なお、Ｓ９０１〜Ｓ９１２は各ステップを示す。また、各ステップは、プリンタ制御コマンド格納フィルタ３１５により実行される。ここで、プリンタ制御コマンド格納フィルタ３１５は、ＸＰＳドライバであるプリンタドライバ３１１に含まれるパイプラインフィルタの１つとして機能する。
【０１４５】
図６において、Ｓ９０１からＳ９０４では入力されたデータの形式を判別するために入力データを記憶部１３３９にキャッシュする処理に対応する。
【０１４６】
先ず、Ｓ９０１で、プリンタ制御コマンド格納フィルタ３１５は、入力データを少なくとも１バイト読み込む。次に、Ｓ９０２で、プリンタ制御コマンド格納フィルタ３１５は、入力データを読み込めたかどうかを判断する。ここで、プリンタ制御コマンド格納フィルタ３１５が、入力データを読み込めたと判断した場合は、Ｓ９０３へ進み、入力データを読み込めなかったと判断した場合は、本処理を終了する。
【０１４７】
次に、Ｓ９０３で、プリンタ制御コマンド格納フィルタ３１５は、読み込んだデータを記憶部１３３９にキャッシュする。続いて、Ｓ９０４で、プリンタ制御コマンド格納フィルタ３１５は、データの形式を判別するのに十分なデータがキャッシュされたか調べる。つまり、プリンタ制御コマンド格納フィルタ３１５は、入力されたデータのデータ形式を判定することが可能かどうかを判断する。
【０１４８】
ここで、プリンタ制御コマンド格納フィルタ３１５が入力されたデータのデータ形式を判定することができるほどデータの入力が十分でないと判断した場合は、Ｓ９０１へ戻る。
【０１４９】
一方、Ｓ９０３で、プリンタ制御コマンド格納フィルタ３１５が入力されたデータのデータ形式を判定することができるほどデータの入力が十分であると判断した場合は、Ｓ９０５へ進む。
【０１５０】
そして、Ｓ９０５で、プリンタ制御コマンド格納フィルタ３１５は、入力されたデータが特定形式、例えばプリンタ制御コマンドの形式であるかどうかを判断する。ここで、プリンタ制御コマンド格納フィルタ３１５がプリンタ制御コマンドの形式であると判断した場合は、Ｓ９０６へ進み、プリンタ制御コマンドの形式でないと判断した場合は、Ｓ９１０に移る。
【０１５１】
以降のＳ９０６からＳ９０９は、入力されたデータの形式がプリンタ制御コマンドの形式である場合の処理に対応する。
【０１５２】
Ｓ９０６で、プリンタ制御コマンド格納フィルタ３１５は、入力されたデータの残りも全て読込み記憶部１３３９にキャッシュする。
【０１５３】
続いて、Ｓ９０７で、プリンタ制御コマンド格納フィルタ３１５は、ＰＴを作成し、キャッシュしたプリンタ制御コマンドを文字列に変換し、前述した図５に示したＸＰＳ文書のようにプライベートキーワードを用いてＰＴに格納する。
【０１５４】
続いて、Ｓ９０８で、プリンタ制御コマンド格納フィルタ３１５は、ＸＰＳ文書を作成し、作成したＰＴをＦＤＳに割り当てるようにして格納する。続く、Ｓ９０９で、プリンタ制御コマンド格納フィルタ３１５は、作成したＸＰＳ文書を出力する。ここで、プリンタ制御コマンド格納フィルタ３１５は、作成したＸＰＳ文書をプリンタ制御コマンド生成抽出フィルタ３１３に出力する。
【０１５５】
一方、Ｓ９０５からＳ９１０へ進んだ場合は、プリンタ制御コマンド格納フィルタ３１５は、入力されたデータの形式が特定形式、例えばＸＰＳの形式であるかどうか判断する。ここで、プリンタ制御コマンド格納フィルタ３１５が、入力されたデータの形式がＸＰＳの形式であると判断した場合は、Ｓ９１１に移り、ＸＰＳ形式でないと判断した場合は、本処理を終了する。
【０１５６】
そして、Ｓ９１１で、プリンタ制御コマンド格納フィルタ３１５は、記憶部１３３９にキャッシュされているデータ内容をそのまま、ランゲージモニタ３１７へ出力する。次に、Ｓ９１２で、プリンタ制御コマンド格納フィルタ３１５は、残りの入力されたデータをキャッシュから読込み全てランゲージモニタ３１７へ出力したら、本処理を終了する。
【０１５７】
以上のように処理することで、プリンタドライバ３１１は、入力されたデータがプリンタ制御コマンドである場合は、ＸＰＳ文書を作成し、ＦＤＳのＰＴにプリンタ制御コマンドを埋め込み、作成したＸＰＳ文書を出力する。
【０１５８】
一方、入力されたデータがＸＰＳである場合は、プリンタドライバ３１１は、そのまま入力されたデータを出力する。
【０１５９】
従って、プリンタ制御コマンド格納フィルタの出力は、必ずＸＰＳ文書となる。これにより、結果的に後続するフィルタの入力にＸＰＳパートが指定されていても、問題なく印刷処理を行うことができるようになる。
【０１６０】
また、上記実施形態では、図６において、入力されたデータの形がプリンタ制御コマンドの形式であるかどうかを先に判定した後に、ＸＰＳ形式であるかどうかを判定しているが、この順は逆でも良い。
【０１６１】
また、入力されたデータがプリンタ制御コマンドでもＸＰＳでも無い時は処理を中断しているが、プリンタ制御コマンドと同様にＰＴに格納してＸＰＳとして出力してもよい。
【０１６２】
つまり入力されたデータの形式がプリンタ制御コマンド格納フィルタにとって未知である場合は、プリンタ制御コマンドと同様に扱ってもよい。
【０１６３】
＜プリンタ制御コマンド生成抽出フィルタ＞
【０１６４】
以下、図７を用いてプリンタ制御コマンド生成抽出フィルタの処理について説明する。
【０１６５】
図７は、本実施形態を示すデータ処理装置における第２のデータ処理手順の一例を示すフローチャートである。
【０１６６】
なお、Ｓ１００１〜Ｓ１００５は各ステップを示す。また、各ステップは、プリンタ制御コマンド生成抽出フィルタ３１３により実行される。ここで、プリンタ制御コマンド生成抽出フィルタ３１３は、ＸＰＳドライバであるプリンタドライバ３１１に含まれるパイプラインフィルタの１つとして機能する。
【０１６７】
まず、Ｓ１００１で、プリンタ制御コマンド生成抽出フィルタ３１３は、入力されたＸＰＳ文書のＦＤＳがＰＴを持っているかどうか判断する。ここで、プリンタ制御コマンド生成抽出フィルタ３１３がＰＴを持っていると判断した場合は、Ｓ１００２に移り、ＰＴを持っていないと判断した場合は、Ｓ１０１１に移る。
【０１６８】
次に、Ｓ１００２で、プリンタ制御コマンド生成抽出フィルタ３１３は、プリンタ制御コマンド格納フィルタ３１５から入力されたＸＰＳ文書からＦＤＳのＰＴを取得する。
【０１６９】
続く、Ｓ１００３で、プリンタ制御コマンド生成抽出フィルタ３１３は、取得したＰＴにプリンタ制御コマンドが格納されているか調べる。ここで、プリンタ制御コマンド生成抽出フィルタ３１３が、取得したＰＴにプリンタ制御コマンドが格納されていると判断した場合は、Ｓ１００４に移り、格納されていないと判断した場合は、Ｓ１０１１に移る。
【０１７０】
そして、Ｓ１００４で、プリンタ制御コマンド生成抽出フィルタ３１３は、ＰＴに格納されている文字列形式のプリンタ制御コマンドを抽出し、文字列からバイト列に変換してランゲージモニタ３１７に出力して、本処理を終了する。
【０１７１】
一方、Ｓ１００５では、プリンタ制御コマンド生成抽出フィルタ３１３は、通常のＸＰＳ印刷処理を行い、本処理を終了する。具体的には、プリンタ制御コマンド生成抽出フィルタ３１３は、ＸＰＳ内のＦＰを順次レンダリングして画像を作成し、これをプリンタ制御コマンドに変換して、ランゲージモニタ３１７に出力する。
【０１７２】
以上のように処理することで、入力されたＸＰＳにプリンタ制御コマンドが格納されている場合は、プリンタ制御コマンドを出力することが可能になる。
【０１７３】
また、入力されたＸＰＳにプリンタ制御コマンドが格納されていない場合は、通常通りＸＰＳの描画内容をプリンタ制御コマンドに変換して出力する。
【０１７４】
従って、プリンタ制御コマンド生成抽出フィルタの出力は必ずプリンタ制御コマンドとなる。これにより、結果的にプリンタに確実にプリンタ制御コマンドが送信され、問題なく印刷処理ができるようになる。
【０１７５】
本実施形態では、プリンタ制御コマンドをＸＰＳ文書のＦＤＳのＰＴに格納したが、格納先はＸＰＳの内部であればよく、ＦＤのＰＴやＦＰのＰＴを始め、ＸＰＳを構成し得るＸＰＳパートやリソースでもよいことは言うまでもない。
【０１７６】
また、ＸＰＳ文書からプリンタ制御コマンドを抽出する場合も、同様にプリンタ制御コマンドが格納されたＸＰＳ文書の構成要素から抽出すればよいことは言うまでもない。
【０１７７】
〔第２実施形態〕
【０１７８】
上記第１実施形態では、大量のプリンタ制御コマンドが印刷ジョブとしてスプールされた場合には、処理効率が低下する場合がある。そこで、プリンタ制御コマンド保存フィルタを設けて、印刷制御コマンドをＸＰＳ文書に変換しながら保存ファイルとすることで、印刷処理効率の低下を防止できるように構成してもよい。以下、その実施形態について説明する。
【０１７９】
＜プリンタドライバの動作＞
【０１８０】
図８は、本実施形態を示す第２のプリンタドライバの構成を説明する図である。本例は、プリンタドライバがＸＰＳプリンタドライバによる第１のフィルタ処理と、第２のフィルタ処理の例である。特に、印刷システムをＯＳの印刷サポート機能とプリンタドライバを中心に示した例である。なお、図１に示したプリンタドライバ１３１５は、図８において、プリンタドライバ４１１に対応する。
【０１８１】
図８において、本実施形態に示すプリンタドライバ４１１の中で特に重要となるモジュールは、第１のフィルタとして機能するプリンタ制御コマンド保存フィルタ４１５と第２のフィルタとして機能するプリンタ制御コマンド生成読込フィルタ４１３である。
【０１８２】
ここで、プリンタ制御コマンド保存フィルタ４１５は入力をＸＰＳストリームで受け取るように指定している。一方、プリンタ制御コマンド生成読込フィルタ４１３は入力をＸＰＳパートで受け取るように指定している。
【０１８３】
また、ユーザインタフェースの機能を提供するコンフィギュレーションモジュールについては、本発明に関与していないので図示していないことを明記しておく。
【０１８４】
まず、図８を用いてＸＰＳ形式の中間印刷データがスプールされた際のプリンタドライバの処理の流れについて説明する。
【０１８５】
アプリケーション４０１による印刷指示に応じ、ＯＳの印刷サポート機能４０３が動作し、スプールファイル４０５が作成されＸＰＳ形式の中間印刷データが記憶部１３３９に格納される。スプール時の詳細な処理は前述しているのでここでは簡潔に説明した。
【０１８６】
そして、デスプールにおいて、スプールファイル４０５のデータ型が「ＲＡＷ」であることから、ＯＳの印刷サポート機能４０３は、スプールファイル４０５に格納されたＸＰＳ形式のデータを、プリンタ制御コマンド保存フィルタ４１５に供給する。
【０１８７】
プリンタ制御コマンド保存フィルタ４１５は、入力されたデータを解析し、ＸＰＳ形式と判断する。そして、プリンタ制御コマンド保存フィルタ４１５が入力されたデータがＸＰＳ形式と判断した場合、プリンタ制御コマンド保存フィルタ４１５は、入力されたデータをプリンタ制御コマンド生成読込フィルタ４１３にそのまま出力する。そして、プリンタ制御コマンド保存フィルタ４１５から出力されたデータはＯＳの印刷サポート機能４０３によりプリンタ制御コマンド生成読込フィルタ４１３に供給される。
【０１８８】
そして、プリンタ制御コマンド生成読込フィルタ４１３は、プリンタ制御コマンド保存フィルタ４１５からの入力データを解析し、プリンタ制御コマンド保存ファイル４３１のパスが格納されているか調査する。ここでは、パスが格納されていないので、入力されたＸＰＳ文書の各ページをレンダリングし、最終的にプリンタ制御コマンドをランゲージモニタ４１７に出力する。
【０１８９】
そして、ランゲージモニタ４１７は、プリンタ４２１と通信を行いながら、プリンタ４２１の動作状況に応じてプリンタ制御コマンドをプリンタ４２１に出力する。
【０１９０】
続いて、プリンタ制御コマンドがスプールされた際のプリンタドライバの処理の流れを図８を用いて説明する。
【０１９１】
アプリケーション４０１による印刷指示に応じ、ＯＳの印刷サポート機能４０３が動作し、スプールファイル４０５が作成され、プリンタ制御コマンドが格納される。なお、スプール時の詳細な処理は前述の通りである。
【０１９２】
ここで、スプールファイル４０５のデータ型が「ＲＡＷ」であることから、ＯＳの印刷サポート機能４０３は、スプールファイル４０５に格納されたプリンタ制御コマンド形式のデータを、プリンタ制御コマンド保存フィルタ４１５に供給する。
【０１９３】
プリンタ制御コマンド保存フィルタ４１５は、入力されたデータを解析し、プリンタ制御コマンド形式であるかどうかを判断する。プリンタ制御コマンド保存フィルタ４１５が入力されたデータがプリンタ制御コマンド形式と判断した場合、プリンタ制御コマンド保存フィルタ４１５は、入力されたプリンタ制御コマンドをプリンタ制御コマンド保存ファイル４３１に保存する。
【０１９４】
そして、プリンタ制御コマンド保存ファイル４３１のパスをプライベートキーワードで格納したＰＴを作成する。そして、作成したＰＴを持つＦＤＳを含むＸＰＳ文書を作成し、プリンタ制御コマンド生成読込フィルタ４１３に出力する。ここで、出力されたデータはＯＳの印刷サポート機能４０３によりプリンタ制御コマンド生成読込フィルタ４１３に供給される。
【０１９５】
次に、プリンタ制御コマンド生成読込フィルタ４１３は入力されたＸＰＳ文書を解析し、プリンタ制御コマンド保存ファイル４３１のパスが格納されているか調査する。ここではパスが格納されているので、プリンタ制御コマンド生成読込フィルタ４１３は、入力されたＸＰＳ文書からパスを抽出し、パスをもとにプリンタ制御コマンド保存ファイル４３１からプリンタ制御コマンドを読み込み、ランゲージモニタ４１７に出力する。ランゲージモニタ４１７はプリンタ４２１と通信を行いながら、プリンタ４２１の動作状況に応じてプリンタ制御コマンドをプリンタ４２１に出力する。
【０１９６】
なお、プリンタ制御コマンド保存ファイル４３１のパスを、ＰＴに格納した際の例を図９を用いて後述する。
【０１９７】
以上のように、本実施形態では、先ず、プリンタ制御コマンド保存フィルタ４１５でプリンタ制御コマンドをプリンタ制御コマンド保存ファイル４３１に保存する。その後、プリンタ制御コマンド保存フィルタ４１５がプリンタ制御コマンド保存ファイル４３１のパスを格納したＸＰＳ文書を作成してプリンタ制御コマンド生成読込フィルタ４１３に出力する。
【０１９８】
その後、プリンタ制御コマンド生成読込フィルタ４１３がプリンタ制御コマンド保存フィルタ４１５から出力されるＸＰＳ文書からパスを抽出する。そして、プリンタ制御コマンド保存フィルタ４１５が、抽出したパスをもとにプリンタ制御コマンド保存ファイル４３１からプリンタ制御コマンドを読み込む。この一連の処理を実行することで、プリンタ制御コマンドがプリンタ制御コマンド保存ファイル４３１としてスプールされても適切に印刷処理が行われる。
【０１９９】
＜記憶領域の識別子のＰＴへの格納＞
【０２００】
図９は、本実施形態を示すデータ処理装置で生成されるＰＴの一例を示す図である。
【０２０１】
以下、プリンタ制御コマンドを保存した記憶領域の識別子を、ＰＴに格納する際の処理について説明する。
【０２０２】
図９に示すように、本実施形態では、プリンタ制御コマンド保存フィルタ４１５がプリンタ制御コマンドが保存される記憶領域の識別子をＰＴに格納する。ここで、記憶領域の識別子とは、具体的にはファイルシステムに作成されたファイルのパスである。
【０２０３】
また、プリンタ制御コマンドを保存した記憶領域の識別子の文字列をＰＴ格納する際に使用するキーワードは、パブリックのＰｒｉｎｔＳｃｈｅｍａには定義されていないため、プライベートのキーワードを用いる。
【０２０４】
図９に示す例では、ＰｒｉｎｔＴｉｃｋｅｔ要素でプライベートの名前空間を「ｎｓ００００」と定義している。そして、Ｐｒｏｐｅｒｔｙ要素を用い、ｎａｍｅ属性を「ｎｓ００００：ＲａｗＪｏｂＰｒｉｎｔＣｏｍｍａｎｄＦｉｌｅＰａｔｈ」としている。このＰｒｏｐｅｒｔｙ要素の子要素であるＶａｌｕｅ要素を用いて、記憶領域の識別子を格納している。
【０２０５】
従って、ＰＴにプリンタ制御コマンドを保存した記憶領域の識別子が含まれているかどうかを判断するためには、ＰＴ中に存在するＰｒｏｐｅｒｔｙ要素を列挙し、ｎａｍｅ属性に上記のプライベートのキーワードを持つものがあるかを調べればよい。
【０２０６】
なお、厳密に判断するためには、Ｐｒｏｐｅｒｔｙ要素の子要素であるＶａｌｕｅ要素が存在し、さらに文字列の値が記載されていることを調べればよいことは言うまでもない。
【０２０７】
＜プリンタ制御コマンド保存フィルタ＞
【０２０８】
図１０は、本実施形態を示すデータ処理装置における第３のデータ処理手順の一例を示すフローチャートである。
なお、Ｓ１１０１〜Ｓ１１１３は各ステップを示す。また、各ステップは、プリンタ制御コマンド保存フィルタ４１５により実行される。ここで、プリンタ制御コマンド保存フィルタ４１５は、ＸＰＳドライバであるプリンタドライバ３１１に含まれるパイプラインフィルタの１つとして機能する。
【０２０９】
なお、以降のＳ１１０１からＳ１１０７では入力されたデータの形式を判別するために入力データをキャッシュする処理を行う。
【０２１０】
具体的には、Ｓ１１０１で、プリンタ制御コマンド保存フィルタ４１５は、入力データを少なくとも１バイト読み込む。次に、Ｓ１１０２で、プリンタ制御コマンド保存フィルタ４１５は入力データを１バイト分読み込めたかどうか判断する。
【０２１１】
ここで、プリンタ制御コマンド保存フィルタ４１５がデータを読み込めたと判断した場合は、Ｓ１１０３に移り、読み込めないと判断した場合は、本処理を終了する。
【０２１２】
次に、Ｓ１１０３で、プリンタ制御コマンド保存フィルタ４１５は、読み込んだデータをキャッシュする。続いてＳ１１０４で、プリンタ制御コマンド保存フィルタ４１５は、データの形式を判別するのに十分なデータがキャッシュされているかどうかを判断する。つまり、プリンタ制御コマンド保存フィルタ４１５は、入力されたデータのデータ形式を判定することが可能かどうかを判断する。
【０２１３】
ここで、プリンタ制御コマンド保存フィルタ４１５が入力されたデータの形式を判定することが可能であると判断した場合は、Ｓ１１０５へ進み、データが不十分でデータ形式が特定形式であるかを判定することができないと判断した場合は、Ｓ１１０１に戻る。
【０２１４】
そして、Ｓ１１０５で、プリンタ制御コマンド保存フィルタ４１５は、入力されたデータの形式が特定形式、例えばプリンタ制御コマンドの形式であるかどうかを判断する。ここで、プリンタ制御コマンド保存フィルタ４１５がプリンタ制御コマンドの形式であると判断した場合は、Ｓ１１０６へ移り、プリンタ制御コマンドでないと判断した場合は、Ｓ１１１１に移る。
【０２１５】
以降Ｓ１１０６からＳ１１１０は入力されたデータの形式がプリンタ制御コマンドである場合の処理となる。
【０２１６】
具体的には、Ｓ１１０６で、プリンタ制御コマンド保存フィルタ４１５は、プリンタ制御コマンドを保存するファイルを作成し、キャッシュの内容をプリンタ制御コマンド保存ファイル４３１として記憶部１３３９に保存する。
【０２１７】
続く、Ｓ１１０７で、プリンタ制御コマンド保存フィルタ４１５は、入力されたデータの残りも全て読み込み上記ファイルに追記保存する。
【０２１８】
続いて、Ｓ１１０８で、プリンタ制御コマンド保存フィルタ４１５は、ＰＴを作成し、プリンタ制御コマンドを保存したファイルのパスを、前述したようにプライベートキーワードを用いてＰＴに格納する。
【０２１９】
続いて、Ｓ１１０９で、プリンタ制御コマンド保存フィルタ４１５は、ＸＰＳ文書を作成し、作成したＰＴをＦＤＳに割り当てるようにして格納する。続く、Ｓ１１１０で、プリンタ制御コマンド保存フィルタ４１５は、作成したＸＰＳ文書をプリンタ制御コマンド生成読込フィルタ４１３に出力して、本処理を終了する。
【０２２０】
一方、Ｓ１１１１で、プリンタ制御コマンド保存フィルタ４１５は、入力されたデータの形式が特定形式、例えばＸＰＳ形式かどうか判断し、ＸＰＳ形式であると判断した場合は、Ｓ１１１２に移り、ＸＰＳ形式でないと判断した場合は、本処理を終了する。
【０２２１】
そして、Ｓ１１１２で、プリンタ制御コマンド保存フィルタ４１５は、キャッシュの内容をそのままプリンタ制御コマンド生成読込フィルタ４１３に出力する。続いて、Ｓ１１１３で、プリンタ制御コマンド保存フィルタ４１５は、残りの入力されたデータを読込み全て、プリンタ制御コマンド生成読込フィルタ４１３に出力して、本処理を終了する。
【０２２２】
以上のように処理することで、入力されたデータがプリンタ制御コマンドである場合は、プリンタ制御コマンドをプリンタ制御コマンド保存ファイル４３１に保存し、ＸＰＳ文書を作成し、ＦＤＳのＰＴにファイルのパスを埋め込み、ＸＰＳ文書を出力する。
【０２２３】
一方、入力されたデータがＸＰＳである場合は、プリンタ制御コマンド保存フィルタ４１５は入力されたデータをそのままプリンタ制御コマンド生成読込フィルタ４１３に出力する。
【０２２４】
従って、プリンタ制御コマンド保存フィルタ４１５の出力は必ずＸＰＳとなる。そして、結果的に後続するフィルタの入力にＸＰＳパートが指定されていても、問題なく印刷処理を行うことができるようになる。
【０２２５】
また、ここでは、入力されたデータがプリンタ制御コマンドであるかどうかを先に判定した後に、ＸＰＳであるかどうかを判定しているが、この順は逆でも良い。
【０２２６】
また、入力されたデータがプリンタ制御コマンドでもＸＰＳでも無い時は処理を中断しているが、プリンタ制御コマンドと同様にファイルに保存し、ファイルのパスをＰＴに格納してＸＰＳとして出力してもよい。
【０２２７】
つまり、入力されたデータの形式がプリンタ制御コマンド保存フィルタにとって未知である場合は、プリンタ制御コマンドと同様に扱ってもよい。
【０２２８】
＜プリンタ制御コマンド生成読込フィルタ＞
【０２２９】
図１１は、本実施形態を示すデータ処理装置における第４のデータ処理手順の一例を示すフローチャートである。なお、Ｓ１２０１〜Ｓ１２０６は各ステップを示す。また、各ステップは、プリンタ制御コマンド生成読込フィルタ４１３により実行される。
【０２３０】
まず、Ｓ１２０１で、プリンタ制御コマンド生成読込フィルタ４１３は、入力されたＸＰＳ文書のＦＤＳがＰＴを持つかどうか判断する。ここで、プリンタ制御コマンド生成読込フィルタ４１３がＰＴを持っていると判断した場合は、Ｓ１２０２に移り、ＰＴを持っていないと判断した場合は、Ｓ１２０６に移る。
【０２３１】
そして、Ｓ１２０２で、プリンタ制御コマンド生成読込フィルタ４１３は入力されたＸＰＳ文書からＦＤＳのＰＴを取得する。続いて、Ｓ１２０３で、プリンタ制御コマンド生成読込フィルタ４１３は取得したＰＴにプリンタ制御コマンドが保存されたファイルのパスが格納されているかどうかを判断する。ここで、プリンタ制御コマンド生成読込フィルタ４１３が、ファイルのパスが格納されていると判断した場合は、Ｓ１２０４に移り、格納されていないと判断した場合は、Ｓ１２０６に移る。
【０２３２】
そして、Ｓ１２０４で、プリンタ制御コマンド生成読込フィルタ４１３は、ＰＴに格納されているパスを抽出し、パスで示されるファイルからプリンタ制御コマンドを読み込み、ランゲージモニタ４１７に出力する。続く、Ｓ１２０５で、プリンタ制御コマンド生成読込フィルタ４１３は、パスで示されるファイルをプリンタ制御コマンド保存ファイル４３１から削除して、本処理を終了する。
【０２３３】
一方、Ｓ１２０６で、通常のＸＰＳ印刷処理を行う。すなわち、プリンタ制御コマンド生成読込フィルタ４１３は、ＸＰＳ内のＦＰを順次レンダリングして画像を作成し、これをプリンタ制御コマンドに変換してランゲージモニタ４１７に出力して、本処理を終了する。
【０２３４】
以上のようにすることで、入力されたＸＰＳにプリンタ制御コマンドが保存されたパスが格納されていると判断した場合は、プリンタ制御コマンドをプリンタ制御コマンド保存ファイル４３１から読み出してランゲージモニタ４１７に出力することが可能になる。
【０２３５】
また、プリンタ制御コマンド生成読込フィルタ４１３は、入力されたＸＰＳにパスが格納されていない場合は、通常通りＸＰＳの描画内容をプリンタ制御コマンドに変換して出力する。従って、プリンタ制御コマンド生成読込フィルタの出力は、必ずプリンタ制御コマンドとなる。これにより、結果的にプリンタ４２１に確実にプリンタ制御コマンドが送信され、問題なく印刷処理ができるようになる。
【０２３６】
本実施形態では、プリンタ制御コマンドを保存したファイルのパスをＸＰＳ文書のＦＤＳのＰＴに格納する場合について説明したが、格納先はＸＰＳの内部であればよく、ＦＤのＰＴやＦＰのＰＴを始め、ＸＰＳを構成し得るＸＰＳパートやリソースでもよいことは言うまでもない。
【０２３７】
また、ＸＰＳ文書からパスを抽出する場合も、同様にパスが格納されたＸＰＳ文書の構成要素から抽出すればよいことは言うまでもない。
【０２３８】
さらに、本実施形態ではプリンタ制御コマンドを保存するのにファイルを用いたが、任意の記憶領域で良いことは言うまでもない。
【０２３９】
また、本実施形態では、ではファイルのパスをＰＴに格納したが、プリンタ制御コマンドを保存した記憶領域を特定可能な識別子であればよいことは言うまでもない。
【０２４０】
さらに、本実施形態では、記憶領域の識別子としてファイルのパスを例示したが、パス以外でも保存した記憶領域を特定できるものであればよく、例えばＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）等でも構わない。
【０２４１】
以上説明した二つの実施形態によれば、次のような効果が得られる。
【０２４２】
ＸＰＳパートで受け取るフィルタを少なくとも一つ以上有するＸＰＳプリンタドライバにおいて、プリンタ制御コマンドを文書データとして扱うアプリケーションによる印刷ジョブを処理することが可能になる。
【０２４３】
さらに、第２の実施形態によれば、大量のプリンタ制御コマンドが印刷ジョブとしてスプールされた場合でも、処理効率を著しく落とすことなく印刷処理を行うことができる。
【０２４４】
〔第３実施形態〕
【０２４５】
以下、図１２に示すメモリマップを参照して本発明に係るデータ処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０２４６】
図１２は、本発明に係るデータ処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【０２４７】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２４８】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２４９】
本実施形態における図６，図７、図１０、図１１に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２５０】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。
【０２５１】
そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２５２】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２５３】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０２５４】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０２５５】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２５６】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０２５７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０２５８】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではない。例えばそのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行う。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２５９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込ませる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２６０】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【０２６１】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【図面の簡単な説明】
【０２６２】
【図１】本発明の第１実施形態を示すデータ処理装置を適用する印刷システムの構成を説明するブロック図である。
【図２】本実施形態を示すデータ処理装置で扱うＸＰＳ文書の構成を説明する図である。
【図３】本実施形態を示す第１のプリンタドライバの構成を説明する図である。
【図４】図３に示したＸＰＳ文書の先頭部分のバイナリ・ダンプの一例を示す図である。
【図５】図２に示したＰＴへプリンタ制御コマンドを格納する処理を説明する図である。
【図６】本実施形態を示すデータ処理装置における第１のデータ処理手順の一例を示すフローチャートである。
【図７】本実施形態を示すデータ処理装置における第２のデータ処理手順の一例を示すフローチャートである。
【図８】本実施形態を示す第２のプリンタドライバの構成を説明する図である。
【図９】本実施形態を示すデータ処理装置で生成されるＰＴの一例を示す図である。
【図１０】本実施形態を示すデータ処理装置における第３のデータ処理手順の一例を示すフローチャートである。
【図１１】本実施形態を示すデータ処理装置における第４のデータ処理手順の一例を示すフローチャートである。
【図１２】本発明に係るデータ処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【図１３】従来の印刷システムにおける第１の印刷処理例を説明する図である。
【図１４】従来の印刷システムにおける第２の印刷処理例を説明する図である。
【符号の説明】
【０２６３】
３１１  プリンタドライバ
３１３  プリンタ制御コマンド生成抽出フィルタ
３１５  プリンタ制御コマンド格納フィルタ
３１７  ランゲージモニタ
【図１】
2009134645.tif 000003
【図２】
2009134645.tif 000004
【図３】
2009134645.tif 000005
【図４】
2009134645.tif 000006
【図５】
2009134645.tif 000007
【図６】
2009134645.tif 000008
【図７】
2009134645.tif 000009
【図８】
2009134645.tif 000010
【図９】
2009134645.tif 000011
【図１０】
2009134645.tif 000012
【図１１】
2009134645.tif 000013
【図１２】
2009134645.tif 000014
【図１３】
2009134645.tif 000015
【図１４】
2009134645.tif 000016