(57)【要約】【課題】プリンタコマンド生成プログラムの置き換えを行うことができるようにする。【解決手段】修正プリンタコマンド生成プログラムを専用のディレクトリに格納し、バージョン番号によってそれらを選択的にリンクして実行できるような手段を提供することで、必要最小限のプログラム提供によって、プリンタコマンド生成プログラムの入れ替えを可能とする。【選択図】図１
2007280148.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムから出力される印刷データを変換してプリンタに対してプリンタコマンドを出力する印刷装置であって、
特定のディレクトリ中の修正プリンタコマンド生成プログラムの有無を判定する判定手段と、
レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号を取得する第１の番号取得手段と、
前記修正プリンタコマンド生成プログラムを実行メモリにロードし、前記レンダラプログラムと動的にリンクする動的リンク手段と、
前記修正プリンタコマンド生成プログラムのバージョン番号を取得する第２の番号取得手段と、
前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号と、前記修正プリンタコマンド生成プログラムのバージョン番号とを比較する比較手段とを有し、
前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号の方が前記修正プリンタコマンド生成プログラムのバージョン番号よりも新しい番号であれば、前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムを使用して前記プリンタコマンドの生成を行い、前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号の方が前記修正プリンタコマンド生成プログラムのバージョン番号よりも古い番号であれば、前記修正プリンタコマンド生成プログラムを使用して前記プリンタコマンドの生成を行い、前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号と前記修正プリンタコマンド生成プログラムのバージョン番号とが等しい番号であれば、前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムまたは前記修正プリンタコマンド生成プログラムの何れか一方を使用して前記プリンタコマンドの生成を行うことを特徴とする印刷装置。
【請求項２】
前記修正プリンタコマンド生成プログラムが、前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムの機能の一部を置き換えることを特徴とする請求項１に記載の印刷装置。
【請求項３】
前記アプリケーションプログラムから出力される印刷データを変換してプリンタに対してプリンタコマンドを出力する印刷方法であって、
修正プリンタコマンド生成プログラムの有無を判定する判定工程と、
前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号を取得する第１の番号取得工程と、
前記修正プリンタコマンド生成プログラムを実行メモリにロードし、前記レンダラプログラムと動的にリンクする動的リンク工程と、
前記修正プリンタコマンド生成プログラムのバージョン番号を取得する第２の番号取得工程と、
前記プリンタコマンド生成プログラムのバージョン番号と前記修正プリンタコマンド生成プログラムのバージョン番号とを比較する比較工程と、
前記比較工程における比較結果に基づいて前記プリンタコマンドを生成するプリンタコマンド生成工程とを有することを特徴とする印刷方法。
【請求項４】
前記請求項３に記載の方法の各工程をコンピュータにて実施させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷装置、印刷方法及びコンピュータプログラムに関し、例えば、プリンタコマンド生成プログラムの置き換えに用いて好適な技術に関する。
【背景技術】
【０００２】
従来、Ｕｎｉｘ（登録商標）系のＯＳ上で動作するアプリケーションプログラムから印刷する場合、アプリケーションプログラムは先ず印刷データを生成する。そして、それをＯＳが用意しているスプーリング・システムに印刷要求として投入して、その後はスプーリング・システムによって処理がなされるのが通常である。
【０００３】
図２を用いてそれを説明する。アプリケーションプログラム２０１が生成した印刷データは、スプーリング・システム２０２に対して印刷要求として渡される。スプーリング・システム２０２は、印刷要求として投入された印刷データを、プリンタを制御するためのプリンタコマンドに変換するために、レンダラプログラム２０３を起動する。レンダラプログラム２０３は通常、印刷データを読み込んで解析する印刷データ解析プログラム２０４と、解析した結果をプリンタコマンドに変換するプリンタコマンド生成プログラム２０５とから構成されている。
【０００４】
印刷データ解析プログラム２０４は、受け取った印刷データを順次解析しそれらをプリンタコマンドに変換するために、プリンタコマンド生成プログラムが用意する直線描画や矩形描画、矩形塗り、多角形塗り、画像描画など様々な描画ＡＰＩを適宜呼び出す。プリンタコマンド生成プログラム２０５には、描画ＡＰＩの各々に対応した直線描画や矩形描画、矩形塗り、多角形塗り、画像描画用の個別プリンタコマンド生成プログラム２０６が用意されている。そして、印刷データ解析プログラム２０４によって順次呼び出されたＡＰＩに対応する個別プリンタコマンド生成プログラム２０６が実行されることによってプリンタコマンドが順次生成され、生成されたプリンタコマンドがプリンタに対して出力される。
【０００５】
このような、印刷データ解析プログラム２０４とプリンタコマンド生成プログラム２０５およびプリンタコマンドに含まれる個別プリンタコマンド生成プログラム２０６は、一体のレンダラプログラム２０３として提供されるのが一般的であった。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、プリンタコマンド生成プログラム２０５はプリンタの種類や機種毎に用意しなければならない。このことから、印刷データ解析プログラム２０４とプリンタコマンド生成プログラム２０５が一体となっている構成の場合、多くのプリンタの種類や機種に対応するレンダラプログラム２０３を用意しようとすると、レンダラプログラム全体のサイズが肥大する。そして、結果として唯一つのプリンタを使用するためのプログラムを配布する場合でも、配布用のメディアを多く消費したり、ユーザがレンダラプログラムをサーバからダウンロードするために要する時間が長くなったりしてしまう問題点があった。
【０００７】
また、近年では図３のように、レンダラプログラム３０３とプリンタコマンド生成プログラム３０５とを別々に構成し、印刷データ解析プログラム３０４のみがレンダラプログラム３０３に含まれる方式もとられるようになってきた。この場合、レンダラプログラム３０３がその実行時にプリンタコマンド生成プログラム３０５をメモリにロードし、動的にリンクする。その後、レンダラプログラム３０３に含まれる印刷データ解析プログラム３０４が、受け取った印刷データを順次解析しそれらをプリンタコマンドに変換するために、プリンタコマンド生成プログラム３０５が用意する直線描画や矩形描画、矩形塗り、多角形塗り、画像描画など様々な描画ＡＰＩを適宜呼び出す。
【０００８】
プリンタコマンド生成プログラム３０５には、描画ＡＰＩの各々に対応した直線描画や矩形描画、矩形塗り、多角形塗り、画像描画用の個別プリンタコマンド生成プログラム３０６が用意されている。そして、印刷データ解析プログラム３０４によって順次呼び出されたＡＰＩに対応する個別プリンタコマンド生成プログラム３０６が実行されることによってプリンタコマンドが順次生成され、生成されたプリンタコマンドがプリンタに対して出力される。
【０００９】
このような構成では、ユーザはレンダラプログラム３０３とプリンタコマンド生成プログラム３０５を別々に、配布用のメディアもしくはサーバからダウンロードしてインストールする。これによって、配布用のメディアの消費を少なくすることが可能となった。また、一旦レンダラプログラム３０３とプリンタコマンド生成プログラム３０５をサーバからダウンロードしてインストールした後、別の機種用のプリンタコマンド生成プログラム３０５のみをサーバからダウンロードしてインストールする。これによって、ダウンロード時間を短縮することが可能となった。
【００１０】
しかし、一方で、ユーザは先ずレンダラプログラム３０３とプリンタコマンド生成プログラム３０５とを別々にインストールせねばならない。どちらか一方のインストールの方法を間違えたりインストールを忘れたりすると、アプリケーション３０１が生成した印刷データがスプーリング・システム３０２に印刷要求として渡されても印刷データ解析プログラム３０４を含むレンダラプログラム３０３が無い。このため印刷データを解析できなかったり、プリンタコマンド生成プログラム３０５が無いためにプリンタを制御するためのプリンタコマンドを生成することができず、結果として印刷できなかったりすることになり、ユーザビリティの視点から問題が生じていた。
【００１１】
また、プリンタコマンド生成プログラム３０５に不具合があった場合に、本構成ではＮ個全ての個別プリンタコマンド生成プログラム３０６を含んだプリンタコマンド生成プログラム３０５全体を入れ替えなければならない。このため、プリンタコマンド生成プログラムのサイズが大きい場合に問題となっていた。
【００１２】
さらに、プログラム開発の観点からは、プリンタコマンド生成プログラム３０５のデバグ作業において効率的なデバグを可能とするためには、プリンタの動作を一部変更して動作を確認する際に、レンダラプログラム３０３全体をコンパイルしたりリンクし直したりすることなく、プリンタコマンド生成プログラム３０５の中の一部の個別プリンタコマンド生成プログラム３０６を入れ替えたり、入れ替えた機能を元に戻したりする方法が求められていた。
【００１３】
本発明は前述の問題点に鑑み、プリンタコマンド生成プログラムの置き換えを行うことができるようにすることを目的としている。
【課題を解決するための手段】
【００１４】
そこで本発明では、前記アプリケーションプログラムから出力される印刷データを変換してプリンタに対してプリンタコマンドを出力する印刷方法であって、修正プリンタコマンド生成プログラムの有無を判定する判定工程と、前記レンダラプログラムと共に提供されるプリンタコマンド生成プログラムのバージョン番号を取得する第１の番号取得工程と、前記修正プリンタコマンド生成プログラムを実行メモリにロードし、前記レンダラプログラムと動的にリンクする動的リンク工程と、前記修正プリンタコマンド生成プログラムのバージョン番号を取得する第２の番号取得工程と、前記プリンタコマンド生成プログラムのバージョン番号と前記修正プリンタコマンド生成プログラムのバージョン番号とを比較する比較工程と、前記比較工程における比較結果に基づいて前記プリンタコマンドを生成するプリンタコマンド生成工程とを有することを特徴とする印刷方法等、を提供する。
【発明の効果】
【００１５】
本発明によれば、レンダラプログラムと一体となったプリンタコマンド生成プログラムの配布が可能となると同時に、当該プリンタコマンド生成プログラムの機能の全部または一部の修正プリンタコマンド生成プログラムによる置き換えが可能となる。また、必要最小限の修正を行う修正プリンタコマンド生成プログラムを提供することによって、置き換えの必要がないプログラムが配布用のメディアを消費したり余計なダウンロード時間を要したりすることなく、効率的なプリンタコマンド生成プログラムの置き換えが可能となる。さらに、レンダラプログラム全体をコンパイルしたりリンクし直したりすることなく、プリンタコマンド生成プログラムの機能の全部または一部の置き換えを可能とし、プログラム開発の観点からも、効率的なプログラムのデバグが可能となる。
【発明を実施するための最良の形態】
【００１６】
（第１の実施形態）
以下、図面に基づいて、本発明の実施形態を詳細に、かつ具体的に説明する。
図１は、本実施形態のプログラムの構成例を示すブロック図である。
１０１はアプリケーションプログラムであり、１０２はスプーリング・システムである。また、１０３はレンダラプログラムであり、１０４はレンダラプログラム１０３に含まれる印刷データ解析プログラムである。
【００１７】
１０５はプリンタコマンド生成プログラムであり、１０６はプリンタコマンド生成プログラムに含まれる個別プリンタコマンド生成プログラムである。また、１０７は修正プリンタコマンド生成プログラムであり、１０８は修正プリンタコマンド生成プログラムに含まれる個別プリンタコマンド生成プログラムである。
【００１８】
さらに、１１０は印刷データ解析プログラムに含まれる関数テーブルである。関数テーブル１１０は、プリンタコマンド生成プログラム１０５に含まれる個別プリンタコマンド生成プログラム１０６の各々のＡＳＣＩＩ文字列による関数名と先頭アドレスを格納するテーブルである。また、関数テーブル１１０の要素数は、個別プリンタコマンド生成プログラム１０６の数分だけ予め用意するものとする。なお、関数テーブル１１０の関数名を格納する領域は、個別プリンタコマンド生成プログラム１０６の関数名を格納するのに十分な長さの固定バイト数の領域とする。そして、その領域にＡＳＣＩＩコードおよび０で終端された文字列を格納するものとする。
【００１９】
図６は、本実施形態におけるコンピュータシステム構成例を示すブロック図である。
ＣＰＵ６０１は制御を司る中央処理装置である。ＲＡＭ６０２はプログラムをロードして動作させると共にデータを一時的に格納しておくメモリである。外部記憶装置６０３は、ハードディスク等の外部記憶装置によって構成され、プログラムを格納する。Ｉ／Ｏ６０４は、プリンタと接続するためのＵＳＢ等の物理インタフェースである。
【００２０】
図４−１、図４−２及び図４−３は、本実施形態における印刷装置の処理手順を示すフローチャートである。図１及び図４−１〜図４−３に示すフローチャートを参照しながら、本装置の動作を以下に説明する。
【００２１】
まず、図１のアプリケーションプログラム１０１が印刷データを生成し、それをスプーリング・システム１０２に対して印刷要求として投入するによって、印刷処理が開始される。当該印刷処理の開始が、図４−１のフローチャートの印刷開始に相当する。
【００２２】
印刷処理が開始されると、ステップＳ４０１ではスプーリング・システム１０２がレンダラプログラム１０３をメモリ上にロードして起動する。レンダラプログラム１０３とスプーリング・システム１０２はＯＳ上における別の実行単位、即ち別のプロセスとして実行され、スプーリング・システム１０２からレンダラプログラム１０３への印刷データの受け渡しは、ＯＳに備わるパイプの機能を用いて行う。
【００２３】
レンダラプログラム１０３は起動されると、ステップＳ４０２において、プリンタコマンド生成プログラム１０５をメモリ上にロードしてリンクする。この時、レンダラプログラム１０３とプリンタコマンド生成プログラム１０５はＯＳ上における同じ実行単位、即ち同一プロセスとして実行される。
【００２４】
次に、ステップＳ４０３において、レンダラプログラム１０３はリンクしたプリンタコマンド生成プログラム１０５のデータ領域に記録されているバージョン番号を取得してそれをレジスタＲ１にセットする。
【００２５】
次に、ステップＳ４０４において、レンダラプログラム１０３がプリンタコマンド生成プログラム１０５に含まれる各々の個別プリンタコマンド生成プログラム１０６の関数名と先頭アドレスを、関数テーブル１１０にセットする。この時点で、関数テーブル１１０の全ての要素には、プリンタコマンド生成プログラム１０５に含まれる何れかの個別プリンタコマンド生成プログラム１０６の関数名および先頭アドレスがセットされることになる。
【００２６】
次に、ステップＳ４０５において、修正プリンタコマンド生成プログラム１０７の有無をチェックする。修正プリンタコマンド生成プログラム１０７は、予めハードディスクのような外部記憶装置６０３の専用のディレクトリに予め記録されているものとする。そして、修正プリンタコマンド生成プログラム１０７の有無のチェックは、外部記憶装置６０３の専用のディレクトリに、プログラムが存在するか否かによって行う。
【００２７】
このチェックの結果、前記ディレクトリにプログラムが存在しない場合は、修正プリンタコマンド生成プログラムが一切用意されていないものと判断し、図４−３におけるステップＳ４２０に進む。一方、ステップＳ４０５のチェックの結果、前記ディレクトリにプログラムが存在する場合は、ステップＳ４１１に進む。前記ディレクトリにプログラムが存在する場合についての詳細な説明は後述する。
【００２８】
ステップＳ４２０では、レンダラプログラム１０３がＯＳが用意するパイプ経由でスプーリング・システム１０２から印刷データを順次読み込んでレンダラプログラム１０３のバッファに格納し、そのデータを印刷データ解析プログラム１０４に渡す。それと並行して、レンダラプログラム１０３とは別のプロセスであるスプーリング・システム１０２は、順次印刷データをパイプに書き込むが、全ての印刷データをパイプ経由でレンダラプログラム１０３に送付し終えるとパイプをクローズする。レンダラプログラム１０３はパイプがクローズされたことを検知することによって、全ての印刷データの読み込みが完了したか否かを判別する。
【００２９】
この判別の結果、レンダラプログラム１０３がスプーリング・システム１０２から全ての印刷データの読み込みの完了した場合は、ステップＳ４２３に進み、完了していない場合は、ステップＳ４２１に進む。なお、印刷データ解析プログラム１０４はレンダラプログラム１０３に含まれるプログラムであることから、レンダラプログラム１０３から印刷データ解析プログラム１０４への印刷データの受け渡しはレンダラプログラム１０３のバッファを介して行う。
【００３０】
次に、ステップＳ４２１では、印刷データ解析プログラム１０４が印刷データを解析する。そして、印刷データの種類に応じて直線描画や矩形描画、矩形塗り、多角形塗り、画像描画用の個別プリンタコマンド生成プログラム１０６を実行するために、各々のプログラムの先頭アドレスが格納されている関数テーブル１１０を参照する。これにより、各プログラムの先頭アドレスを取得し、そのアドレスから個別プリンタコマンド生成プログラム１０６実行することによって個々のプリンタコマンドを生成する。
【００３１】
次に、ステップＳ４２２では、生成したプリンタコマンドをプリンタに出力してプリンタを駆動し、ステップＳ４２０に戻って処理を繰り返す。一方、ステップＳ４２３において、レンダラプログラム１０３がリンクしていたプリンタコマンド生成プログラム１０５を解放し、レンダラプログラム１０３自身のプロセスの実行を終了して、全体の印刷処理を終了する。
【００３２】
以上の処理のように、アプリケーションが生成した印刷データが複数のプリンタコマンド生成プログラム１０５によってプリンタコマンドに変換されてプリンタに出力されることによってプリンタが駆動され、印刷結果がプリンタから出力される。
【００３３】
次に、修正プリンタコマンド生成プログラム１０７によって、プリンタコマンドの生成プログラムの一部を置き換える処理について説明する。図１のアプリケーションプログラム１０１が印刷データを生成し、それをスプーリング・システム１０２に対して印刷要求として投入するによって、印刷処理が開始される点においては、修正プリンタコマンド生成プログラム１０７が無い場合と同様である。また、ステップＳ４０１からステップＳ４０４までの処理についても同様である。
【００３４】
次に、ステップＳ４０５では、修正プリンタコマンド生成プログラム１０７の有無をチェックする。修正プリンタコマンド生成プログラム１０７の有無のチェックは、同様に外部記憶装置６０３の専用のディレクトリに、プログラムが存在するか否かによって行う。上記ディレクトリにプログラムが存在する場合は、修正プリンタコマンド生成プログラム１０７が存在すると判断して、図４−２のステップＳ４１１に処理を進める。
【００３５】
ステップＳ４１１では、まず修正プリンタコマンド生成プログラム１０７のプログラム名の一覧を作成する。プログラム名の一覧は、外部記憶装置６０３の専用のディレクトリに格納されているプログラムの名前を１つずつ取り出して、図５のようなリスト構造を用いて作成することにより行う。
【００３６】
図５では、修正プリンタコマンド生成プログラム１０７の名前リストのポインタ５０１に、最初のプログラム名を格納するための要素５１１の先頭アドレスを格納する。なお、修正プリンタコマンド生成プログラム１０７の名前リストのポインタ５０１は、ＲＡＭ６０２に用意するものとする。
【００３７】
要素５１１中のポインタ"next"には、次のプログラム名を格納するための要素５１２の先頭アドレスを格納し、要素５１１中のポインタ"str"には、要素５１１が格納するプログラム名の文字列５２１の先頭アドレスを格納する。文字列はＡＳＣＩＩコード等の一般的な文字コードで表現され、その終端は値０の文字コードによって表す。以下、専用のディレクトリに格納されているプログラムの名前を１つずつ要素５１２、５１３、５１４と格納し、最後の要素のポインタ"next"にはＮＵＬＬ値（ゼロ）を格納して、最後の要素であることを明示する。
【００３８】
なお、図５は要素が４つ、即ち専用のディレクトリに格納されているプログラムの数が４つで、それらの名前４つをリスト構造に格納した場合となっているが、プログラムの数は４つに制限されるものではない。専用ディレクトリに格納されている１つ以上のプログラムの個数と同じ要素数を持つリスト構造を作るものとする。
【００３９】
次に、ステップＳ４１２では、図５に示す修正プリンタコマンド生成プログラム１０７の名前の先頭アドレスを指すポインタ５０１を用いて、リストの最初の要素５１１に格納されているプログラム名を指定する。そして、最初の修正プリンタコマンド生成プログラム１０７を外部記憶装置６０３の専用ディレクトリからメモリ上にロードしてリンクする。
【００４０】
次に、ステップＳ４１３では、ステップＳ４１２にてリンクした修正プリンタコマンド生成プログラム１０７のデータ領域に記録されているバージョン番号を取得してそれをレジスタＲ２にセットする。
【００４１】
次にステップＳ４１４では、レジスタＲ１とレジスタＲ２にセットされている２つのバージョン番号を比較して、レジスタＲ２のバージョン番号の方がレジスタＲ１のバージョン番号よりも新しいか否かを判断する。この判断の結果、レジスタＲ２のバージョン番号の方が新しい場合は、ステップＳ４１５に進み、それ以外の場合はステップＳ４１６に進む。
【００４２】
ステップＳ４１５では、修正プリンタコマンド生成プログラム１０７に含まれる個別プリンタコマンド生成プログラム１０８の先頭アドレスを、関数テーブル１１０中の対応する個別プリンタコマンド生成プログラム１０６の要素に対して上書きする。なお、個別プリンタコマンド生成プログラム１０８に対応する関数テーブル１１０中の要素の選択は、個別プリンタコマンド生成プログラムの関数名を関数テーブル１１０のＮ個の要素に格納されている関数名と一つ一つ照合する。そして、一致した要素Ｘ（１≦Ｘ≦Ｎ）を選択すればよい。
【００４３】
本処理よって、元々プリンタコマンド生成プログラム１０５において用意されていた個別プリンタコマンド生成プログラム１０６は、もはや印刷データ解析プログラム１０４からは呼び出されることはなくなる。そして、修正プリンタコマンド生成プログラム１０７によって提供される新しい個別プリンタコマンド生成プログラム１０８が代わって呼び出され実行されることとなる。一方、ステップＳ４１６では、メモリ上にロードしてリンクした修正プリンタコマンド生成プログラム１０７のリンクを解除しメモリから解放してステップＳ４１７へ処理を進める。
【００４４】
次にステップＳ４１７では、図５のリスト構造の要素中のポインタ"next"を参照して、ＮＵＬＬ値が格納されているか否かを判断する。この判断の結果、ＮＵＬＬ値が格納されていなければ次の要素があるものと判断して、ステップＳ４１８に進み、ＮＵＬＬ値が格納されていた場合は次の要素はないと判断して、図４−３のステップＳ４２０に進む。
【００４５】
ステップＳ４１８では、次の要素に格納されているプログラム名を指定して、その修正プリンタコマンド生成プログラム１０７をメモリ上にロードしリンクして、ステップＳ４１３に戻る。
【００４６】
以上の一連の処理によって、外部記憶装置６０３の専用のディレクトリに格納されている修正プリンタコマンド生成プログラム１０７のうち、プリンタコマンド生成プログラム１０５のバージョン番号よりも新しいバージョン番号を持つ修正プリンタコマンド生成プログラム１０７がメモリ上にロードかつリンクされる。それらのプログラムに含まれている個別プリンタコマンド生成プログラム１０８の先頭アドレスが関数テーブル１１０にセットされた後に、ステップＳ４２０に処理が進められることになる。
【００４７】
ステップＳ４２０では、修正プリンタコマンド生成プログラム１０７が無い場合と同様に、レンダラプログラム１０３がＯＳが用意するパイプ経由で印刷データを順次読み込んでレンダラプログラム１０３のバッファに格納する。そして、そのデータを印刷データ解析プログラム１０４に渡す。
【００４８】
それと並行して、スプーリング・システム１０２が、順次印刷データをパイプに書き込み、全ての印刷データを送付し終えるとパイプをクローズし、レンダラプログラム１０３はパイプがクローズされたことを検知する。これによって、全ての印刷データの読み込みが完了したか否かを判別する。この判別の結果、全ての印刷データの読み込みの完了した場合は、ステップＳ４２３に進み、完了していない場合は、ステップＳ４２１に進む。
【００４９】
次に、ステップＳ４２１では、関数テーブル１１０の幾つかの要素には、修正プリンタコマンド生成プログラム１０７内の個別プリンタコマンド生成プログラム１０８の先頭アドレスがセットされている。また、残りの要素には、プリンタコマンド生成プログラム１０５内の個別プリンタコマンド生成プログラム１０６の先頭アドレスがセットされたままとなっている。
【００５０】
この状態で、印刷データ解析プログラム１０４が印刷データを解析する。印刷データの種類に応じて、直線描画や矩形描画、矩形塗り、多角形塗り、画像描画用の個別プリンタコマンド生成プログラムを実行するために、各々のプログラムの先頭アドレスが格納されている関数テーブル１１０を参照する。そして、各プログラムの先頭アドレスを取得する。
【００５１】
次に、そのアドレスから個別プリンタコマンド生成プログラムを実行することによって、修正プリンタコマンド生成プログラム１０７によって置き換えられたプリンタコマンド生成は個別プリンタコマンド生成プログラム１０８によって行われる。それ以外のプリンタコマンド生成は、元のプリンタコマンド生成プログラム１０５内の個別プリンタコマンド生成プログラム１０６によって行われる。
【００５２】
次に、ステップＳ４２２では、生成したプリンタコマンドをプリンタに出力しプリンタを駆動して、ステップＳ４２０に戻って処理を繰り返す。最後に、ステップＳ４２０からステップＳ４２２までの一連の処理によって全ての印刷データの読み込みとそれによるプリンタコマンドの生成およびプリンタへの出力が完了すると、ステップＳ４２３に処理を進める。
【００５３】
ステップＳ４２３において、レンダラプログラム１０３がリンクしていたプリンタコマンド生成プログラムおよび全ての修正プリンタコマンド生成プログラムを解放し、レンダラプログラム１０３自身のプロセスの実行を終了して、全体の印刷処理を終了する。
【００５４】
以上の処理のように、アプリケーションが生成した印刷データがプリンタコマンドに変換される際に、修正プリンタコマンド生成プログラム１０７によって提供される個別プリンタコマンド生成プログラム１０８によって、任意かつ複数のプリンタコマンド生成プログラム１０５が置き換えられた上でプリンタコマンドが生成され、プリンタに出力されることによってプリンタが駆動され、印刷結果がプリンタから出力される。
【００５５】
以上の説明では、プリンタコマンド生成プログラム１０５内の個別プリンタコマンド生成プログラム１０６を、別の個別プリンタコマンド生成プログラム１０８によって置き換える場合の処理の流れについて説明してきた。しかしながら、プリンタコマンド生成プログラム１０５内のどの個別プリンタコマンド生成プログラム１０６を置き換えるかは、外部記憶装置６０３の専用のディレクトリに格納する修正プリンタコマンド生成プログラム１０７の数やそれらが提供する個別プリンタコマンド生成プログラム１０８によって、いかようにも変更可能であるという点が重要である。
【００５６】
この特性によって、例えば、プリンタコマンドの生成プログラムの一部をデバグするために、デバグ用の個別プリンタコマンド生成プログラム１０８を含んだ修正プリンタコマンド生成プログラム１０７を用意し、それを専用ディレクトリに格納する。その後アプリケーションから印刷要求を発行させるだけで、プリンタコマンド生成プログラム１０５を再コンパイルおよび再リンクすることなく、その機能の一部を置き換えるデバグ用の個別プリンタコマンド生成プログラムを容易に実行させることが可能となる。
【００５７】
さらに、デバグが完了した時点で、専用ディレクトリから修正プリンタコマンド生成プログラム１０７を削除するだけで、元のプリンタコマンド生成プログラム１０５の処理に簡単に戻すことができる。これだけでなく、デバグの結果、プリンタコマンド生成プログラム１０５の一部の機能を置き換える必要が発生した場合には、それ用の修正プリンタコマンド生成プログラム１０７を専用ディレクトリに格納する。これだけで、プリンタコマンド生成プログラム１０５を再コンパイルおよび再リンクすることなく、所望の個別プリンタ生成プログラムのみを置き換えることが可能となる。
【００５８】
さらに本実施形態では、ユーザが新しいバージョンのプリンタコマンド生成プログラム１０５をインストールした場合には、それよりも古いバージョンを持つ修正プリンタコマンド生成プログラム１０７が実行されないようにすることが可能となる。この特性によって、プリンタコマンド生成プログラム１０５の全体を入れ替える必要がある場合には、バージョンの新しいプリンタコマンド生成プログラム１０５を提供する。プリンタコマンド生成プログラム１０５の一部の機能のみを入れ替える必要がある場合には、バージョンの新しい修正プリンタコマンド生成プログラム１０７提供する。これにより、入れ替えるプログラムを必要最小限に抑えつつ、プリンタコマンド生成プログラム１０５の全体の入れ替えも矛盾無く行うことが可能となる。
【００５９】
（本発明に係る他の実施形態）
前述した本発明の実施形態における印刷装置を構成する各手段、並びに印刷方法の各工程は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００６０】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００６１】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図４−１〜図４−３に示すフローチャートに対応したプログラム）を、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００６２】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００６３】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００６４】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【００６５】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００６６】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００６７】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００６８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００６９】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施形態のプログラムの構成例を示すブロック図である。
【図２】従来のＵｎｉｘ（登録商標）系ＯＳにおいて、印刷処理を行う構成を示すブロック図である。
【図３】従来のＵｎｉｘ（登録商標）系ＯＳにおいて、レンダラプログラムとプリンタコマンド生成プログラムが分離した場合の処理を行う構成を示すブロック図である。
【図４−１】本発明の実施形態における印刷装置の処理手順を示すフローチャートである。
【図４−２】本発明の実施形態における印刷装置の処理手順を示すフローチャートである。
【図４−３】本発明の実施形態における印刷装置の処理手順を示すフローチャートである。
【図５】本発明の実施形態における修正プリンタコマンド生成プログラムの名前を格納するリスト構造を示す図である。
【図６】本発明の実施形態におけるコンピュータシステムの構成例を示すブロック図である。
【符号の説明】
【００７１】
１０１  アプリケーションプログラム
１０２  スプーリング・システム
１０３  レンダラプログラム
１０４  印刷データ解析プログラム
１０５  プリンタコマンド生成プログラム
１０６  個別プリンタコマンド生成プログラム
１０７  修正プリンタコマンド生成プログラム
１０８  個別プリンタコマンド生成プログラム
１１０  関数テーブル
２０１  アプリケーションプログラム
２０２  スプーリング・システム
２０３  レンダラプログラム
２０４  印刷データ解析プログラム
２０５  プリンタコマンド生成プログラム
２０６  個別プリンタコマンド生成プログラム
３０１  アプリケーションプログラム
３０２  スプーリング・システム
３０３  レンダラプログラム
３０４  印刷データ解析プログラム
３０５  プリンタコマンド生成プログラム
３０６  個別プリンタコマンド生成プログラム
５０１  ポインタ
５１１〜５１４  要素
５２１  プログラム名の文字列
６０１  ＣＰＵ
６０２  ＲＡＭ
６０３  外部記憶装置
６０４  物理インタフェース
【図１】
2007280148.tif 000003
【図２】
2007280148.tif 000004
【図３】
2007280148.tif 000005
【図４−１】
2007280148.tif 000006
【図４−２】
2007280148.tif 000007
【図４−３】
2007280148.tif 000008
【図５】
2007280148.tif 000009
【図６】
2007280148.tif 000010