(57)【要約】【課題】  プリンタの属性ファイルを用いて印刷を行う情報機器において、上位のシステムがＰＰＤのようなプリンタの属性ファイルを動的に生成することで、アプリケーションの改造なしに、プリンタの静的能力情報と動的能力情報をマージして扱う仕組みを提供することを目的とする。【解決手段】  プリンタの属性ファイル内に、属性置換テーブルを有し、プリンタ情報の動的生成を行い、印刷を行う。【選択図】  図１
2006239933.tif 000002
【特許請求の範囲】
【請求項１】
ページ記述言語データを入力しプリンタに対してプリンタコマンドを出力する印刷装置で、入力された印刷パラメータに従ってページ記述言語データを編集するページ記述言語編集手段と、前記印刷パラメータに対応した属性の一覧を記述するページ記述言語属性ファイルと、ページ記述編集手段によって編集された編集済みページ記述言語データから、プリンタコマンドを生成するプリンタコマンド生成手段を具備する装置において、プリンタから印刷パラメータに対応した属性情報を取得するための属性情報取得手段と、プリンタから取得した属性情報に応じてページ記述言語属性ファイルを変更するためのページ記述言語属性置換テーブルを有し、前記ページ記述言語属性置換テーブルを前記ページ記述言語属性ファイル内に格納することを特徴とする印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページ記述言語データを入力しプリンタコマンドを出力する印刷装置に関する。
【背景技術】
【０００２】
従来より、ページ記述言語データを入力しプリンタコマンドを出力する装置において、印刷方法を制御するために、ページ記述言語と共に印刷パラメータも同時に入力して、ページ記述言語を編集した後、それをプリンタコマンドに変換する方法がとられてきた。
【０００３】
図２にその処理を表すブロック図を示す。このような印刷装置では、まずページ記述言語編集処理に対して、ページ記述言語データと共にプリンタ指定情報と印刷パラメータが入力される。ページ記述言語編集処理は、入力されたプリンタ指定情報に対応するページ記述言語属性ファイルを参照する。ページ記述言語属性ファイルはプリンタ毎に複数存在し、１つのページ記述言語属性ファイルには、そのファイルに対応する１つのプリンタに指定可能な用紙サイズや用紙の種類、各々の用紙サイズに対応する印刷可能領域等の、プリンタに関する属性情報を表すための、各々の属性情報に対応する印刷パラメータと対応するページ記述言語属性が対になって記述されている。ページ記述言語編集処理では、入力されたプリンタ指定情報によって指し示されるページ記述言語属性ファイルを参照して、入力された印刷パラメータに対応するページ記述言語属性を参照し、ページ記述言語データを編集してその中にページ記述言語属性を挿入し、新たなページ記述言語データを生成する。印刷パラメータを反映した編集後のページ記述言語データはプリンタコマンド生成処理に渡され、プリンタコマンド生成処理は編集後のページ記述言語データを解析してプリンタコマンドデータに変換し、それをプリンタに対して出力する。以上の結果として、最初に印刷装置に与えられたページ記述言語データに対して印刷パラメータを反映させた印刷結果が、指定したプリンタから得られることになる。
【０００４】
又、従来例としては、例えば特許文献１をあげることが出来る。
【特許文献１】特開2003-345540号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、図２で示した従来の構成では、ページ記述言語属性ファイルはプリンタの状態を動的に反映するものではなく、例えばプリンタに対してオプションとしてカラー印刷ユニットが追加可能である場合には、カラー印刷ユニットに関する属性情報を予めページ記述言語属性ファイルに記述しておくと、例えカラー印刷ユニットが無い場合でもカラー印刷ユニットに関係する印刷パラメータが入力可能となり、カラー印刷ユニットに関する印刷パラメータを指定したにも関わらず結果としてカラー印刷がなされないことになり、所望の印刷結果が得られないにも関わらず印刷可能である誤解をユーザに与えるという点で、甚だ不便であった。またこの問題は、ページ記述言語属性ファイルを手動で編集するか、あるいはカラー印刷ユニットに関する属性情報を含まないページ記述言語属性ファイルと、カラー印刷ユニットに関する属性情報を含んだページ記述言語属性ファイルの2つを用意することで解決可能であるが、前者の場合はページ記述言語属性ファイルの仕様とプリンタのオプションに対応する印刷パラメータを予め理解する必要があり通常のユーザにとっては非現実的な要求であり、後者の場合はプリンタの状態に応じて手動でページ記述言語属性ファイルを切り換えることが必要となり、仮にそうしたとしても、カラーユニット以外のプリンタのオプションの全てに対応するためには、それらの可能な全ての組み合わせに対応したページ記述言語属性ファイルを用意せねばならず、甚だ非効率的であった。
【課題を解決するための手段】
【０００６】
そこで本発明では、プリンタの状態に応じて適切なページ記述言語属性ファイルを動的に生成させて、ユーザの印刷パラメータの入力における負荷を低減させることを目的として、本発明の印刷装置として、ページ記述言語データを入力しプリンタに対してプリンタコマンドを出力する印刷装置で、入力された印刷パラメータに従ってページ記述言語データを編集するページ記述言語編集手段と、前記印刷パラメータに対応した属性の一覧を記述するページ記述言語属性ファイルと、ページ記述編集手段によって編集された編集済みページ記述言語データから、プリンタコマンドを生成するプリンタコマンド生成手段を具備する装置において、プリンタから印刷パラメータに対応した属性情報を取得するための属性情報取得手段と、プリンタから取得した属性情報に応じてページ記述言語属性ファイルを変更するためのページ記述言語属性置換テーブルを有し、前記ページ記述言語属性置換テーブルを前記ページ記述言語属性ファイル内に格納することを特徴とする印刷装置を提供する。
【発明の効果】
【０００７】
以上示したように一連の処理によって、複数の属性置換テーブルを含んだ、ただ１つの属性ファイルを定義することによって、プリンタから取得した属性情報に基づいて、様々な属性の定義を自動的に属性ファイルに反映させることが可能となり、ユーザが属性ファイルの内部を編集したり、あるいは複数の属性ファイルをプリンタの状態に応じて使い分ける、というような不便な状況を改善することが可能となった。
【発明を実施するための最良の形態】
【０００８】
以下、図面に基づいて、本発明の実施例を詳細に、かつ具体的に説明する。
【０００９】
図１は、本発明の特徴を最も良く表す図面である。１は中央演算処理装置(ＣＰＵ)であり、２は読み書き可能なメモリ(ＭＥＭ)であり、３は外部記憶装置(ＨＤ)であり、４はプリンタ(ＰＲＴ)であり、１０はそれら装置間のデータの送受信を行うためのシステムバスである。
【００１０】
本装置のプログラムは、ＭＥＭ２またはＨＤ３上に存在し、ＣＰＵ１がシステムバスを通じて逐次プログラムをＭＥＭ２あるいはＨＤ３から読み出しつつ目的の処理を行い、最終的に印刷データをＰＲＴ４に出力する。
【００１１】
図３は、本発明を含む処理の全体を表すブロック図である。また、図４および図９および図１０および図１１は本発明の処理を表すフローチャートである。かかるブロック図およびフローチャートを使用して、本装置の動作を以下順をおって説明する。
【００１２】
まず図３の処理について説明する。最初にページ記述言語編集処理に対して、ページ記述言語データと共にプリンタ指定情報と印刷パラメータが入力されページ記述言語編集処理がページ記述言語属性ファイルを参照してページ記述言語データを編集し、その結果得られた編集済みのページ記述言語データをプリンタコマンド生成処理に渡す、という一連の処理は、図２に基づいて説明した処理と同様である。この処理とは別に、図３の処理では、カラー印刷ユニットの有無等のプリンタに追加されたオプションの属性情報を取得する属性情報取得処理に対してプリンタ指定情報が入力され、属性情報取得処理は指定されたプリンタの属性情報を取得して、その内容とページ記述言語属性ファイル内のページ記述言語属性置換テーブルを用いて、ページ記述言語属性ファイル自体を変換する処理を行う。以降、図４および図９および図１０および図１１に示したフローチャートを用いてかかる処理について詳細に説明する。
【００１３】
先ずステップＳ１０１において、プリンタから取得した属性情報に基づいてリストＰをＭＥＭ２中に生成する。プリンタから属性情報を取得する方法については、SNMPなど従来の技術によって行って何ら問題はない。プリンタから取得する属性情報の構造を図５に示す。図のように属性情報は任意の長さの文字列 str i （iは０以上n-1以下。nは属性の総数）で与えられ、各々のstr i には、その属性情報として、例えばカラー印刷ユニットがプリンタに装着されている場合にはカラー印刷ユニットを表す属性キーワードColorUnitとその有無を表す文字列 true（ありを表す） または false（なしを表す） の組みを"＝"で区切って、ColorUnit＝trueまたはColorUnit=falseと記述されるものとする。属性キーワードは各々の属性に対して別々に定義され、各々の属性キーワードに対応する文字列（ColorUnitの場合は trueとfalse）がそれぞれ定義され、図５のように複数の異なる属性キーワードとその対応する文字列の組みが入力できるものとする。また、それらの先頭のアドレスを配列 argv[i] として保持する。尚、配列 argv[i] の最後の要素には、その終端を表すために０を格納してあるものとする。
【００１４】
次に、リストＰの構造を図６に示す。図５のように格納されたプリンタの属性情報から図６のようなリストＰを生成するためには、図５の属性情報の先頭の要素から順次読み出し、i番目の要素が指す文字列を＝を境に前後に分割して、前半部分の文字列をキーワード文字列key i、後半部分の文字列を値文字列 value i としてＭＥＭ２に新たに格納し、i番目のパラメータを指し示す要素item i のp_key i および p_value i にそれらのアドレスを格納し、next iには終端を示す０を格納して、iが１以上の場合にはi-1番目の要素item i-1のnext i-1 に i番目の要素item i のアドレスを格納する、という一連の処理をi=0からi=(属性の総数)−1まで繰り返せばよい。また、先頭の要素item 0 のアドレスは、ＭＥＭ２中に用意する変数listに格納する。尚、この変数listは各々のリスト毎にＭＥＭ２に用意するものとする。
【００１５】
次にステップＳ１０２では、リストQを空で初期化する。空のリストは変数list に０を格納することで表すものとし、以降要素を１つ追加するとlistにはその先頭の要素のアドレスを格納する。
【００１６】
次にステップＳ１０３では、属性ファイルSを開く。属性ファイルの例を図７に示す。
【００１７】
属性ファイルは１行毎にその属性ファイルに対応するプリンタの印刷パラメータとして設定可能な属性を定義する。各行には空白で区切られる複数の文字列を記述し、最初の文字列が設定可能な属性を表し、２つめ以降の文字列はその属性に対して実際に設定可能な値をあらわす。例えば図７の属性ファイルでは、１行目から３行目にかけてプリンタに設定可能な解像度を定義している。解像度の属性はResolutionで定義し、実際に設定可能な解像度の値は１２００ｄｐｉと６００ｄｐｉと３００ｄｐｉの３つであることを表す。尚、Resolutionの前にある＊はResolutionが属性の文字列であることを表す記号である。
【００１８】
また５行目の＊％OptionBeginInsert Label1と７行目の＊％OptionEndInsert Label1は、その間の行に、Label1で示される属性を動的に挿入することを宣言する文字列である。なお、先頭の２文字＊％はページ記述言語属性ファイルの仕様で予めコメントであることを表すように定められている文字であり、このようにすることにより予め定められているページ記述言語属性ファイルの仕様を一切損なうことなく、かつ１つのページ記述言語属性ファイルに対応する属性置換テーブルを、明示的にかつ１つのプリンタ用にページ記述言語属性ファイルと属性置換テーブル用のファイルを別々に管理するという無駄を省いて、属性置換テーブルを記述することが可能となる。６行目はプリンタに設定可能な黒の濃度の可変可能範囲を表している。黒の濃度の属性はBlackDensityで定義し、実際に設定可能な濃度の値の範囲は０から１００であることを表す。
【００１９】
また９行目と１０行目は、プリンタに設定可能な印刷ページの順番設定を表している。印刷ページの順番設定の属性はCollateで定義し、実際に設定可能な印刷ページの順番設定はtrueまたはfalseであることを表す。
【００２０】
１２行目から１７行目は属性置換テーブルの定義である。属性置換テーブルは全てをコメント行として定義する。１２行目の＊％OptionBeginCase Label1 ColorUnit true  の、＊％OpenBeginCaseは属性置換テーブルの開始を表し、Label1は属性をLabel1で示される位置に挿入することを表し、ColorUnit true は、プリンタから取得した属性情報にColorUnit=trueが含まれていれば、その＊％OptionBeginCaseから＊％OptionEndCaseまでの間の＊％Optionで始まる全ての行を、指定された位置に挿入することを表す。
【００２１】
１９行目から２１行目は別の属性置換テーブルの定義である。このように属性置換テーブルは複数定義できる。１９行目の＊％OptionBeginCase Label1 ColorUnit falseは、プリンタから取得した属性情報にColorUnit=falseが含まれている場合の定義であり、その＊％OptionBeginCaseから＊％OptionEndCaseまでの間の＊％Optionで始まる全ての行を、指定された位置に挿入することを表す。
【００２２】
以上のような属性が記述されている場合、印刷を要求する際の印刷パラメータには、コメント以外の部分、即ち解像度として３００ｄｐｉと６００ｄｐｉと１２００ｄｐｉの３つと、黒の濃度が０から１００までと、印刷ページの順番設定が trueかfalse が指定可能となり、その他は指定不能となる。
【００２３】
次にステップＳ１０４では、属性ファイルＳの先頭から１行をメモリ（ＭＥＭ）中のバッファＢに読み込む。
【００２４】
次にステップＳ１０５では、先頭の２文字が＊％であるか否かを調べ、その行がコメント行であるか否かを判断し、コメント行でなければステップＳ１０８に処理を進め、コメント行である場合にはステップＳ１０６に処理を進める。
【００２５】
次にステップＳ１０６では、バッファＢ中の先頭の２文字＊％の次の文字から最初の空白文字までの文字列と文字列OptionBeginCaseを比較し、その行が属性置換テーブルの開始か否かを調べ、それらが一致しなかった場合にはＳ１０８に処理を進め、一致した場合にはステップＳ１０７に処理を進める。
【００２６】
次にステップＳ１０７では、バッファＢ中の空白で区切られた２番目の文字列をメモリ（ＭＥＭ）中のレジスタＲ１へ読み込み、３番目の文字列をレジスタＲ２へ読み込み、４番目の文字列をレジスタＲ３へ読み込んだ後、図９のフローチャートのステップＳ１１０に処理を進める。例えば、図７の属性ファイルの１２行目がバッファＢに読み込まれている場合は、レジスタＲ１にはLabel1が、レジスタＲ２には ColorUnitが、レジスタＲ３にはtrueが読み込まれることになる。
【００２７】
次にステップＳ１１０では、レジスタＲ２中の文字列とレジスタＲ３中の文字列の組みがリストＰ中のkey i と value i の組みとして存在するか否かを調べる。調べ方については、図６のlistに格納されているアドレスからリストＰの先頭の要素 item 0から順番に要素i（iは０以上n-1以下。nは入力パラメータの総数）を取得し、その要素 p_key iとp_value iに格納されているアドレスから、文字列のバッファ key iとvalue iを取得し、key iとレジスタＲ２、およびvalue iとレジスタＲ３の文字列を比較して共に一致した場合に存在したとみなし、ステップＳ１１１へ処理を進め、i＝０からn−１まで繰り返しても一致しない場合は、存在しなかったとみなして図４のフローチャートのステップＳ１０８へ処理を進める。尚、i番目の要素の次の要素のアドレスはi番目の要素のnext i に格納されており、next iの値が０である場合は、次の要素は存在していないとして、そこでリストＰの文字列の比較は終了すればよい。
【００２８】
次にステップＳ１１１ではメモリ（ＭＥＭ）中のバッファＦを空で初期化する。次にステップＳ１１２では、属性ファイルＳから次の１行をバッファＢに読み込む。
【００２９】
次にステップＳ１１３では、バッファＢ中の先頭の２文字＊％の次の文字から最初の空白文字までの文字列と文字列OptionEndCaseを比較し、その行が属性置換テーブルの終端か否かを調べ、それらが一致しなかった場合にはＳ１１４に処理を進め、一致した場合にはステップＳ１１５に処理を進める。
【００３０】
次にステップＳ１１４では、バッファＢ中の空白で区切られる文字列のうち２番目の文字列から最後までを改行コード付きでバッファＦに格納されている文字列の後ろに追加し、ステップＳ１１２から処理を繰り返す。
【００３１】
以上一連の処理によって、プリンタから取得された属性情報に ColorUnit=trueが含まれる場合、例えば図７の属性ファイルの１３行目から１６行目までの間の各々の行の空白で区切られる２番目の文字列以降が、バッファＦに改行コード付きで格納されることになり、最終的に下記の４行が格納されることになる。
【００３２】
＊CyanDensity         0  100
＊MagentaDensity      0  100
＊YellowDensity       0  100
＊BlaskDensity        0  100
次にステップＳ１１５では、リストＱにj番目の要素（jは０以上の整数）を追加し、レジスタＲ２の文字列をリストＱのj番目の要素item jのキーワード key j に追加し、バッファＦの文字列をvalue jに追加する。尚、リストＱの構造は図６に同じである。
【００３３】
次にステップＳ１１６では、属性ファイルＳから次の１行をバッファＢに読み込んでステップＳ１０５から処理を繰り返す。
【００３４】
以上の一連の処理を繰り返し中に、ステップＳ１０５でバッファＢに読み込んだ文字列がコメント行ではないと判断される場合は、ステップＳ１０８に処理を進めてステップＳ１０８においてファイルの終端か否かを調べる。ステップＳ１０８においてファイルの終端ではないと判断された場合は、ステップＳ１０９に処理を進めて属性ファイルＳから次の１行をバッファＢに読み込んだ後、ステップＳ１０５に戻って処理を繰り返し、ステップＳ１０８においてファイルの終端と判断された場合は、図１０のフローチャートで表す処理のステップＳ１１７に処理を進める。
【００３５】
次に図１０のフローチャートに沿って処理を説明する。先ずステップＳ１１７では、属性ファイルＳの先頭に読み出しポインタを戻して、再度属性ファイルＳの先頭から文字列を読み込めるようにしておく。
【００３６】
次にステップＳ１１８では、空の一時ファイルＴを開く。
【００３７】
次にステップＳ１１９では、属性ファイルＳから１行を改行コード付きでバッファＢに読み込む。
【００３８】
次にステップＳ１２０では、属性ファイルＴにバッファＢの文字列を全て書き込む。
【００３９】
次にステップＳ１２１では、先頭の２文字が＊％であるか否かを調べ、その行がコメント行であるか否かを判断し、コメント行でなければステップＳ１２５に処理を進め、コメント行である場合にはステップＳ１２２に処理を進める。
【００４０】
次にステップＳ１２２では、バッファＢ中の先頭の２文字＊％の次の文字から最初の空白文字までの文字列と文字列OptionBeginInsertを比較し、その行が属性置換テーブルの挿入開始位置か否かを調べ、それらが一致しなかった場合にはＳ１２５に処理を進め、一致した場合にはステップＳ１２３に処理を進める。
【００４１】
次にステップＳ１２３では、バッファＢ中の空白文字で区切られる複数の文字列のうち２番目の文字列をメモリ（ＭＥＭ）中のレジスタＲ４に読み込む。
【００４２】
次にステップＳ１２４では、レジスタＲ４の文字列がリストＱのj 番目の要素 item jのキーワード key j の文字列と一致するか否かを０番目の要素から末尾の要素まで調べて、一致するキーワードがj番目に見つかった場合は、図１１のフローチャートで示される処理のステップＳ１２７へ処理を進め、見つからなかった場合はステップＳ１２５に処理を進める。
【００４３】
次にステップＳ１２５ではファイル終端か否かを調べ、ファイルの終端である場合は図１１のフローチャートで示される処理のステップＳ１３０へ処理を進め、ファイルの終端ではない場合は、ステップＳ１２６へ処理を進めて、属性ファイルＳから次の１行をバッファＢに読み込んで、ステップＳ１２０から処理を繰り返す。
【００４４】
次に図１１のフローチャートに従って説明する。
【００４５】
ステップＳ１２４においてj番目の要素のキーワードkey jとレジスタＲ４が一致したことを受けて、ステップＳ１２７ではリストＱのj番目の要素の値の文字列 value j を一時ファイルＴへ書き込む。
【００４６】
以上一連の処理によって、プリンタから取得された属性情報に ColorUnit=trueが含まれる場合、図８に示すように下記の４行が一時ファイルＴの６行目から書き込まれることになる。
【００４７】
＊CyanDensity     0  100
＊MagentaDensity  0  100
＊YellowDensity   0  100
＊BlaskDensity    0  100
次にステップＳ１２８では、属性ファイルＳから次の１行をバッファＢに読み込む。
【００４８】
次にステップＳ１２９では、バッファＢ中の先頭の２文字＊％の次の文字から最初の空白文字までの文字列と文字列OptionEndInsertを比較し、その行が属性置換テーブルの挿入終端位置か否かを調べ、それらが一致しなかった場合にはＳ１２８に処理を進めて処理を繰り返し、一致した場合にはステップＳ１２０に戻って処理を繰り返す。
【００４９】
ここまでの処理によって、図７で示す属性ファイルの６行目は図８に示す属性ファイルの６行目から９行目のように置換されることになる。
【００５０】
また一連の処理を繰り返して、最終的にステップＳ１２５において属性ファイルＳの終端であると判断された場合は、図１１のフローチャートで示した処理のステップＳ１３０において、属性ファイルＳと一時ファイルＴを閉じ、次にステップＳ１３１において一時ファイルＴを属性ファイルＳに上書きして新しい属性ファイルＳを作ることで処理を終了する。これら一連の処理によって、プリンタから取得した属性情報がColor=trueである場合は、図７で示した属性ファイルは、図８に示した属性ファイルに置き換えられることになる。
【００５１】
以上のような一連の処理の後の属性ファイルを参照する場合、印刷を要求する際に指定可能な印刷パラメータは、コメント以外の部分、即ち解像度として３００ｄｐｉと６００ｄｐｉと１２００ｄｐｉの３つと、黒の濃度が０から１００までと、シアンの濃度が０から１００までと、マゼンタの濃度が０から１００までと、イエローの濃度が０から１００までと、印刷ページの順番設定が trueかfalseとなり、図７に示した属性ファイルを参照して印刷を要求する際に指定可能なパラメータに、カラー印刷ユニットを追加したことによって、自動的にシアンとマゼンタとイエローの濃度設定項目が追加されることになった。
【００５２】
一方で、元の属性ファイルが図７のような場合で、かつプリンタから取得した属性情報が Color=falseである場合は、図７の２０行目の空白で区切られる２番目の文字列以降、即ち、＊BlackDensity  0  100  が図７の６行目に挿入されるために、結果として得られる属性ファイルは変わらない。
【００５３】
更に、元の属性ファイルが図８のような場合で、かつプリンタから取得した属性情報が Color=falseである場合は、図８の２３行目の空白で区切られる２番目の文字列以降、即ち、＊BlackDensity  0  100  が、図８の６行目から９行目の４行と置換されて挿入されるため、結果として得られる属性ファイルは、図７のようになる。
【００５４】
つまり、図７と図８で示した属性ファイルは、本装置の一連の処理によってプリンタから取得された属性情報によって一方から他方に自動的に置換されることになり、かつ置換するための規則は属性ファイル自身に記述されていることから、属性ファイルは１つのみを定義すればよいことになる。
【００５５】
さらに、属性ファイル中に記述する置換テーブル、即ち図７の場合は１２行目から１７行目と１９行目から２１行目は、プリンタの属性 ColorUnitに関する定義であったが、これはこの属性に限って定義可能であるものではない。つまりColorUnit以外の別の属性に対しても複数定義可能であり、プリンタから取得される属性情報全てについて定義可能であることを表している。
【図面の簡単な説明】
【００５６】
【図１】本発明を適用し得る装置の全体図である。
【図２】ページ記述言語を扱う一般的な印刷装置の構成図である。
【図３】本発明を含む処理の全体を表すブロック図である。
【図４】属性ファイル置換処理の流れを表すフローチャートである。
【図５】入力パラメータおよびプリンタコマンド生成用パラメータの構成図である。
【図６】リスト構造の構成図である。
【図７】属性ファイルの図である。
【図８】図７とはプリンタの属性情報によって置換された属性ファイルの図である。
【図９】属性ファイル置換処理の流れを表すフローチャートである。
【図１０】属性ファイル置換処理の流れを表すフローチャートである。
【図１１】属性ファイル置換処理の流れを表すフローチャートである。
【図１】
2006239933.tif 000003
【図２】
2006239933.tif 000004
【図３】
2006239933.tif 000005
【図４】
2006239933.tif 000006
【図５】
2006239933.tif 000007
【図６】
2006239933.tif 000008
【図７】
2006239933.tif 000009
【図８】
2006239933.tif 000010
【図９】
2006239933.tif 000011
【図１０】
2006239933.tif 000012
【図１１】
2006239933.tif 000013