(57)【要約】【課題】  通常よりも印刷データの生成に時間がかかる印刷設定が選択されていた場合には、印刷データの送信を行うポートでタイムアウトが発生し得るという課題が存在していた。【解決手段】  印刷制御装置は、印刷データの送信を行うポートにおいてタイムアウトが発生し得る印刷設定であると判断した場合に、印刷装置での印刷結果に影響を与えないデータを、定期的に送信する。【選択図】  図４
2013232133.tif 000002
【特許請求の範囲】
【請求項１】
印刷装置で印刷を行なうための印刷データを作成し、該作成した印刷データを印刷装置に送信する印刷制御方法において、
前記印刷装置との間の通信を行うポートでタイムアウトが発生し得るか否かを判断する判断工程と、
前記判断工程でタイムアウトが発生し得ると判断した時は、前記印刷装置での印刷結果に影響しないデータを、印刷に影響しない範囲で定期的に送信するデータ送信工程とを備えることを特徴とする印刷制御方法。
【請求項２】
前記データ送信工程は印刷データの生成とは別スレッドで行うことを特徴とする請求項１に記載の印刷制御方法。
【請求項３】
印刷装置で印刷を行なうための印刷データを作成し、該作成した印刷データを印刷装置に送信する印刷制御装置において、
前記印刷装置との間の通信を行うポートでタイムアウトが発生し得るか否かを判断する判断手段と、
前記判断手段でタイムアウトが発生し得ると判断した時は、前記印刷装置での印刷結果に影響しないデータを、印刷に影響しない範囲で定期的に送信するデータ送信手段とを備えることを特徴とする印刷制御装置。
【請求項４】
印刷装置で印刷を行なうための印刷データを作成し、該作成した印刷データを印刷装置に送信する印刷制御プログラムにおいて、
前記印刷装置との間の通信を行うポートでタイムアウトが発生し得るか否かを判断する判断手順と、
前記判断手段でタイムアウトが発生し得ると判断した時は、前記印刷装置での印刷結果に影響しないデータを、印刷に影響しない範囲で定期的に送信するデータ送信手順とをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御方法に関し、さらに詳しくは印刷データ生成時のタイムアウト制御方法に関する。
【背景技術】
【０００２】
一般に、アプリケーションで作成した画像データを、印刷装置で出力する場合、ホストコンピュータに搭載されたプリンタドライバが画像データを変換し、印刷装置が解析可能な印刷データを生成する。この時、プリンタドライバでは、入力された画像データをラスタライズしてビットマップ画像を作成し、必要な画像処理を施した後に、印刷データに変換して印刷装置に対してデータを送信する。
【０００３】
このようなプリンタドライバでの印刷データ生成処理は、通常、バンドと呼ばれる１ページを短冊状に複数の領域に区切った処理単位で行われる。これにより、プリンタドライバでの処理に必要なメモリの量が削減され、また、印刷装置は受信したバンドの印刷データから印刷を開始することが可能となる。
【０００４】
しかし、ホストコンピュータの演算処理速度が遅い場合や、複雑な画像処理を必要とするデータを印刷する場合には、印刷データの生成に長い時間を要し、印刷装置の印刷速度に対してデータの送信が間に合わなくなる場合がある。そのため、次のバンドのデータを受信するまでの間プリントヘッドが停止してしまい、バンドの境目にムラやスジが発生することがある。
【０００５】
これらムラやスジを防止するため、プリンタドライバで、1ページ分の印刷データ生成処理が全て完了してから、印刷装置に対して印刷データを送信するという方法が開示されている(特許文献１参照)。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４７１７７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
バンド単位に比べ、ページ単位での印刷データ生成処理には時間がかかるため、プリンタドライバからの印刷データ送信間隔もバンド単位での処理に比べて長くなる。一方、ホストコンピュータと印刷装置間のデータの送受信は、通信ポートを介して行われる。これらの通信ポートには一般的にタイムアウトが設定されており、一定時間データの送受信が行われなかった場合には、処理エラーが発生したとみなし、通信処理を終了させる等の処置がなされる。
【０００８】
従来、バンド単位の印刷データを送信していた通信ポートで、ページ単位の印刷データを送信する場合、データ送信の間隔が長くなるために、前述した通信ポートのタイムアウトが発生してしまうという問題があった。このため、実際には正常に印刷データを生成しているにも関わらず、印刷されずに印刷処理が終了してしまうことがあった。特に、印刷装置との通信が、印刷装置へのデータ出力処理のみで構成されている場合には、印刷装置からのデータ入力処理によりタイムアウトを防ぐことができないため、タイムアウトの発生頻度は上がる。
【０００９】
本発明は、以上の点を鑑みてなされたものであり、印刷データの生成に時間がかかる場合に、通信ポートでのタイムアウトの発生を防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
上述のような課題を解決するための本発明の印刷制御方法は、
印刷装置で印刷を行なうための印刷データを作成し、該作成した印刷データを印刷装置に送信する印刷制御装置において、
前記印刷装置との間の通信を行う通信ポートでタイムアウトが発生し得るか否かを判断する判断工程と、
前記判断工程でタイムアウトが発生し得ると判断した時は、前記印刷装置での印刷結果に影響しないデータを、印刷に影響しない範囲で定期的に送信するデータ送信工程とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、印刷データの生成に時間がかかる場合でも、通信ポートでのタイムアウトの発生を防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明を適用できる印刷システムのハードウェア構成を示すブロック図である。
【図２】本発明を適用できる印刷システムのソフトウェア構成を示すブロック図である。
【図３】印刷設定情報を設定するユーザーインターフェースの一例を示す図である。
【図４】実施形態１におけるレンダーフィルター２２３の処理フローを示す図である。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１４】
＜実施形態１＞
（ハードウェア構成）
図１は本発明を適用できる印刷システムのハードウェア構成を示すブロック図である。本図において、ホストコンピュータ１は、情報処理装置の一例であり、入力インタフェース１０、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、外部記憶装置１４、出力インタフェース１５、及び入出力インタフェース１６を有する。また、入力インタフェース１０には、キーボード１８、マウス１７などの入力デバイスが接続され、出力インタフェース１９には、表示部１９などの表示デバイスが接続されている。
【００１５】
ＲＯＭ１２には、初期化プログラムが格納され、外部記憶装置１４には、アプリケーションプログラム群、ＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）、プリンタドライバ２２０、その他の各種のデータが格納されている。例えば、ＲＡＭ１３は、外部記憶装置１４にストアされる各種のプログラムによりワークメモリとして使用される。なお、本実施形態では、ＣＰＵ１１が、ＲＯＭ１２に格納されたプログラムの手順に従って処理を行うことによって、ホストコンピュータ１における後述の機能及び後述するフローチャートに係る処理が実現される。印刷装置２は入出力インタフェース１６を介して、ホストコンピュータ１と接続されている。ここではホストコンピュータ１と印刷装置２が分かれて構成されているが、これらが一つの情報処理装置として構成されていても良い。
【００１６】
（機能構成）
図２は、ホストコンピュータ１の機能構成の一例を示す図である。図２では、主に、ホストコンピュータ１にインストールされるプリンタドライバ２２０の機能について説明する。以下では、ホストコンピュータ１のＯＳとしてＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）を用いた場合を例に挙げて本印刷システムを説明する。また、印刷ジョブ２１４として、Ｍｉｃｒｏｓｏｆｔ社が開発したオープン規格の電子文書フォーマットの１つであるＸＰＳ（ＸＭＬ Ｐａｐｅｒ Ｓｐｅｃｉｆｉｃａｔｉｏｎ）を用いて説明する。また、以下、ＸＰＳを印刷ジョブ２１４として利用するドライバをＸＰＳＤｒｖと呼ぶ。
【００１７】
アプリケーション２０１には、画像処理、ワードプロセッサ、ウェブブラウザなどのソフトウェアが含まれる。アプリケーション２０１はユーザの入力に従い、文字などのテキストデータ、図形などのグラフィクスデータ、写真などの画像データからなる描画データを編集、加工する。そして、ユーザの入力に従い、編集、加工した描画データの印刷をＯＳに要求する。その際、アプリケーション２０１は、テキストデータはテキスト描画命令で、グラフィクスデータはグラフィクス描画命令で、画像データはイメージ描画命令で構成された描画命令群をＯＳに発行する。ＯＳはアプリケーション２０１から発行される各種描画命令をＯＳの印刷サポート機能２１１を介してＸＰＳデータに変換する。変換後のＸＰＳデータはスプーラ２１２のプリントキュー２１３に一時的に蓄えられ、印刷ジョブ２１４としてスプーラ２１２により管理される。印刷ジョブ２１４は、プリンタドライバ２２０によって印刷装置２が解析可能な印刷データに変換された後に、印刷装置２に供給され、印刷装置２で印刷が行われるよう構成されている。
【００１８】
アプリケーション２０１は、ユーザによる入力デバイスの操作に基づいて印刷を開始する指示を行う際、ＯＳの印刷サポート機能２１１を介して、ユーザーインターフェースモジュール２２１から返却された印刷設定情報を印刷ジョブ２１４に付加する。印刷設定情報には、例えば、用紙サイズや用紙の種類、画像処理パラメータ等が含まれる。また、本実施例では、ユーザーインターフェースモジュールが図３の３０１に示すようにドライバが生成した印刷データを、バンド単位ではなく、ページ単位で送信するかどうかの設定を印刷設定情報の一つとしてもつ。もちろん、この設定は別の場所に保存されていてもよいし、その他の印刷設定から動的に判断されてもよい。例えば、用紙サイズが「Ａ３」で、用紙の種類が「写真紙」の場合には、ドライバの処理に時間がかかり、ムラが発生しやすいため、ページ単位で印刷データを送信するといった判断が考えられる。なお、印刷設定情報は、アプリケーション２０１からの印刷を開始する指示を行う前に予め設定されている。
【００１９】
プリンタドライバ２２０に渡された印刷ジョブ２１４は、先ずレイアウトフィルター２２２によって処理される。ここでフィルターとは、入力されたデータをもとに、加工、変換、無変換、生成等の工程を介して、何らかのデータを出力する機能を有するプログラム（モジュール）のことである。各フィルターは印刷ジョブ２１４のデスプール時に不図示のＯＳのフィルター管理機能から呼び出され、初期化が行なわれる。レイアウトフィルター２２２は、印刷設定情報に従って印刷ジョブ２１４のページを並べ替えたり複数のページを１つのページにまとめたりするページ構成処理を印刷ジョブ２１４に対して行う。
【００２０】
レンダーフィルター２２３は、印刷ジョブをラスタライズし、プリンタコマンドを付加して、印刷装置２に対して送信する。プリンタコマンドとは、印刷装置２に送信する印刷データのうち、実際に印刷されるイメージデータ以外の部分であり、事前に決められたタイミングで送信することで、印刷装置２での印刷を制御するために用いられる。例えば、複数ページからなる印刷ジョブを印刷する場合、レンダーフィルター２２３は初めにジョブの開始を指示するコマンド（ＳｔａｒｔＪｏｂコマンド）、最後にジョブの終了を指示するコマンド（ＥｎｄＪｏｂコマンド）を送信する。また、レンダーフィルター２２３はページの先頭でページの開始を指示するコマンド（ＳｔａｒｔＰａｇｅコマンド）、ページの最後にページの終了を指示するコマンド（ＥｎｄＰａｇｅコマンド）を送信する。さらに、レンダーフィルター２２３は連続するページで、同じ印刷設定で印刷されるページの先頭と最後に印刷設定の更新を指示するコマンド（ＳｔａｒｔＤｏｃコマンド、ＥｎｄＤｏｃコマンド）を送信する。
【００２１】
レンダーフィルター２２３は、ＳｔａｒｔＰａｇｅコマンドの送信後、印刷ジョブ２１４のラスタライズを行う。印刷ジョブ２１４のラスタライズは、不図示のレンダリングエンジンが、印刷ジョブ２１４の各描画命令を解釈することにより、行われる。ラスタライズされたラスタイメージは色を多段階の値として保持する多値データであり、これを元に画像処理を行う。レンダーフィルター２２３は画像処理として、印刷設定情報に含まれる画像処理パラメータに応じた色相やコントラスト、濃度の調整を行う。その後レンダーフィルター２２３は画像処理後のデータを元に、印刷装置２の保持するインク毎の色成分に分解したハーフトーンデータ（イメージデータ）に変換する。これらのラスタイメージ、及びイメージデータを、ページ全体分一度に処理をしようとすると、非常に大きなメモリが必要になる。よって、通常、レンダーフィルター２２３は、ページ単位ではなくバンド単位での処理を行なう。このように、印刷ジョブを元に印刷装置２が解釈可能なイメージデータを生成する処理を、以下、イメージデータ生成処理と呼ぶ。
【００２２】
レンダーフィルター２２３はプリントコマンドとイメージデータを、順次印刷装置２に向けて送信する。バンド単位でイメージデータ生成処理を行っている場合には、先頭のバンドに対するレンダーフィルター２２３の処理が完了すれば、そのデータが印刷装置２に送られ、印刷装置２は印刷を開始することができる。なお、レンダーフィルター２２３は、ＯＳのＡＰＩを用いて印刷データを印刷装置２に送信するが、この時、送信した印刷データは一旦外部ファイルに保存される。そして、実際に印刷装置２に送信する処理は、ＯＳのスプーラープロセスで実行される。すなわち、レンダーフィルター２２３から印刷データの送信を行った時点では、印刷装置２への印刷データの到達は保障されない。そのため、レンダーフィルター２２３が意図したタイミングで印刷データを印刷装置２に到達させるためには、スプーラープロセスに対して、印刷装置２へのデータ送信を支持する処理（以下、Ｆｌｕｓｈ処理と呼ぶ）が必要となる。
【００２３】
レンダーフィルター２２３から印刷装置２への印刷データの送信はポートモニタ２３１を介して行われる。ポートモニタ２３１から印刷開始要求があると、印刷装置２はポートを作成するが、一定時間ポートにアクセスがなかった場合にはこのポートをクローズする。これにより、印刷装置２は、印刷の途中でなんらかのエラーが発生した場合に、１つの印刷ジョブに長時間占有されることを防ぐ。
【００２４】
（レンダーフィルター２２３の処理フロー）
図４は本発明を適用できる印刷システムにおけるレンダーフィルター２２３の処理フローである。
【００２５】
初めにレンダーフィルター２２３はＳｔａｒｔＪｏｂコマンド、ＳｔａｒｔＤｏｃコマンド、ＳｔａｒｔＰａｇｅコマンドの順にプリントコマンドを送信する（Ｓ４０１、Ｓ４０２、Ｓ４０３）。
【００２６】
次にレンダーフィルター２２３はイメージデータの送信単位がページ単位かバンド単位かを、印刷設定情報を参照し、判断する（Ｓ４０４）。
【００２７】
バンド単位で送信する場合、レンダーフィルター２２３はバンド単位でイメージデータの生成と送信を行い（Ｓ４１０）、１ページ分のイメージデータの送信が完了するまで繰り返す。
【００２８】
ページ単位で送信する場合、レンダーフィルター２２３はバンド単位で生成したイメージデータを一旦外部ファイルに保存する（Ｓ４０５）。この時レンダーフィルター２２３は、印刷装置２に対して、ＮＵＬデータの送信（Ｓ４０６）し、Ｆｌｕｓｈ処理（Ｓ４０７）を行う。ＮＵＬデータは印刷装置２が受信後に読み飛ばすデータであり、送信するデータはＮＵＬデータに限らない。１ページ分のイメージデータを外部ファイルに保存完了後、レンダーフィルター２２３はＳ４０５で保存した外部ファイルを参照し、１ページ分のイメージデータを印刷装置２に対して送信する（Ｓ４０９）。
【００２９】
レンダーフィルター２２３はＥｎｄＰａｇｅコマンドを送信し（Ｓ４１２）、次ページがあり、印刷設定が変更されない限り、Ｓ４０３からＳ４１２を繰り返す。次ページがあり、印刷設定が変更される場合、レンダーフィルター２２３は、ＥｎｄＤｏｃコマンドを送信し（Ｓ４１５）、次ページがなくなるまでＳ４０２からＳ４１５を繰り返す。次ページがなくなればレンダーフィルター２２３はＥｎｄＪｏｂコマンドを送信する（Ｓ４１７）。レンダーフィルター２２３は、バンド単位でＮＵＬデータを送ることで、ポートに対して定期的な書き込みを行い、ポートのタイムアウトを防止する。
【００３０】
＜実施形態２＞
次に本発明を適用できる第２の実施形態について説明する。第２の実施形態は、１バンドのイメージデータ作成中にポートのタイムアウトが発生する場合に効果がある。第２の実施形態は第１の実施形態に対して図４で示した、レンダーフィルター２２３のフローの一部が異なるのみであり、その他の構成や処理は第１の実施形態と同等である。
【００３１】
本実施形態では、レンダーフィルター２２３がポートのタイムアウトが発生しないタイミングで一定間隔にＮＵＬデータを印刷装置２に対して送信する。これにより、１バンドのイメージデータ作成に時間がかかる場合においても、ポートのタイムアウトを防ぐことが可能である。ＮＵＬデータの送信間隔の決定方法としては、事前に十分短い間隔に設定しておく方法や、接続するポートに応じて動的に変更する方法等が考えられる。
【００３２】
本実施形態におけるレンダーフィルター２２３の処理は図４において、ＮＵＬデータの送信（Ｓ４０６）とＦｌｕｓｈ処理（Ｓ４０７）を別スレッドで行う構成となる。レンダーフィルター２２３では、イメージデータをページ単位で送信すると判断した場合に、ＮＵＬデータの送信を行う別スレッド（以下、ＮＵＬデータ送信用スレッドと呼ぶ）を起動する。ＮＵＬデータ送信用スレッドでは、１ページ分のイメージデータを生成している間、ポートのタイムアウトが発生しないタイミングでＮＵＬデータの送信とＦｌｕｓｈ処理を繰り返し行う。ＮＵＬデータ送信用スレッドは１ページ分のイメージデータを外部ファイルに保存し終えた時点で削除する。また、ＮＵＬデータ送信用スレッドは、レンダーフィルター２２３の処理中に継続してＮＵＬデータを送信するものでもよい。この場合、ＮＵＬデータの送信により、印刷データの整合性が狂わないようにデータの送信タイミングについて排他処理が必要となる。例えば、プリントコマンドの送信途中でＮＵＬデータが送信されると、印刷装置２が正しくプリントコマンドを解釈できないため、ＮＵＬデータの送信はプリントコマンドの送信後でなくてはならない。
【００３３】
＜実施形態３＞
本発明の目的は前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００３４】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００３５】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOperating System（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００３６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【００３７】
１    ホストコンピュータ
２    印刷装置
２０１  アプリケーション
２２２  レイアウトフィルター
２２３  レンダーフィルター
【図１】
2013232133.tif 000003
【図２】
2013232133.tif 000004
【図３】
2013232133.tif 000005
【図４】
2013232133.tif 000006