(57)【要約】【課題】  本発明は第１のプロトコル又は第２のプロトコルを用いた双方向通信でプリンターから取得したデバイス情報を用いて印刷処理することにより、好適な出力結果を得ることができるシステムを提供することを目的とする。【解決手段】  デバイス情報が第１のプロトコルを用いた双方向通信で取得可能であると判断した場合は、第１のプロトコルを用いた双方向通信によりデバイス情報をプリンターから取得して、デバイス情報が第１のプロトコルを用いた双方向通信で取得可能ではないと判断した場合は、第２のプロトコルを用いた双方向通信によりデバイス情報をプリンターから取得して、取得したデバイス情報を用いて印刷処理を行う。【選択図】  図４
2018116734.tif 000002
【特許請求の範囲】
【請求項１】
複数のフィルタを含むプリンタードライバーを実行可能な情報処理装置であって、
後続のフィルタで利用されるデバイス情報が第１のプロトコルを用いた双方向通信でプリンターから取得可能か判断する判断手段と、
前記判断手段が前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能であると判断した場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得して、前記判断手段が前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能ではないと判断した場合は、第２のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得する取得手段と、
前記取得手段が取得した前記デバイス情報を用いて印刷処理を行う処理手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記取得手段が取得した前記デバイス情報を前記複数のフィルタがアクセス可能なデータ保存領域に保存する保存手段と、を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１のプロトコルを用いた双方向通信により取得した前記デバイス情報のタイムスタンプに基づいて、前記第１のプロトコルを用いた双方向通信により取得した前記デバイス情報が所定の時間内に取得されたものであるか判断する第２の判断手段と、を有し、
前記第２の判断手段が前記デバイス情報は所定の時間内に取得したものでないと判断した場合に、前記取得手段はさらに前記第２のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記取得手段は非同期通信により前記デバイス情報を取得し、
前記処理手段は前記非同期通信による前記デバイス情報の取得が完了するまで待機し、取得が完了した前記デバイス情報を用いて印刷処理を行うことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１のプロトコルを用いた双方向通信とはＢｉｄｉプリンター通信を用いた通信であることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
複数のフィルタを含むプリンタードライバーを実行可能なコンピュータにおいて実行されるプログラムであって、
前記コンピュータに、
後続のフィルタで利用されるデバイス情報が第１のプロトコルを用いた双方向通信でプリンターから取得可能か判断する判断工程と、
前記判断工程で前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能であると判断した場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得して、前記判断工程で前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能ではないと判断した場合は、第２のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得する取得工程と、
前記取得工程で取得した前記デバイス情報を用いて印刷処理を行う処理工程と、を実行させることを特徴とするプログラム。
【請求項７】
前記コンピュータに、
前記取得工程で取得した前記デバイス情報を前記複数のフィルタがアクセス可能なデータ保存領域に保存する保存工程と、を実行させることを特徴とする請求項６に記載のプログラム。
【請求項８】
前記コンピュータに、
前記第１のプロトコルを用いた双方向通信により取得した前記デバイス情報のタイムスタンプに基づいて、前記第１のプロトコルを用いた双方向通信により取得した前記デバイス情報が所定の時間内に取得されたものであるか判断する第２の判断工程と、を実行させ、
前記第２の判断工程で前記デバイス情報は所定の時間内に取得したものでないと判断した場合に、前記取得工程はさらに前記第２のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得することを特徴とする請求項６又は請求項７に記載のプログラム。
【請求項９】
前記取得工程は非同期通信により前記デバイス情報を取得し、
前記処理工程は前記非同期通信による前記デバイス情報の取得が完了するまで待機し、取得が完了した前記デバイス情報を用いて印刷処理を行うことを特徴とする請求項６乃至８のいずれか１項に記載のプログラム。
【請求項１０】
前記第１のプロトコルを用いた双方向通信とはＢｉｄｉプリンター通信を用いた通信であることを特徴とする請求項６乃至９のいずれか１項に記載のプログラム。
【請求項１１】
複数のフィルタを含むプリンタードライバーを実行可能な情報処理装置の制御方法であって、
後続のフィルタで利用されるデバイス情報が第１のプロトコルを用いた双方向通信でプリンターから取得可能か判断する判断工程と、
前記判断工程で前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能であると判断した場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得して、前記判断工程で前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能ではないと判断した場合は、第２のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得する取得工程と、
前記取得工程で取得した前記デバイス情報を用いて印刷処理を行う処理工程と、を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は双方向通信の技術に関する。
【背景技術】
【０００２】
特許文献１は複数のフィルタを用いて印刷処理する技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１５２７２８
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プリンターによってはプリンタードライバーの印刷処理時にプリンターのデバイス情報を取得する必要がある。例えば、出力対象のデバイス毎に特有である「キャリブレーションデータ」は、ＰＤＬ変換に必要な情報であり、印刷するたびに取得した方が望ましい情報である。しかし、プリンタアーキテクチャによっては特許文献１のプリンタードライバーで双方向通信を用いてこうしたデバイス情報を取得することが困難である。
【０００５】
さらに、前述のプリントアーキテクチャでデバイス情報を取得するように構成したとしても、プリンターによってプロトコルごとに取得できるデバイス情報と取得できないデバイス情報が存在する可能性がある。具体的には取得したいデバイス情報がプリンターから第１のプロトコル（例えば複数のフィルタを有するプリンタアーキテクチャで標準として提供されるプロトコル）で取得できなくとも、第２のプロトコルではプリンターから取得できる可能性がある。こうした関係は例えばファームウェアの異なるプリンターでは逆になることも考えられる。
【０００６】
よって本発明では、第１のプロトコル又は第２のプロトコルを用いた双方向通信でプリンターから取得したデバイス情報を用いて印刷処理することにより、好適な出力結果を得ることができるシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するための本発明に係る情報処理装置は、
複数のフィルタを含むプリンタードライバーを実行可能な情報処理装置であって、
後続のフィルタで利用されるデバイス情報が第１のプロトコルを用いた双方向通信でプリンターから取得可能か判断する判断手段と、
前記判断手段が前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能であると判断した場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得して、前記判断手段が前記デバイス情報は前記第１のプロトコルを用いた双方向通信で取得可能ではないと判断した場合は、第２のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンターから取得する取得手段と、
前記取得手段が取得した前記デバイス情報を用いて印刷処理を行う処理手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明により、第１のプロトコル又は第２のプロトコルを用いた双方向通信でプリンターから取得したデバイス情報を用いて印刷処理することにより、好適な出力結果を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】コンピューターシステムのハードウェアとソフトウェアのブロック構成図である。
【図２】印刷処理システムのブロック構成図である。
【図３】プリントマネージャにおける印刷手段を示すフローチャートである。
【図４】実施形態１における通信フィルタにおける処理手段を示すフローチャートである。
【図５】実施形態１におけるレイアウトフィルタにおける処理手段を示すフローチャートである。
【図６】実施形態１におけるレンダラフィルタにおける処理手段を示すフローチャートである。
【図７】実施形態２における通信フィルタにおける処理手段を示すフローチャートである。
【図８】実施形態２におけるレイアウトフィルタにおける処理手段を示すフローチャートである。
【図９】実施形態２におけるレンダラフィルタにおける処理手段を示すフローチャートである。
【発明を実施するための形態】
【００１０】
Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）のＶ３（Ｖｅｒｓｉｏｎ  ３）プリンタードライバーにおける印刷の流れを説明する。
【００１１】
パーソナルコンピューター上で作成した文書や図といったファイルをアプリケーションから印刷する際には、Ｖ３プリンタードライバーを使ってユーザーが指定した印刷設定を反映した描画データを、ページ記述言語（ＰＤＬ）に変換し、プリンターに送信する。Ｖ３プリンタードライバーがＰＤＬに変換するためには、出力対象のプリンターが保持しているデバイス情報が必要な場合があり、その時はＶ３プリンタードライバーが出力対象のプリンターと双方向通信を行うことでデバイス情報を取得する。
【００１２】
Ｖ３プリンタードライバーが双方向通信を行うために、プリンターと通信を行う機能を持つポートモニターとランゲージモニターと呼ばれる機構を用意している。
【００１３】
ポートモニターとは、プリンターにアクセスするプリントマネージャとＶ３プリンタードライバー間で通信を制御することができ、Ｖ３プリンタードライバーはポートモニターを経由して印刷処理を行う。また、ＯＳが用意している標準双方向通信機能（例えばＢｉｄｉｄｉｒｅｃｔｉｏｎａｌ  Ｐｒｉｎｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）を利用してデバイス情報を取得することができる。ここで標準双方向通信によって取得できるデバイス情報はＷＳＤプロトコルによって取得された情報である。ＯＳから提供されている代表的なポートモニターとして、ＵＳＢポートをサポートするためのＵＳＢＭｏｎやＳｔａｎｄａｒｄ  ＴＣＰ／ＩＰを提供するＴＣＰＭｏｎ、ＷＳＤポートを提供するＷＳＤＭｏｎなどがある。
【００１４】
ランゲージモニターとは、ポートモニターを経由してデバイス情報を取得することや、ポートモニターでは取得できないデバイス情報を、ランゲージモニターがポートを開き、前述のＷＳＤプロトコルとは異なる独自プロトコルを利用した双方向通信である独自双方向通信を利用することができる。このランゲージモニターは、プリンターベンダーがＶ３プリンタードライバーインストールセットに同梱することで、ユーザーに提供することができる。
【００１５】
一方でＶ４（Ｖｅｒｓｉｏｎ  ４）プリンタードライバーでは前述のランゲージモニターを利用することができない。よって、当然ながら前述のランゲージモニターによる独自双方向通信を行うことができない。そこで、以降の説明ではＶ４プリンタードライバー（以降、単にプリンタードライバーと記載）でも独自双方向通信を利用可能とする構成について説明する。
【００１６】
〔実施形態１〕
図１は情報処理装置のハードウェア構成図である。
【００１７】
ＣＰＵ１０１は主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０２２はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。補助記憶装置１０５はアプリケーション１０５１やプリンタードライバー１０５２、オペレーティングシステム（ＯＳ）１０５３等を記録する。プリンタードライバー１０５２は、プリンターに対して、印刷指示を行うことができる。キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイス１０３２などの入力機器は、入力Ｉ／Ｆ１０３を通じて、ユーザーがコンピュータに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンター１０４２などの出力機器に対してデータを出力する。プリンター１０４２とは直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６を通じて接続されるネットワーク１０６１を通して接続されていてもよい。また、１０７は共通データシステムバスで、Ｉ／Ｆやモジュール間でデータのやりとりを行う。
【００１８】
図２はドライバー印刷システムの構成を例示するブロック図である。ＯＳ１０５３上で動作するドライバー印刷システムは、ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（以下、ＸＰＳと略記する）と呼ばれるファイルフォーマットをスプールデータとして使用し、印刷を行うシステムである。プリントマネージャ３１８、ＧＤＩｔｏＸＰＳ変換モジュール３０７、フィルタパイプラインマネージャ３１２はＯＳ１０５３に含まれるモジュールである。ＧＤＩｔｏＸＰＳ変換モジュール３０７、フィルタパイプラインマネージャ３１２は、プリンタードライバー１０５２に含まれているが、ＯＳ１０５３から提供されるプリンタードライバー１０５２のモジュールという位置づけである。プリンタードライバー１０５２とフィルタパイプラインマネージャ３１２の各フィルタは、図１の補助記憶装置１０５にプリンタードライバー１０５２として格納されている。ＧＤＩ印刷アプリケーション３０１とＸＰＳ印刷アプリケーション３０２は、図１の補助記憶装置１０５にアプリケーション１０５１として格納されている。ユーザーは入力装置（キーボード１０３１やポインティングデバイス１０３２）を使用して、印刷指示を行う。つまり、ユーザーは、モニタ１０４１に映し出されたＧＤＩ印刷アプリケーション３０１（以下、ＧＤＩアプリという）、またはＸＰＳ印刷アプリケーション３０２（以下、ＸＰＳアプリという）のＵＩ画面上で操作して印刷処理を実行させる。
【００１９】
印刷処理では、プリンターの選択、印刷設定の作成、描画データの変換という、３つの処理が順番に実行される。まず、印刷したいプリンター１０４２の選択処理が行われる。ユーザーから見た場合、プリンター１０４２の選択は、印刷を実行するプリンター１０４２に対応したプリンタードライバー１０５２を選択することと同義である。プリンタードライバー１０５２の選択には、プリントキューを利用する。
【００２０】
次に印刷設定情報を作成する処理が実行される。印刷設定ではまず、アプリケーション１０５１が印刷設定用のメモリ領域をＲＡＭ１０２２上に確保する。そして、アプリケーション１０５１は、プリンタードライバー１０５２のコンフィギュレーションモジュール３０８を呼び出して、印刷設定データを作成して格納する。ＧＤＩアプリ３０１では、印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体３０３を用いる。ＸＰＳアプリ３０２では、マークアップ言語ＸＭＬで記載されたプリントチケット３０４を用いる。ＤＥＶＭＯＤＥ構造体３０３は、ＯＳが定義する標準領域と、プリンタードライバーが独自で定義する拡張領域を有する。
【００２１】
プリントチケット３０４は、ＸＭＬ形式で記述された印刷設定データを有し、標準領域と拡張領域は名前空間によって記載が分かれている。印刷設定データには機種固有の情報も含まれているので、コンフィギュレーションモジュール３０８は、機種依存ファイル３０９を利用して、印刷設定データを作成する。ＤＥＶＭＯＤＥ構造体３０３またはプリントチケット３０４は印刷設定データを保持しており、アプリケーション１０５１が直接、値を書き換えることで印刷設定を変更する。プリンター１０４２に依存した専用の設定については、プリンターエクステンション３１０が持つユーザーインタフェースを使用して設定される。プリンターエクステンション３１０は、プリンタードライバー１０５２の一種ではあるが、別のアプリケーションとしてインストールが行われる。プリンターエクステンション３１０はプロパティバッグ３１０１というデータ保存領域を有する。このデータ保存領域には、プリンターエクステンション３１０とコンフィギュレーションモジュール３０８、フィルタパイプラインマネージャ３１２の各フィルタからアクセス可能である。
【００２２】
プリンタードライバー１０５２は、ユーザーインタフェースの設定に従い、ＤＥＶＭＯＤＥ構造体３０３またはプリントチケット３０４の、プリンター１０４２に依存した設定データを変更する。印刷設定データは具体的には、出力する用紙サイズを「Ａ４」にする、印刷の向きを「横」にする等のように、印刷を行う際に必要なデータのことを指す。プリントチケット３０４には印刷設定データがＸＭＬ形式で記述されているので、ＸＰＳアプリ３０２がすべての設定値を直接変更して書き換えることは容易であるが、プリンターエクステンション３１０のユーザーインタフェースを使って設定変更しても構わない。印刷設定データは文書印刷処理の度に作成される。プリンター１０４２のオプション機器や、ユーザーごとの環境設定等のデータを保持しておきたい場合、ユーザーインタフェースにより、ＯＳのレジストリデータベース３０５に保存される。レジストリデータベース３０５が使用できない場合には、ユーザーインタフェースにより、アプリケーションデータ３２０として設定情報が保存される。印刷設定のデフォルト値はＯＳのプリントマネージャ３１８が、レジストリデータベース３０５に保存する。レジストリデータベース３０５や、アプリケーションデータ３２０は、補助記憶装置１０５に保存される。
【００２３】
最後に描画データの変換が実行される。印刷設定が確定した場合、ユーザーはアプリケーション１０５１から印刷処理を実行させる。ＧＤＩアプリ３０１から印刷する場合、プリンタードライバーの形態を取るＧＤＩｔｏＸＰＳ変換モジュール３０７に描画データが送られ、ＸＰＳスプールファイル３０６が作成される。このとき、ＧＤＩｔｏＸＰＳ変換モジュール３０７はコンフィギュレーションモジュール３０８を呼び出し、印刷設定データをＤＥＶＭＯＤＥ構造体３０３からプリントチケット３０４に変換する。この変換の際、ＤＥＶＭＯＤＥ−プリントチケット変換モジュール３０８１が使用される。ＸＰＳアプリ３０２から印刷する場合には、ＸＰＳファイルをＸＰＳアプリ自身が生成する方法と、ＯＳがＸＰＳアプリからの描画命令に応じてＸＰＳファイルを生成する方法の２通りの方法がある。どちらの方法であっても、印刷の途中でＸＰＳスプールファイル３０６が生成される。
【００２４】
ＸＰＳスプールファイル３０６が生成された後、プリントフィルタパイプライン３１１に処理が渡される。プリントフィルタパイプライン３１１は、データを複数のフィルタに通過させることで処理が行われる仕組みで、フィルタコンフィギュレーションモジュール３１６によりフィルタの数や順番を制御する。プリントフィルタパイプライン３１１で動作するフィルタパイプラインマネージャ３１２は、フィルタコンフィギュレーションモジュール３１６に従って処理を実行する。本実施形態では、設定フィルタ３１３、レイアウトフィルタ３１４、レンダラフィルタ３１５の順に処理が実行される。フィルタはプリンタードライバー１０５２の構成によって、数や種類が異なる。印刷処理はＸＰＳスプールファイル３０６をフィルタに受け渡すことで行われ、フィルタがそれぞれＸＰＳスプールファイル３０６を加工し、次のフィルタに渡していくことで処理が進行する。最後に、プリンターが理解できるデータ言語であるプリンター制御言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：以下、ＰＤＬと略記する）の出力が得られる。もちろん、プリンター１０４２がＸＰＳスプールファイル３０６を直接読み込んで印刷できるＸＰＳダイレクトプリンターであれば、全てのフィルタを素通りして印刷してもよい。各フィルタはデータをプロパティバッグ３１７に保存することができる。また、プロパティバッグ３１７から、ＯＳ１０５３の情報や、他のフィルタのデータを取得することもできる。
【００２５】
設定フィルタ３１３では、プリントチケット３０４を読み込んで印刷に必要なデータをプリントチケット３０４に書き込む処理を行う。レイアウトフィルタ３１４では、倍率の変更や製本の面付けレイアウトやスタンプ等の、レイアウトに関する処理を行う。最終段のレンダラフィルタ３１５は、ＸＰＳスプールファイル３０６をレンダリングしてＰＤＬデータに変換する。ＰＤＬデータは印刷処理のスケジュール管理を行うプリントマネージャ３１８で管理され、キュー（待ち行列）に印刷ジョブが次々と登録される。プリンター１０４２が印刷できる状態になると、キューに登録された順にポートモニター３１９を通してＰＤＬデータがプリンター１０４２に送信される。
【００２６】
以上のように、アプリケーションからの印刷データをＰＤＬデータに変換することがプリンタードライバーの主な役目であり、前述の印刷処理が行われる。
【００２７】
以下、本実施形態について図３、図４、図５、図６のフローチャートを使用して説明する。
【００２８】
図３は、印刷時にＯＳのプリントフィルタパイプライン３１１で動作するフィルタパイプラインマネージャ３１２が実行する印刷処理の一例を示すフローチャートである。プリンターベンダーは、このフィルタパイプラインマネージャ３１２が実行するフィルタを提供することで、ユーザーが設定した印刷設定に応じたレイアウト変更やＰＤＬ変換を行うレンダリング機能を有することができる。
【００２９】
まず、ユーザーがアプリケーション１０５１から印刷実行すると、ＯＳがフィルタパイプラインマネージャ３１２を実行し、印刷処理をスタートさせる（Ｓ４００）。そしてＳ４０１に進む。
【００３０】
Ｓ４０１において、通信フィルタ３１３の処理を開始する。Ｓ４０１の通信フィルタの処理に関しては、図４のフローチャートを用いて説明する。
【００３１】
図４は、通信フィルタの処理の一例を示すフローチャートである。図４では、標準双方向通信により後続のフィルタ（レイアウトフィルタ３１４とレンダラフィルタ３１５）で利用されるデバイス情報が取得できるか判断し、取得できなかったり取得できても最新でない場合に、独自双方向通信により取得できるデバイス情報を取得する手段について記述する。
【００３２】
Ｓ５００において、通信フィルタ３１３の処理を開始する。
【００３３】
Ｓ５０１において、通信フィルタ３１３は、出力対象のプリンターは双方向通信が必要なプリンターかどうかを判断する。
【００３４】
印刷時に利用する出力形式によっては、印刷時にデバイス情報が必要ない場合もある。例えば、レンダラフィルタ３１５は、ラスター印刷の場合は印刷処理においてプリンターの色ずれ調整値によって描画データを調整することがあるが、ベクター印刷の場合には印刷処理でこれらを行う必要がなく、デバイス情報を必要としない。そこで、プリンタードライバーの機種依存ファイル３０９に、プリンタードライバーがラスター印刷により印刷処理するか又はベクター印刷により印刷処理するか、すなわち双方向通信が必要かどうかを記述しておく。これにより、通信フィルタ３１３が機種依存ファイル３０９を元に双方向通信が必要なプリンターかどうかを判断できる。
【００３５】
もしくは、最初にプリンターと独自双方向通信を行い、独自双方向通信が失敗した場合を双方向通信が必要でないプリンターと判断してもよい。具体的には通信フィルタ３１３がプリンターに対して何らかの要求を行い、それに対してプリンターが応答できるか否かによって判断できる。例えば、通信フィルタ３１３がプリンターに対して双方向通信できるか否かを確認する要求を行い、所定時間内にプリンターから双方向通信できることを示す応答を受信した場合に、Ｓ５０１においてプリンターは双方向通信が必要であると判断するように構成する。
【００３６】
Ｓ５０１で双方向通信が必要ないプリンターであると判断された場合は、Ｓ５０９に進み、通信フィルタ３１３の処理を終了する。もし、双方向通信が必要なプリンターであると判断された場合は、Ｓ５０２に進む。
【００３７】
Ｓ５０２において、標準双方向通信により後続のフィルタで利用されるデバイス情報が取得できるかを判断する。標準双方向通信とは、ＯＳが提供しているポートモニターを利用した双方向通信手段である。例えばＢｉｄｉｄｉｒｅｃｔｉｏｎａｌ  ＰｒｉｎｔｅｒＣｏｍｍｕｎｉｃａｔｉｏｎ（Ｂｉｄｉプリンター通信）を利用してプリンターと通信することで実現できる。この標準双方向通信を利用できるかどうかの判断手段として、実際にデバイス情報を標準双方向通信で取得することができるかを試し、取得ができる場合はＳ５０３に進む。
【００３８】
Ｓ５０３において、標準双方向通信を利用してデバイス情報を取得し、Ｓ５０４へ進む。
【００３９】
Ｓ５０４において、標準双方向通信を利用して、取得したデバイス情報が最新情報であるかを判断する。接続するポートによっては、ポートモニターがキャッシュ情報を持っている可能性がある。例えば、ＷＳＤポートではキャッシュ情報を保持しており、標準双方向通信を行うとＷＳＤポートがキャッシュ情報をデバイス情報として返すことがあり、その場合最新のデバイス情報でない場合がある。そこで、タイムスタンプの情報をデバイス情報から取得し、タイムスタンプの日時と現在の日時の差分を算出して、差分が所定の時間内に収まっている場合に、最新情報であると判断する。例えば所定の時間が２４時間ならば、タイムスタンプの日時が２０１３年１１月２８日１４時００分で現在の日時が２０１３年１１月２９日１３時００分であれば最新情報であると判断する。
【００４０】
また、ＴＣＰ／ＩＰポートでは、キャッシュ情報を保持しておらず、取得したデバイス情報が最新のデバイス情報となる。そのため、ＴＣＰ／ＩＰポートで接続している場合は、最新の情報であると判断してもよい。
【００４１】
Ｓ５０４において最新のデバイス情報であると判断した場合は、Ｓ５０８へ進む。
【００４２】
また、Ｓ５０２において、標準双方向通信を利用して取得できないと判断した場合、もしくはＳ５０４にて、最新のデバイス情報でないと判断した場合は、Ｓ５０５へ進む。
【００４３】
Ｓ５０５において、現在設定されている接続ポートの種類を取得し、Ｓ５０６へ進む。
【００４４】
Ｓ５０６において、Ｓ５０５で取得したポートの種類に応じた手段でポートを開き、Ｓ５０７へ進む。
【００４５】
Ｓ５０７において、独自プロトコルを利用した双方向通信を行い、デバイス情報を取得する。そして、Ｓ５０８へ進む。
【００４６】
Ｓ５０８において、取得したデバイス情報をプロパティバッグ３１７へ保存する。以降のフィルタでは、このプロパティバッグ３１７に保存されたデバイス情報にアクセスすることになる。保存後にＳ５０９へ進み、Ｓ５０９で通信フィルタの処理を終了する。
【００４７】
フィルタパイプラインマネージャ３１２は、印刷終了後から一定時間経過すると自動的に終了する。その場合保存していたプロパティバッグ３１７の情報はクリアされてしまうため、取得したデバイス情報をプロパティバッグ３１７ではなくファイルとして保存してもよい。その場合は、以降のフィルタでは保存したファイルを用いてデバイス情報を取得することとなる。
【００４８】
本実施例では、通信フィルタ３１３において、標準双方向通信で取得できるか（Ｓ５０２）および最新のデバイス情報か（Ｓ５０４）を判断しているが、この判断基準を後続の各フィルタで行ってもよい。そのような場合は、通信フィルタ３１３は常に独自のプロトコルで通信を行い、取得したデバイス情報をプロパティバッグ３１７に保存する。そして後続のフィルタにおいて、標準双方向通信を行うか、プロパティバッグ３１７のデバイス情報を使用するかを選別して実行する。
【００４９】
加えて、デバイス情報が複数項目ある場合、Ｓ５０２からＳ５０８の処理は複数項目のうち項目ごとに処理を行うように構成しても構わない。このように構成した場合はＳ５０２からＳ５０８の処理を複数項目全てに対して行うまで繰り返す。
【００５０】
以上により、図４のＳ４０１の通信フィルタの処理を終了し、Ｓ４０２へ進む。
【００５１】
Ｓ４０２において、レイアウトフィルタ３１４の処理を開始する。Ｓ４０２のレイアウトフィルタ３１４の処理に関しては、図５のフローチャートを用いて説明する。
【００５２】
図５は、レイアウトフィルタ３１４の処理の一例を示すフローチャートである。レイアウトフィルタ３１４は印刷処理の一部であるレイアウト処理を行う。
【００５３】
Ｓ６００において、レイアウトフィルタ３１４の処理を開始する。
【００５４】
Ｓ６０１において、プロパティバッグ３１７からデバイス情報を取得し、Ｓ６０２に進む。
【００５５】
Ｓ６０２において、デバイス情報や印刷設定に応じたレイアウト処理を行う。具体的には、取得したデバイス情報が「プリンターにハードディスクのような保存領域が存在するか」を判断してレイアウト処理を変更する場合がある。印刷設定として、部数「２部」かつ「ソート印刷」のとき、取得したデバイス情報が、プリンターに保存領域が存在することを示す場合には、レイアウトフィルタ３１４では後述する複製処理を行わない。そしてプリンターの保存領域を利用することで、部数「２部」かつ「ソート印刷」を実現することができる。一方で、デバイス情報として保存領域が存在しないと判断した場合は、レイアウトフィルタで印刷ジョブを複製する複製処理を実行し、２つのジョブを送信することで部数「２部」かつ「ソート印刷」を実現することとなる。このように、印刷設定とデバイス情報を利用してレイアウト処理を施し、Ｓ６０３に進む。
【００５６】
Ｓ６０３において、レイアウトフィルタ３１４の処理を終了する。
【００５７】
以上により、図４のＳ４０２のレイアウトフィルタ３１４の処理を終了し、Ｓ４０３へ進む。
【００５８】
Ｓ４０３において、レンダラフィルタ３１５の処理を開始する。Ｓ４０３のレンダラフィルタ３１５の処理に関しては、図６のフローチャートを用いて説明する。
【００５９】
図６は、レンダラフィルタ３１５の処理の一例を示すフローチャートである。レンダラフィルタ３１５は印刷処理の一部であるレンダリング処理を行う。
【００６０】
Ｓ７００において、レンダラフィルタ３１５の処理を開始する。Ｓ７０１において、プロパティバッグ３１７からデバイス情報を取得する。Ｓ７０２において、デバイス情報に応じたレンダリング処理を行う。具体的には、取得するデバイス情報として色ずれ調整情報がある。レンダラフィルタ３１５では色ずれ調整情報を利用してレンダリングの調整を行うことができる。このように、取得したデバイス情報を利用してレンダリング処理を施し、Ｓ７０３へ進む。Ｓ７０３において、レンダラフィルタ３１５の処理を終了する。
【００６１】
以上により、Ｓ４０３のレンダラフィルタ３１５の処理を終了し、Ｓ４０４へ進む。
【００６２】
Ｓ４０４において、ポートモニター３１９を経由して印刷ジョブをプリンターへ送信し、Ｓ４０５に進み、印刷処理を終了する。
【００６３】
以上の手段により、ランゲージモニターがインストールできない新しいＯＳ環境においても、適切にプリンターと双方向通信を行うことができ、正しい出力結果を得ることができる。また、レガシープリンターのような、標準双方向通信はサポートしていないが、独自プロトコルによる双方向通信はサポートしている機種に対しても、適切にプリンターと双方向通信を行うことができ、正しい出力結果を得ることができる。
【００６４】
〔実施形態２〕
実施形態１では、通信フィルタ３１３においてプリンターと双方向通信を行うが、ネットワーク接続に時間がかかる場合、印刷処理にも直接影響を及ぼしてしまう。特に、レイアウトフィルタ３１４においてデバイス情報を利用することがない場合は、双方向通信処理と同時にレイアウト処理を行う方が効率がよい。そこで本実施形態では、非同期通信を利用することにより印刷処理の動作に影響しない手段について説明する。
【００６５】
以下、本実施形態について図７から図１０のフローチャートを使用して説明する。
【００６６】
印刷時にＯＳのプリントフィルタパイプライン３１１で動作するフィルタパイプラインマネージャ３１２が実行する印刷の処理に関しては、実施形態１に記述しているため省略する。本実施形態では、各フィルタの処理に関しての説明を行う。
【００６７】
図７は、非同期通信処理を利用した場合の通信フィルタの処理の一例を示すフローチャートである。なお、Ｓ８００において、処理を開始する。
【００６８】
Ｓ８０１の処理は、Ｓ５０１と同一のため説明を省略する。Ｓ８０１で双方向通信が必要なプリンターであると判断された場合はＳ８０２の処理において、非同期通信処理を行う。非同期通信処理とは、印刷時に動作する処理とは異なるスレッドで通信処理を行い、印刷処理と通信処理を並行して行う処理のことを指す。非同期通信処理における実際の処理内容に関しては、Ｓ５０２からＳ５０８と同一のため説明を省略するが、通信処理と並行して印刷処理を進めるため、Ｓ８０２の処理が完了した後は通信の成功・失敗にかかわらずＳ８０３へ進む。
【００６９】
そして、Ｓ８０３において、非同期通信処理を除く通信フィルタの処理を終了する。
【００７０】
次にレイアウトフィルタ３１４の処理を開始する。
【００７１】
図８は、非同期通信処理を利用した場合のレイアウトフィルタ３１４の処理の一例を示すフローチャートである。レイアウトフィルタ３１４の処理に関しては、図８のフローチャートを用いて説明する。本実施形態では、レイアウトフィルタ３１４の処理としてデバイス情報を使用しないことを想定する。
【００７２】
Ｓ９００において、処理を開始する。Ｓ９０１において、印刷設定に応じたレイアウト処理を行い、Ｓ９０２に進む。Ｓ９０２において、レイアウトフィルタ３１４の処理を終了する。本実施形態では、前述したようにデバイス情報を利用しない。そのため、レイアウトフィルタ３１４の処理を行っている最中に非同期通信処理が実行されていたとしても、印刷処理に関しては影響しない。そして、レンダラフィルタ３１５の処理に進む。
【００７３】
次にレンダラフィルタ３１５の処理を開始する。図９は、非同期通信処理を利用した場合のレンダラフィルタの処理の一例を示すフローチャートである。レンダラフィルタ３１５の処理に関しては、図９のフローチャートを用いて説明する。
【００７４】
Ｓ１０００において、レンダラフィルタの処理を開始する。Ｓ１００１において、通信フィルタの非同期処理Ｓ８０２が終了しているかを判断する。判断する手段として、プロパティバッグ３１７にデバイス情報が保存されているか否かで判断する。または、非同期通信が完了したかどうかをプロパティバッグ３１７にフラグとして情報を持たせてもよい。
【００７５】
もし、デバイス情報が保存されていないと判断した場合はＳ１００２へ進む。Ｓ１００２において、通信フィルタ３１３の非同期通信処理が終了し、プロパティバッグ３１７にデバイス情報が保存されるまで待つ。Ｓ１００１で非同期通信が完了している、もしくはＳ１００２の処理において非同期通信が完了し、デバイス情報が保存された場合は、Ｓ１００３へ進む。Ｓ１００３からＳ１００５の処理は、Ｓ７０１からＳ７０３の処理と同一の処理のため説明を省略する。
【００７６】
以上の手段により、通信処理に時間がかかってしまう場合においても、非同期通信処理を行うことで印刷処理への影響を最低限に抑えつつ、プリンターと双方向通信を行うことができ正しい出力結果を得ることができる。また、本実施形態ではレイアウトフィルタ３１４の処理において、デバイス情報が必要ない場合について記載したが、レイアウトフィルタ３１４においてデバイス情報が必要な場合では、本実施形態でのレンダラフィルタ３１５と同様の処理をレイアウトフィルタ３１４で行ってもよい。
【図１】
2018116734.tif 000003
【図２】
2018116734.tif 000004
【図３】
2018116734.tif 000005
【図４】
2018116734.tif 000006
【図５】
2018116734.tif 000007
【図６】
2018116734.tif 000008
【図７】
2018116734.tif 000009
【図８】
2018116734.tif 000010
【図９】
2018116734.tif 000011
【手続補正書】
【提出日】平成30年4月26日(2018.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プリンタードライバーに含まれる１以上のフィルタを用いてデータを処理する情報処理装置であって、
前記１以上のフィルタは、
デバイス情報が第１のプロトコルを用いた双方向通信で取得可能である場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンタードライバーに関連するプリンターから取得し、前記デバイス情報が前記第１のプロトコルを用いた双方向通信で取得可能でない場合は、前記第１のプロトコルとは異なる第２のプロトコルを用いて前記情報処理装置と前記プリンターとが通信を行うポートのポート種別を取得し、当該取得したポート種別に基づくポート経由で前記第２のプロトコルを用いた双方向通信を実行して前記デバイス情報を前記プリンターから取得する取得手段と、
前記取得手段が取得した前記デバイス情報を少なくとも用いて印刷処理を行う処理手段と、
して機能することを特徴とする情報処理装置。
【請求項２】
印刷指示を受け付けたことに従って、印刷に使用するコンテンツデータを前記１以上のフィルタに入力する入力手段を更に備え、
前記処理手段は、前記取得手段が取得した前記デバイス情報と、前記入力手段で入力された印刷すべきコンテンツのデータとを用いて、印刷データを生成する印刷処理を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記１以上のフィルタには、前記取得手段として機能する第１のフィルタと、前記処理手段として機能する第２のフィルタが少なくとも含まれており、
前記第２のフィルタは前記第１のフィルタに後続するフィルタとして機能することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１のフィルタは取得した前記デバイス情報を前記１以上のフィルタがアクセス可能なデータ保存領域に保存することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１のプロトコルを用いた前記双方向通信とはＢｉｄｉプリンター通信を用いた通信であることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
１以上のフィルタを含むプリンタードライバーを実行可能なコンピュータにおいて実行されるプログラムであって、
前記コンピュータに、前記１以上のフィルタを実行させ、
前記１以上のフィルタは、
デバイス情報が第１のプロトコルを用いた双方向通信で取得可能である場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンタードライバーに関連するプリンターから取得し、前記デバイス情報が前記第１のプロトコルを用いた双方向通信で取得可能でない場合は、前記第１のプロトコルとは異なる第２のプロトコルを用いて前記コンピュータと前記プリンターとが通信を行うポートのポート種別を取得し、当該取得したポート種別に基づくポート経由で前記第２のプロトコルを用いた双方向通信を実行し、前記デバイス情報を前記プリンターから取得する取得手段と、
前記取得手段が取得した前記デバイス情報を少なくとも用いて印刷処理を行う処理手段と、して機能することを特徴とするプログラム。
【請求項７】
前記コンピュータ上で動作するアプリケーションのコンテンツを印刷する印刷指示を受け付けたことに従って、印刷するコンテンツデータが前記１以上のフィルタに入力され、
前記処理手段は、前記取得手段が取得した前記デバイス情報と、前記入力された印刷すべきコンテンツのデータとを用いて、印刷データを生成する印刷処理を行うことを特徴とする請求項６に記載のプログラム。
【請求項８】
前記１以上のフィルタには、前記取得手段として機能する第１のフィルタと、前記処理手段として機能する第２のフィルタが少なくとも含まれており、
前記第２のフィルタは前記第１のフィルタに後続するフィルタとして機能することを特徴とする請求項６又は７に記載のプログラム。
【請求項９】
前記第１のフィルタは取得した前記デバイス情報を前記第２のフィルタがアクセス可能なデータ保存領域に保存することを特徴とする請求項８に記載のプログラム。
【請求項１０】
前記第１のプロトコルを用いた前記双方向通信とはＢｉｄｉプリンター通信を用いた通信であることを特徴とする請求項６乃至９のいずれか１項に記載のプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上記の目的を達成するための本発明に係る情報処理装置は、プリンタードライバーに含まれる１以上のフィルタを用いてデータを処理する情報処理装置であって、前記１以上のフィルタは、デバイス情報が第１のプロトコルを用いた双方向通信で取得可能である場合は、第１のプロトコルを用いた双方向通信により前記デバイス情報を前記プリンタードライバーに関連するプリンターから取得し、前記デバイス情報が前記第１のプロトコルを用いた双方向通信で取得可能でない場合は、前記第１のプロトコルとは異なる第２のプロトコルを用いて前記情報処理装置と前記プリンターとが通信を行うポートのポート種別を取得し、当該取得したポート種別に基づくポート経由で前記第２のプロトコルを用いた双方向通信を実行して前記デバイス情報を前記プリンターから取得する取得手段と、前記取得手段が取得した前記デバイス情報を少なくとも用いて印刷処理を行う処理手段と、して機能することを特徴とする。