(57)【要約】【課題】印刷設定UI部にて簡便に新たな印刷機能を追加する。【解決手段】コンピュータ装置で動作するプリンタドライバであって、前記コンピュータ装置を、印刷機能に関する情報を記述したPrintTicket（以下、PT）を生成するPrinter Driver core部、前記PTに基づいて印刷設定画面を生成して表示する印刷設定UI部、として機能させ、前記Printer Driver core部は、前記PTに情報を格納するための領域を設定した第１PTを生成し、前記印刷設定UI部は、前記印刷設定画面で入力された他の印刷機能に関する情報を記述したPTを生成し、当該PTを第１PTの前記領域に組み込んで第２PTを生成し、前記Printer Driver core部は、前記第２PTを前記印刷装置が解釈可能な第３PTに変換する。【選択図】図１２
2015090634.tif 000002
【特許請求の範囲】
【請求項１】
印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバであって、
前記コンピュータ装置を、
印刷機能に関する情報を記述したPrintTicketを生成するPrinter Driver core部、
前記PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる印刷設定UI部、として機能させ、
前記Printer Driver core部は、前記PrintTicketに、情報を格納するための領域を定義した第１PrintTicketを生成して、前記印刷設定UI部に通知し、
前記印刷設定UI部は、前記第１PrintTicketに基づく印刷設定画面で入力された他の印刷機能に関する情報を記述したPrintTicketを生成し、当該PrintTicketを前記第１PrintTicketの前記領域に組み込んだ第２PrintTicketを生成して、前記Printer Driver core部に通知し、
前記Printer Driver core部は、前記第２PrintTicketを前記印刷装置が解釈可能な第３PrintTicketに変換する、
ことを特徴とするプリンタドライバ。
【請求項２】
前記印刷設定UI部は、前記第１PrintTicketの前記領域に、前記他の印刷機能に関する情報を文字列で記述し、
前記Printer Driver core部は、前記文字列を解釈してPrintTicketの形式に変換する、
ことを特徴とする請求項１に記載のプリンタドライバ。
【請求項３】
前記Printer Driver core部は、PrintTicketの編集を行う禁則JavaScript（登録商標）部を有し、
前記禁則JavaScript（登録商標）部は、DEVMODE構造体のPrivate領域に予め記述された情報を、予め定義された関数を用いて変換して前記PrintTicketに書き込むことによって、前記領域を定義する、
ことを特徴とする請求項１又は２に記載のプリンタドライバ。
【請求項４】
前記Printer Driver core部が、GDI（Graphics device interface）によって、印刷対象の文書を作成するアプリケーションとの情報交換を行う際に、前記禁則JavaScript（登録商標）部は、予め定義された関数を用いて、PrintTicketとDEVMODE構造体との相互変換を行う、
ことを特徴とする請求項３に記載のプリンタドライバ。
【請求項５】
前記印刷設定UI部は、前記印刷装置の能力情報を取得する双方向通信部を有し、前記第１PrintTicketと前記能力情報とに基づいて、前記印刷設定画面を生成する、
ことを特徴とする請求項１乃至４のいずれか一に記載のプリンタドライバ。
【請求項６】
印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバであって、
前記コンピュータ装置を、
印刷機能に関する情報を記述したPrintTicketを生成するPrinter Driver core部、
前記PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる印刷設定UI部、として機能させ、
前記Printer Driver core部は、前記PrintTicketに、情報を格納するための領域を定義した第１PrintTicketを生成して、前記印刷設定UI部に通知し、
前記印刷設定UI部は、前記第１PrintTicketに基づく印刷設定画面で入力された他の印刷機能に関する情報を記述したPJL（Printer Job Language）コマンドを生成し、当該PJLコマンドを前記第１PrintTicketの前記領域に組み込んだ第２PrintTicketを生成して、前記Printer Driver core部に通知し、
前記Printer Driver core部は、前記第２PrintTicketを前記印刷装置が解釈可能な第３PrintTicketに変換する、
ことを特徴とするプリンタドライバ。
【請求項７】
印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバであって、
前記コンピュータ装置を、
印刷機能に関する情報を記述したPrintTicketを生成するPrinter Driver core部、
前記PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる印刷設定UI部、として機能させ、
前記Printer Driver core部は、前記PrintTicketに、情報を格納するための領域を定義した第１PrintTicketを生成して、前記印刷設定UI部に通知し、
前記印刷設定UI部は、前記第１PrintTicketに基づく印刷設定画面で入力された他の印刷機能に関する情報を記述した第１PJLコマンドを生成し、当該第１PJLコマンドを前記第１PrintTicketの前記領域に組み込んだ第２PrintTicketを生成して、前記Printer Driver core部に通知し、
前記Printer Driver core部は、前記第２PrintTicketを前記印刷装置が解釈可能な第２PJLコマンドに変換する、
ことを特徴とするプリンタドライバ。
【請求項８】
前記プリンタドライバは、Windows（登録商標）のオペレーティングシステム上で動作するversion4のプリンタドライバである、
ことを特徴とする請求項１乃至７のいずれか一に記載のプリンタドライバ。
【請求項９】
印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバの印刷機能の追加方法であって、
印刷機能に関する情報を記述したPrintTicketを生成する第１ステップと、
前記PrintTicketに、情報を格納するための領域を定義して、第１PrintTicketを生成する第２ステップと、
前記第１PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる第３ステップと、
前記印刷設定画面で入力された他の印刷機能に関する情報を記述したPrintTicketを生成し、当該PrintTicketを前記第１PrintTicketの前記領域に組み込んで第２PrintTicketを生成する第４ステップと、
前記第２PrintTicketを前記印刷装置が解釈可能な第３PrintTicketに変換する第５ステップと、を実行する、
ことを特徴とするプリンタドライバの印刷機能の追加方法。
【請求項１０】
前記第４ステップでは、前記第１PrintTicketの前記領域に、前記他の印刷機能に関する情報を文字列で記述し、
前記第５ステップでは、前記文字列を解釈してPrintTicketの形式に変換する、
ことを特徴とする請求項９に記載のプリンタドライバの印刷機能の追加方法。
【請求項１１】
前記第２ステップでは、DEVMODE構造体のPrivate領域に予め記述された情報を、予め定義された関数を用いて変換して前記PrintTicketに書き込むことによって、前記領域を定義する、
ことを特徴とする請求項９又は１０に記載のプリンタドライバの印刷機能の追加方法。
【請求項１２】
前記第３ステップでは、前記印刷装置の能力情報を取得し、前記第１PrintTicketと前記能力情報とに基づいて、前記印刷設定画面を生成する、
ことを特徴とする請求項９乃至１１のいずれか一に記載のプリンタドライバの印刷機能の追加方法。
【請求項１３】
印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバの印刷機能の追加方法であって、
印刷機能を定義するPrintTicketを生成する第１ステップと、
前記PrintTicketに、情報を格納するための領域を定義して、第１PrintTicketを生成する第２ステップと、
前記第１PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる第３ステップと、
前記印刷設定画面で入力された他の印刷機能に関する情報を記述したPJLコマンドを生成し、当該PJLコマンドを前記第１PrintTicketの前記領域に組み込んで第２PrintTicketを生成する第４ステップと、
前記第２PrintTicketを前記印刷装置が解釈可能な第３PrintTicketに変換する第５ステップと、を実行する、
ことを特徴とするプリンタドライバの印刷機能の追加方法。
【請求項１４】
印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバの印刷機能の追加方法であって、
印刷機能を定義するPrintTicketを生成する第１ステップと、
前記PrintTicketに、情報を格納するための領域を定義して、第１PrintTicketを生成する第２ステップと、
前記第１PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる第３ステップと、
前記印刷設定画面で入力された他の印刷機能に関する情報を記述した第１PJLコマンドを生成し、当該第１PJLコマンドを前記第１PrintTicketの前記領域に組み込んで第２PrintTicketを生成する第４ステップと、
前記第２PrintTicketを前記印刷装置が解釈可能な第２PJLコマンドに変換する第５ステップと、を実行する、
ことを特徴とするプリンタドライバの印刷機能の追加方法。
【請求項１５】
前記プリンタドライバは、Windows（登録商標）のオペレーティングシステム上で動作するversion4のプリンタドライバである、
ことを特徴とする請求項９乃至１４のいずれか一に記載のプリンタドライバの印刷機能の追加方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタドライバ及びプリンタドライバの印刷機能の追加方法に関し、特に、Windows（登録商標、以下省略）のオペレーティングシステム（OS：Operating System）上で動作するVersion4のプリンタドライバ及び当該プリンタドライバの印刷機能の追加方法に関する。
【背景技術】
【０００２】
WindowsOS上で動作するプリンタドライバに関して、Microsoft（登録商標、以下省略）社からハードウェアメーカー向けのガイドラインが示されており、ハードウェアメーカーでは、このガイドラインに従って、Windows2000〜Windows7を想定したVersion3のプリンタドライバを提供している。
【０００３】
その後、WindowsOSとしてWindows8やServer2012が登場しており、特にWindows8では、UI（User Interface）がタイル状のユーザーインタフェースであるMetroスタイルに変更されたことから、ハードウェアメーカーでは、新しいプリンタドライバアーキテクチャを採用したVersion4のプリンタドライバの開発を進めている。
【０００４】
このVersion4のプリンタドライバモデルは、大別するとPrinter Driver core部と印刷設定UI部の２つのレイヤーで構成される。これら２つのレイヤーはプロセス分離が図られており、個別に提供することができるようになっている。
【０００５】
Printer Driver core部は、印刷機能を提供するアプリケーションであり、各印刷機能を定義するGPD（Generic Printer Description）/PPD（PostScript Printer Description）、XML（Extensible Markup Language）、各印刷機能の複数言語の表示文字列を定義するローカライズリソースDLL（Dynamic Link Library）などの構成ファイル、レンダリング時に描画命令の編集を行う印刷フィルタ、印刷機能の設定の競合を処理する禁則JavaScript（登録商標、以下省略）部などのモジュールから構成されている。
【０００６】
また、印刷設定UI部は、Printer Driver core部から独立したアプリケーションであり、Printer Driver core部から提供されるPrintCapabilitiesと呼ばれる印刷機能情報と、PrintTicketと呼ばれる印刷設定情報とを元にして印刷設定画面の提供を行う。
【０００７】
PrintCapabilitiesはXML形式で記述されており、各印刷機能の定義が行われている。具体的には、PrintCapabilitiesは、単一選択の機能（複数の選択肢の中から１つを選択する機能）の場合には、Feature（機能）、Option（選択肢）、機能や選択肢の表示文字列が記述され、文字列入力を行う機能の場合には、Parameter、最大文字数や最小文字数などの属性、パラメータ名の表示文字列などが記述される。
【０００８】
PrintTicketはXML形式で記述されており、印刷設定情報を保持する。PrintTicketの形式（XMLのエレメント）はPrinter Driver core部で定義される。そして、GPD/PPDファイルで定義された情報を元に、OSが自動でXMLエレメントを追加したり、禁則JavaScript部内の関数でXMLエレメントを追加したりする。また、PrintTicketの内容はPrinter Driver core部でDEVMODE構造体と呼ばれるデータ構造体へ変換される。
【０００９】
このようなVersion4のプリンタドライバモデルに関する技術として、例えば、下記特許文献１には、外部装置と通信ネットワークを介して接続される情報処理装置であって、他の情報処理装置から、当該他の情報処理装置に設定されている表示プログラムの表示形式を示す情報とステータスの種別を示す情報とがともに指定された要求を受信する受信手段と、前記要求に含まれるステータスの種別を示す情報に基づき、当該種別に対応するステータスの値を前記外部装置から取得するステータス取得手段と、前記要求に含まれる表示プログラムの表示形式を示す情報に対応するリソース情報を取得するリソース取得手段と、前記受信手段で受信した要求の応答として、前記リソース取得手段により取得されたリソース情報と前記種別に対応するステータスの値とに従うステータス情報を、前記他の情報処理装置に対して送信する送信手段とを有する情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−０２３０１９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、Version4のプリンタドライバではPrinter Driver core部と印刷設定UI部とは独立しているため、新たに印刷機能を追加する場合は、Printer Driver core部と印刷設定UI部の双方を修正して整合を図る必要があり、簡便に印刷機能を追加することができないという問題がある。
【００１２】
すなわち、上述したようにPrintTicketの形式はPrinter Driver core部で定義されるため、印刷設定UI部でPrintTicketの編集を行って新たな印刷機能を追加したとしても、追加された印刷機能はPrinter Driver core部で認識されず、Printer Driver core部でPrintTicketの内容をDEVMODE構造体に変換する際に破棄されてしまう。
【００１３】
従って、印刷機能を追加するは、Printer Driver core部の修正（Ｃ言語等で記述されたプログラム本体の修正など）が必要になるが、Printer Driver core部を修正するためには、WHCK（Windows Hardware Certification Kit）のログ取りなどが必要になり、多大な工数が発生する。
【００１４】
本発明は、上記問題点に鑑みてなされたものであって、その主たる目的は、簡便に新たな印刷機能を追加することができるプリンタドライバ及びプリンタドライバの印刷機能の追加方法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明の一側面は、印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバであって、前記コンピュータ装置を、印刷機能に関する情報を記述したPrintTicketを生成するPrinter Driver core部、前記PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる印刷設定UI部、として機能させ、前記Printer Driver core部は、前記PrintTicketに、情報を格納するための領域を定義した第１PrintTicketを生成して、前記印刷設定UI部に通知し、前記印刷設定UI部は、前記第１PrintTicketに基づく印刷設定画面で入力された他の印刷機能に関する情報を記述したPrintTicketを生成し、当該PrintTicketを前記第１PrintTicketの前記領域に組み込んだ第２PrintTicketを生成して、前記Printer Driver core部に通知し、前記Printer Driver core部は、前記第２PrintTicketを前記印刷装置が解釈可能な第３PrintTicketに変換することを特徴とする。
【００１６】
本発明の一側面は、印刷装置に印刷を指示するコンピュータ装置で動作するプリンタドライバの印刷機能の追加方法であって、印刷機能に関する情報を記述したPrintTicketを生成する第１ステップと、前記PrintTicketに、情報を格納するための領域を定義して、第１PrintTicketを生成する第２ステップと、前記第１PrintTicketに基づいて印刷設定画面を生成し、当該印刷設定画面を表示部に表示させる第３ステップと、前記印刷設定画面で入力された他の印刷機能に関する情報を記述したPrintTicketを生成し、当該PrintTicketを前記第１PrintTicketの前記領域に組み込んで第２PrintTicketを生成する第４ステップと、前記第２PrintTicketを前記印刷装置が解釈可能な第３PrintTicketに変換する第５ステップと、を実行することを特徴とする。
【発明の効果】
【００１７】
本発明のプリンタドライバ及びプリンタドライバの印刷機能の追加方法によれば、簡便に新たな印刷機能を追加することができる。
【００１８】
その理由は、Printer Driver core部と印刷設定UI部とを備えるプリンタドライバを用いて新たな印刷機能を追加する際、Printer Driver core部は、印刷機能を追加するための領域を定義した第１PrintTicketを生成して印刷設定UI部に送り、印刷設定UI部は新たな印刷機能に関する情報を記述したPrintTicketを生成し、当該PrintTicketを第１PrintTicketの定義された領域に組み込んで第２PrintTicketを生成してPrinter Driver core部に送り、Printer Driver core部は、第２PrintTicketを、印刷装置で解釈可能な第３PrintTicketに変換する制御を行うからである。
【００１９】
また、Printer Driver core部は、印刷機能を追加するための領域を定義した第１PrintTicketを生成して印刷設定UI部に送り、印刷設定UI部は新たな印刷機能に関する情報を記述したPJL（Printer Job Language）コマンドを生成し、当該PJLコマンドを第１PrintTicketの定義された領域に組み込んで第２PrintTicketを生成してPrinter Driver core部に送り、Printer Driver core部は、第２PrintTicketを、印刷装置で解釈可能なPrintTicketに変換する制御を行うからである。
【００２０】
また、Printer Driver core部は、印刷機能を追加するための領域を定義した第１PrintTicketを生成して印刷設定UI部に送り、印刷設定UI部は新たな印刷機能に関する情報を記述した第１PJLコマンドを生成し、当該第１PJLコマンドを第１PrintTicketの定義された領域に組み込んで第２PrintTicketを生成してPrinter Driver core部に送り、Printer Driver core部は、第２PrintTicketを、印刷装置で解釈可能な第２PJLコマンドに変換する制御を行うからである。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施例１に係る印刷システムの構成を模式的に示す図である。
【図２】本発明の実施例１に係るコンピュータ装置の構成を示すブロック図である。
【図３】本発明の実施例１に係るコンピュータ装置の機能を示すブロック図である。
【図４】本発明の実施例１に係るGPDファイルの一例である。
【図５】本発明の実施例１に係るDevModeMap.xmlの一例である。
【図６】本発明の実施例１に係る禁則JavaScript部が実行する処理を記述した構文の一例である。
【図７】本発明の実施例１に係る印刷設定UI部によって表示される印刷設定画面の一例である。
【図８】本発明の実施例１に係るプリンタドライバの処理を示すフローチャート図である。
【図９】本発明の実施例１に係るコンピュータ装置の機能間のデータの流れ（XPS印刷パスの場合）を示すシーケンス図である。
【図１０】本発明の実施例１に係るコンピュータ装置の機能間のデータの流れ（GDI印刷パスの場合）を示すシーケンス図である。
【図１１】本発明の実施例１に係るPrintTicket(0)の一例である。
【図１２】本発明の実施例１に係るPrintTicket(1)の一例（PrintTicket(0)に領域を定義した状態）である。
【図１３】本発明の実施例１に係るPrintTicket(2)の一例（PrintTicket(1)の領域に新たな印刷機能を規定するPrintTicketをCDATA形式で組み込んだ状態）である。
【図１４】本発明の実施例１に係るPrintTicket(3)の一例（PrintTicket(2)を印刷装置で解釈可能に変換した状態）である。
【図１５】本発明の実施例１に係るPrintTicketとDEVMODE構造体の相互変換の一例である。
【図１６】本発明の実施例２に係るプリンタドライバの処理を示すフローチャート図である。
【図１７】本発明の実施例３に係るプリンタドライバの処理を示すフローチャート図である。
【発明を実施するための形態】
【００２２】
背景技術で示したように、ハードウェアメーカーによりWindowsOSに応じたプリンタドライバが提供されており、新たなWindowsOSであるWindows8やServer2012向けに、Version4のプリンタドライバの開発が行われている。このVersion4のプリンタドライバは、Printer Driver core部と印刷設定UI部の２つのレイヤーから構成されており、Printer Driver core部と印刷設定UI部の関係は「V4 Printer Driver White Paper」（http://msdn.microsoft.com/library/windows/hardware/br259124）などに記載されている。
【００２３】
この「V4 Printer Drover White Paper」によれば、印刷設定の定義はPrinter Driver core部（GPD/PPDファイル、JavaScript、Constraints）にて実施し、その結果としてPrintTicket及びPrintCapabilitiesが生成される。そして、Printer Driver core部と印刷設定UI部とのやり取りは、このPrintTicket、PrintCapabilities及びプロパティバッグにて行われる。
【００２４】
そのため、印刷機能の追加は必ずPrinter Driver core部にて行う必要があり、仮に印刷設定UI部でPrintTicketに新たな印刷機能の設定値をノードに追加したとしても、Printer Driver core部にてその印刷機能が定義されていないと、実際の印刷処理を行うまでの過程でPrintTicketに追加された情報が破棄されてしまうため出力には反映されない。すなわち、印刷機能の追加を行う際にはPrinter Driver core部の修正が必要になるが、Printer Driver core部の修正には多大な工数を必要とするため、簡便に印刷機能を追加することができないという問題があった。
【００２５】
上記問題は、Printer Driver core部と印刷設定UI部が別のレイヤーとして構成されるVersion4のプリンタドライバモデルにおいて新たに生じる問題であり、このようなVersion4のプリンタドライバの開発に当たって、上記問題を解決する手法が求められている。
【００２６】
そこで、本発明の一実施の形態では、印刷設定UI部にて印刷機能の追加ができるようにするために、Printer Driver core部でPrintTicketを生成する際に、PrintTicketに印刷機能を追加するための領域を定義する。そして、印刷設定UI部は印刷機能を記述したPrintTicketやPJLを生成し、Printer Driver core部から受け取ったPrintTicketの定義された領域に印刷設定UI部で生成したPrintTicketやPJLを組み込む。その後、Printer Driver core部では、組み込まれたPrintTicketやPJLを解釈し、印刷装置が解釈可能なPrintTicketやPJLに変換し、変換したPrintTicketやPJLを印刷装置に送信して印刷を指示する。
【００２７】
これにより、Printer Driver core部の修正（プログラム本体の修正）を行うことなく、データの追加やJavaScriptの記述の追加によってPrintTicketに情報を格納するための領域を定義するだけで、印刷設定UI部にて新たな印刷機能を追加することができる。
【実施例１】
【００２８】
上記した本発明の実施の形態についてさらに詳細に説明すべく、本発明の実施例１に係るプリンタドライバ及びプリンタドライバの印刷機能の追加方法について、図１乃至図１５を参照して説明する。図１は、本実施例の印刷システムの構成を模式的に示す図であり、図２は、本実施例のコンピュータ装置の構成を示すブロック図、図３は、コンピュータ装置の機能を示すブロック図である。また、図４は、GPDファイルの一例、図５は、DevModeMap.xmlの一例であり、図６は、禁則JavaScript部が実行する処理を記述した構文の一例である。また、図７は、印刷設定画面の一例であり、図８は、本実施例のプリンタドライバの処理を示すフローチャート図、図９及び図１０は、本実施例のコンピュータ装置の機能間のデータの流れを示すシーケンス図である。また、図１１乃至図１４は、PrintTicketの一例であり、図１５は、PrintTicketとDEVMODE構造体の相互変換の一例である。
【００２９】
図１に示すように、本実施例の印刷システムは、印刷指示に従って印刷処理を実行する印刷装置１０と、印刷指示を行う印刷指示装置（コンピュータ装置２０と呼ぶ。）とで構成され、これらはＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）などの通信ネットワークを介して接続されている。
【００３０】
印刷装置１０は、XPS（XML Paper Specification）形式の文書を印刷可能なプリンタやＭＦＰ（Multi Function Peripheral）などであり、コンピュータ装置２０から送信される印刷データを解析し、印刷データの各ページをラスタライズしてページ毎の画像データを生成し、電子写真方式や静電記録方式等の作像プロセスを利用して画像データに基づく画像を用紙に印刷する機能を備えている。
【００３１】
また、コンピュータ装置２０は、パーソナルコンピュータやWindowsOS上で動作するモバイル機器（スマートフォンやタブレット端末）などであり、図２に示すように、制御部２１と、記憶部２２と、通信Ｉ/Ｆ部２３と、表示部２４と、操作部２５などで構成される。
【００３２】
制御部２１は、CPU（Central Processing Unit）２１ａと、ROM（Read Only Memory）２１ｂやRAM（Random Access Memory）２１ｃなどのメモリとで構成される。CPU２１ａは、コンピュータ装置２０の動作を制御するためのプログラム、OS（本実施例では、Version4のプリンタドライバが動作可能なWindowsOS）、アプリケーション、印刷装置１０を制御するプリンタドライバ（本実施例では、Printer Driver core部と印刷設定UI部とが別レイヤーで構成されるVersion4のプリンタドライバ）をROM２１ｂ又は記憶部２２から読み出してRAM２１ｃに展開し実行する。なお、アプリケーション、Printer Driver core部、印刷設定UI部については後述する。
【００３３】
記憶部２２は、HDD（Hard Disk Drive）などで構成され、プログラムや文書データ、印刷データなどを記憶する。
【００３４】
通信Ｉ/Ｆ部２３は、NIC（Network Interface Card）やモデムなどで構成され、無線ネットワークや有線ネットワークを介して、印刷装置１０とのデータ通信を行う。
【００３５】
表示部２４は、LCD（Liquid Crystal Display）などで構成され、アプリケーションの画面や印刷設定UI部で生成された印刷設定画面などを表示する。
【００３６】
操作部２５は、マウスやキーボード、表示部２４上に形成されたタッチセンサなどで構成され、文書の作成や印刷装置１０の印刷機能の設定等の操作を可能にする。
【００３７】
図３は、コンピュータ装置２０の制御部２１の機能を示すブロック図である。コンピュータ装置２０の制御部２１は、アプリケーション３０、Printer Driver core部４０、印刷設定UI部５０などとして機能する。
【００３８】
アプリケーション３０は、OS上で動作するプログラム（例えば、WindowsOS上で動作するMicrosoft Officeなど）であり、印刷対象となる文書データを作成する。
【００３９】
Printer Driver core部４０は、OS上で動作するプログラムであり、アプリケーション３０、印刷設定UI部５０と連動して、印刷装置１０に印刷指示を行う。このPrinter Driver core部４０は、GPDファイル４１、DevModeMap.xml４２、構成処理部４３、禁則JavaScript部４４、レンダリング処理部４５、印刷フィルタ４６などで構成される。
【００４０】
GPDファイル４１は、構成ファイルの一つであり、印刷装置１０の各印刷機能を定義する。DevModeMap.xml４２は、DEVMODE構造体（Microsoft社によって規定された、印刷機能に関する情報を格納するための構造体）のPrivate領域（各プリンタベンダが自由に定義することのできる領域）にデータの保存領域を定義する。構成処理部４３は、GPDファイル４１及びDevModeMap.xml４２を元に、XML形式にてユーザが設定可能な印刷機能の設定項目と設定可能な設定値とが記述されたPrintCapabilities（印刷機能情報）の生成、PrintCapabilitiesに記述されている設定値の中からユーザが選択した設定値を記述したPrintTicket（印刷設定情報）の生成、及び禁則JavaScript部４４の呼び出しを行う。
【００４１】
禁則JavaScript部４４は、PrintTicket/PrintCapabilitiesに対して、印刷機能の設定の競合を処理する。例えば、第１の機能（面付け機能など）の設定と第２の機能（パンチの機能など）の設定とが両立しない場合に、一方の機能の設定を他方の機能の設定と両立するように変更する。また、禁則JavaScript部４４は、JavaScriptを用いたPrintTicket/PrintCapabilitiesの編集を可能にする。レンダリング処理部４５は、アプリケーション３０からの印刷命令を印刷装置１０にて解釈可能な言語に変換する。印刷フィルタ４６は、レンダリング時に描画命令や印刷制御コマンドの編集を行う。例えば、定義された領域に印刷機能が文字列で追加されたPrintTicketを印刷装置１０が解釈可能なPrintTicketに編集する。
【００４２】
印刷設定UI部５０は、OS上で動作するプログラムであり、PT/PC処理部５１、双方向通信処理部５２、UI処理部５３などで構成される。
【００４３】
PT/PC処理部５１は、Printer Driver core部４０から取得したPrintTicket/PrintCapabilitiesを処理（解釈）する。また、PT/PC処理部５１は、印刷設定画面６０で設定された情報に基づいて印刷機能を規定するPrintTicketを生成し、Printer Driver core部４０から取得したPrintTicketに、生成したPrintTicketを組み込んでPrinter Driver core部４０に返す。双方向通信処理部５２は、印刷装置１０と双方向通信を行い、印刷装置１０の能力情報の取得を行う。UI処理部５３は、PT/PC処理部５１が解釈した、PrintTicket/PrintCapabilitiesの内容や双方向通信で取得した能力情報を元に印刷設定画面６０の生成及び表示部２４への表示を行う。
【００４４】
なお、本実施例では、印刷機能を定義する構成ファイルとしてGPDファイル４１を使用する場合について説明するが、PPDファイルを使用する場合についても、本実施例の印刷機能の追加方法を同様に適用することができる。
【００４５】
以下、どのように機能を定義するかについて、データの具体的な記述例を参照して説明する。
【００４６】
図４は、GPDファイル４１の一例である。図中の「*Feature:」にて、印刷機能の定義を行う。また、「*Feature:」の下位要素の「*Option:」にて、各印刷機能の設定値の定義を行う。この例では、Orientation、PaperSizeの印刷設定の定義を行っている。
【００４７】
図５は、DevModeMap.xml４２の一例である。この例では、「<Property Name="JobPTExtra">」、「<String Length="2048"></String>」にて領域の定義を行っている。ここでは、識別子はJobPTExtra、データ型は文字列型、サイズは2048文字の領域を定義している。なお、Propertyエレメントを追加することで複数の領域を定義することが可能である。
【００４８】
図６は、禁則JavaScript部４４が実行する処理を記述した構文の一例である。convertPrintTicketToDevMode関数は、図１５に示す「PrintTicketとDEVMODE構造体の相互変換」において、PrintTicketの「ParameterInit:JobPTExtra」の「Value」の値をDEVMODE構造体のPrivate(2)の「JobPTExtra」に設定する処理を行う。また、convertDevModeToPrintTicket関数は、PrintTicketにJobPTExtraのノードの追加を行っている。この処理によって、図１１に示すPrintTicket(0)に、<psf:ParameterInit name="ns0000:JobPTExtra">〜</psf:ParameterInit>のノードが追加され、図１２に示すPrintTicket(1)が生成される（図の破線枠内参照）。また、convertDevModeToPrintTicket関数は、図１５に示す「PrintTicketとDEVMODE構造体の相互変換」において、DEVMODE構造体のPrivate(2)の「JobPTExtra」の値をPrintTicketの「ParameterInit:JobPTExtra」の「Value」に設定する処理を行う。
【００４９】
図７は、印刷設定画面６０の一例である。ここでは、印刷設定UI部５０にて追加する印刷機能である「ユーザＩＤ」、「パスワード」の欄が設けられている。これらの欄の設定内容に従って、PT/PC処理部５１は印刷制御コマンドとしてPrintTicketを生成し、生成したPrintTicketを、図１２に示すPrintTicket(1)の「ParameterInit:JobPTExtra」の「Value」、すなわち<psf:Value xsi:type="xsd:string">と</psf:Value>の間にCDATA形式で追加（「<![CDATA〜]]>」を追加）し、図１３に示すPrintTicket(2)を生成する（図の破線枠内参照）。
【００５０】
そして、図１３に示すPrintTicket(2)は、Printer Driver core部４０（印刷フィルタ４６）によって印刷装置１０が解釈可能なPrintTicket（図１４に示すPrintTicket(3)、図の破線枠内参照）に変換され、このPrintTicket(3)により印刷装置１０に対して印刷指示が行われる。
【００５１】
以下、本実施例のコンピュータ装置２０の処理（XPS印刷パス）について説明する。CPU２１ａは、ROM２１ｂ又は記憶部２２に記憶したプリンタドライバをRAM２１ｃに展開して実行することにより、図８のフローチャート図及び図９のシーケンス図に示す各処理を実行する。なお、図９は、アプリケーション３０とプリンタドライバ（Printer Driver core部４０）とがXPS形式でやり取りを行う場合の例である。
【００５２】
まず、アプリケーション３０は、Printer Driver core部４０に対して、図９の「1.PrintTicket取得」の要求を行う。Printer Driver core部４０（構成処理部４３）は、図９の「1.1.PrintTicket生成」において、GPDファイルの定義を元に、図１１に示すPrintTicket(0)を生成する（図８のＳ１０１）。そして、Printer Driver core部４０（禁則JavaScript部４４）は、図９の「1.2.PrintTicketにJobPTExtra追加」処理において、DevModeMap.xml４２の記述に基づき、convertDevModeToPrintTicket関数により、PrintTicket(0)に、<psf:ParameterInit name="ns0000:JobPTExtra">〜</psf:ParameterInit>のノード追加処理を行い、図１２に示すPrintTicket(1)を生成する（図８のＳ１０２）。そして、生成したPrintTicket(1)をアプリケーション３０に通知する。
【００５３】
次に、アプリケーション３０は、図９の「2.印刷設定」を行う際に、予め取得したPrintTicket(1)を引数として印刷設定UIの表示を指示する。印刷設定UI部５０（PT/PC処理部５１）は、PrintTicket(1)を解釈し、印刷設定UI部５０（双方向通信処理部５２）は、印刷装置１０本体と双方向通信を行って、「2.1.1.装置情報取得」を行う。これによって印刷装置１０本体が持つ能力情報の取得を行う。
【００５４】
次に、図９の「2.1.2.UI表示」にて、印刷設定UI部５０（UI処理部５３）は、PT/PC処理部５１）が」解釈したPrintTicket(1)と双方向通信処理部５２が取得した印刷装置１０の能力情報とに基づいて、図７に示す印刷設定UI画面４０を表示部２４に表示し、ユーザに印刷設定を行わせる。そして、ユーザによる印刷設定が完了すると、PrintTicketの更新を行う。その際に、印刷設定UI部５０（PT/PC処理部５１）は、印刷設定UI画面４０の設定内容に従って、追加した印刷機能に関する情報を記述したPrintTicketを生成し（図８のＳ１０３）、図９の「2.1.3.JobPTExtraのValueに値を設定」処理において、図１２のPrintTicket(1)の「ParameterInit:JobPTExtra」の「Value」に、生成したPrintTicketをCDATA形式で追加（マークアップの記号ではなく文字として追加）し、図１３のPrintTicket(2)を生成する（図８のＳ１０４）。このPrintTicket(2)の状態では、追加した印刷機能のPrintTicket内の<psf:ParameterInit name="ns0000:AuthUserID">〜</psf:ParameterInit>、<psf:ParameterInit name="ns0000:AuthPassword">〜</psf:ParameterInit>は文字列要素に設定された文字列という扱いになるため、印刷装置１０にて解釈が不能な状態である。その後、PrintTicket(2)はPrinter Driver core部４０を経由してアプリケーション３０に返却される。
【００５５】
次に、アプリケーション３０は、図９の「3.印刷」を行う際に、引数としてPrintTicket(2)とXPS形式の描画データをPrinter Driver core部４０に渡す。Printer Driver core部４０（印刷フィルタ４６）は、図９の「3.1のJobPTExtraのValueをPTに追加」処理において、図１３のPrintTicket(2)の「ParameterInit:JobPTExtra」の「Value」にCDATA形式で設定されている情報を、印刷装置１０が解釈可能なPrintTicketとして読み込み、PrintTicketのルートレベルに移動し、PrintTicket(2)の<psf:ParameterInit name="ns0000:JobPTExtra">以下のノードを削除し、読み込んだPrintTicketを書き込むといった処理を行って、図１３に示すPrintTicket(3)に変換する（図８のＳ１０５）。このPrintTicket(3)では、追加した印刷機能のPrintTicket内の<psf:ParameterInit name="ns0000:AuthUserID">〜</psf:ParameterInit>、<psf:ParameterInit name="ns0000:AuthPassword">〜</psf:ParameterInit>は印刷装置１０にて解釈可能な状態となる。
【００５６】
その後、図９の「3.2.印刷」処理にてPrintTicket(3)とXPS形式の描画データが印刷装置１０に送信され、印刷装置１０にて印刷機能を追加したPrintTicket(3)が解釈されて出力される。
【００５７】
なお、図９では、アプリケーション３０とプリンタドライバ（Printer Driver core部４０）とがXPS形式でやり取りを行う場合（XPS印刷パス）を示したが、図１０に示すようにアプリケーション３０とプリンタドライバ（Printer Driver core部４０）とがGDI（Graphics device interface：WindowsOSに搭載されているグラフィックス処理を行うプログラム）を介してやり取りを行うこともできる。この場合の基本的な処理の流れは図９のXPS印刷パスと同様であるが、図１０のGDI印刷パスの場合には、アプリケーション３０とPrinter Driver core部４０とのやり取りに際して、PrintTicketではなくWindowsOSが利用可能なDEVMODE構造体で処理を行う必要があるため、「PrintTicket to DEVMODE処理」、「DEVMODE to PrintTicket処理」が追加される。
【００５８】
具体的には、図１０の「1.2.PrintTicketにJobPTExtra追加」処理の後に、Printer Driver core部４０（禁則JavaScript部４４）によって「1.3.PrintTicket to DEVMODE」処理が行われ、アプリケーション３０には、PrintTicket(1)ではなくPrintTicket(1)をDEVMODE構造体に変換したDEVMODE(1)を通知する。また、「2.印刷設定」処理に際して、Printer Driver core部４０（禁則JavaScript部４４）によって「2.1.DEVMODE to PrintTicket」処理が行われ、印刷設定UI部５０には、PrintTicket(1)が通知される。
【００５９】
同様に、「2.2.3.JobPTExtraのValueに値を設定」処理の後に、Printer Driver core部４０（禁則JavaScript部４４）によって「2.3.PrintTicket to DEVMODE」処理が行われ、アプリケーション３０には、PrintTicket(2)ではなくPrintTicket(2)をDEVMODE構造体に変換したDEVMODE(2)を通知する。また、「3.印刷」処理に際して、Printer Driver core部４０（禁則JavaScript部４４）によって「3.1.DEVMODE to PrintTicket」処理が行われ、DEVMODE構造体をPrintTicket(2)に変換した後、「3.2.JobPTExtraのValueをPTに追加」処理が行われ、印刷装置１０には、PrintTicket(3)が通知される。
【００６０】
図１４は、上述したPrintTicketとDEVMODE構造体の相互変換の概略を示している。DEVMODE構造体は、Microsoft社が構造を定義する各ベンダー共通のPublic部と、ベンダーが独自に構造を定義できるPrivate部に分かれる。GPDファイルにて定義した内容によって、DEVMODE構造体のPublic部及びPrivate(1)部に領域が自動で確保される。また、DevModeMap.xml４２の定義を元に、Private(2)部に領域が確保される。
【００６１】
そして、相互変換においては、PrintTicketとDEVMODE構造体のPublic部及びPrivate(1)部の間での相互変換は自動で行われる。Private(2)部とPrintTicketの相互変換は、禁則JavaScript部４４のconvertPrintTicketToDevMode関数及びconvertDevModeToPrintTicket関数にて変換が行われる。
【００６２】
以上説明したように、新たな印刷機能を追加する場合、Printer Driver core部４０は、印刷機能を追加するための領域を定義したPrintTicket(1)を生成して印刷設定UI部５０に送り、印刷設定UI部５０は新たな印刷機能に関する情報を記述したPrintTicketを生成し、PrintTicket(1)の定義された領域に生成したPrintTicketを組み込んでPrintTicket(2)を生成してPrinter Driver core部４０に送り、Printer Driver core部４０は、PrintTicket(2)を印刷装置１０で解釈可能なPrintTicket(3)に変換して印刷装置１０に送信する制御を行うことにより、簡便に新たな印刷機能を追加することができるようになる。
【実施例２】
【００６３】
次に、本発明の実施例２に係るプリンタドライバ及びプリンタドライバの印刷機能の追加方法について、図１６を参照して説明する。図１６は、本実施例のプリンタドライバの処理を示すフローチャート図である。
【００６４】
なお、本実施例の印刷システムの基本構成は前記した実施例１と同様であるが、本実施例では、印刷設定UI部５０のPT/PC処理部５１は、新たな印刷機能をPCL（Printer Control Language）やPS（Post Script：アドビシステムが開発したページ記述言語）などのPJLコマンドで記述し、PrintTicketの定義された領域に印刷制御コマンドとしてPJLコマンドを組み込み、Printer Driver core部４０は、PJLコマンドを組み込んだPrintTicketを印刷装置１０で解釈可能なPrintTicketに変換することを特徴とする。
【００６５】
以下、本実施例のコンピュータ装置２０の処理について説明する。CPU２１ａは、ROM２１ｂ又は記憶部２２に記憶したプリンタドライバをRAM２１ｃに展開して実行することにより、図１６のフローチャート図に示す各処理を実行する。
【００６６】
まず、アプリケーション３０は、Printer Driver core部４０に対してPrintTicket取得要求を行う。Printer Driver core部４０（構成処理部４３）は、GPDファイルの定義を元に、PrintTicket(0)（図１１参照）を生成する（図１６のＳ２０１）。そして、Printer Driver core部４０（禁則JavaScript部４４）は、DevModeMap.xml４２の記述に基づき、convertDevModeToPrintTicket関数により、PrintTicket(0)にノード追加処理を行い、PrintTicket(1)（図１２参照）を生成する（図１６のＳ２０２）。そして、生成したPrintTicket(1)をアプリケーション３０に通知する。
【００６７】
次に、アプリケーション３０は、PrintTicket(1)を引数として印刷設定UIの表示を指示する。印刷設定UI部５０（PT/PC処理部５１）は、PrintTicket(1)を解釈し、印刷設定UI部５０（双方向通信処理部５２）は、印刷装置１０本体と双方向通信を行って、印刷装置１０本体が持つ能力情報の取得を行う。そして、印刷設定UI部５０（UI処理部５３）は、印刷設定UI画面４０（図７参照）を表示部２４に表示し、ユーザに印刷設定を行わせる。ユーザによる設定が完了すると、印刷設定UI部５０（PT/PC処理部５１）は、印刷設定UI画面４０の設定内容に従って、追加した印刷機能を規定するPJLコマンドを生成し（図１６のＳ２０３）、PrintTicket(1)に生成したPJLコマンドを組み込む（図１６のＳ２０４）。その後、PJLコマンドを組み込んだPrintTicket(1)はPrinter Driver core部４０を経由してアプリケーション３０に返却される。
【００６８】
次に、アプリケーション３０は、PJLコマンドを組み込んだPrintTicket(1)とXPS形式の描画データを引数として印刷を指示する。Printer Driver core部４０（印刷フィルタ４６）は、PJLコマンドを組み込んだPrintTicket(1)を読み込み、印刷装置１０にて解釈可能なPrintTicketに変換する（図１６のＳ２０５）。その後、Printer Driver core部４０からそのPrintTicketと描画データが印刷装置１０に送信され、印刷装置１０にて印刷機能を追加したPrintTicketが解釈されて出力される。
【００６９】
このように、印刷設定UI部５０が追加した印刷機能を規定する印刷制御コマンドとしてPJLコマンドを生成し、Printer Driver core部４０がPJLコマンドを組み込んだPrintTicketを印刷装置１０が解釈可能なPrintTicketに変換することによっても、実施例１と同様に、簡便に新たな印刷機能を追加することができる。
【００７０】
本実施例においても、印刷機能を定義する構成ファイルとしてGPDファイル４１に代えてPPDファイルを使用することができる。また、アプリケーション３０とプリンタドライバ（Printer Driver core部４０）とがGDIを介してやり取りを行うこともでき、この場合は、実施例１と同様に「PrintTicket to DEVMODE処理」、「DEVMODE to PrintTicket処理」を追加して、PrintTicketとDEVMODE構造体の相互変換を行えばよい。
【実施例３】
【００７１】
次に、本発明の実施例３に係るプリンタドライバ及びプリンタドライバの印刷機能の追加方法について、図１７を参照して説明する。図１７は、本実施例のプリンタドライバの処理を示すフローチャート図である。
【００７２】
なお、本実施例の印刷システムの基本構成も前記した実施例１と同様であるが、本実施例では、印刷装置１０は、XPS形式の印刷データを処理する機能を持たず、PJLで記述された印刷データを処理可能であるとし、印刷設定UI部５０のPT/PC処理部５１は、新たな印刷機能を規定するPJLコマンドを生成し、PrintTicketにPJLコマンドを組み込み、Printer Driver core部４０は、PJLコマンドが組み込まれたPrintTicketを印刷装置１０で処理可能なPJLコマンドに変換することを特徴とする。
【００７３】
以下、本実施例のコンピュータ装置２０の処理について説明する。CPU２１ａは、ROM２１ｂ又は記憶部２２に記憶したプリンタドライバをRAM２１ｃに展開して実行することにより、図１７のフローチャート図に示す各処理を実行する。
【００７４】
まず、アプリケーション３０は、Printer Driver core部４０に対してPrintTicket取得要求を行う。Printer Driver core部４０（構成処理部４３）は、GPDファイルの定義を元に、PrintTicket(0)（図１１参照）を生成する（図１７のＳ３０１）。そして、Printer Driver core部４０（禁則JavaScript部４４）は、DevModeMap.xml４２の記述に基づき、convertDevModeToPrintTicket関数により、PrintTicket(0)にノード追加処理を行い、PrintTicket(1)（図１２参照）を生成する（図１７のＳ３０２）。そして、生成したPrintTicket(1)をアプリケーション３０に通知する。
【００７５】
次に、アプリケーション３０は、PrintTicket(1)を引数として印刷設定UIの表示を指示する。印刷設定UI部５０（PT/PC処理部５１）は、PrintTicket(1)を解釈し、印刷設定UI部５０（双方向通信処理部５２）は、印刷装置１０本体と双方向通信を行って、印刷装置１０本体が持つ能力情報の取得を行う。そして、印刷設定UI部５０（UI処理部５３）は、印刷設定UI画面４０（図７参照）を表示部２４に表示し、ユーザに印刷設定を行わせる。ユーザによる設定が完了すると、印刷設定UI部５０（PT/PC処理部５１）は、印刷設定UI画面４０の設定内容に従って、追加した印刷機能を規定するPJLコマンド（PJL(1)コマンドとする。）を生成し（図１７のＳ３０３）、PrintTicket(1)に生成したPJL(1)コマンドを組み込む（図１７のＳ３０４）。その後、PJL(1)コマンドを組み込んだPrintTicket(1)はPrinter Driver core部４０を経由してアプリケーション３０に返却される。
【００７６】
次に、アプリケーション３０は、PJL(1)コマンドを組み込んだPrintTicket(1)と描画データを引数として印刷を指示する。Printer Driver core部４０（印刷フィルタ４６）は、PJL(1)コマンドを組み込んだPrintTicket(1)を読み込み、印刷装置１０にて解釈可能なPJLコマンド（PJL(2)コマンドとする。）を生成する（図１７のＳ３０５）。その後、Printer Driver core部４０からPJL(2)コマンドと描画データが印刷装置１０に送信され、印刷装置１０にて印刷機能を追加したPJL(2)コマンドが解釈されて出力される。
【００７７】
このように、印刷設定UI部５０が追加した印刷機能を規定する印刷制御コマンドとしてPJLコマンドを生成し、Printer Driver core部４０がPJLコマンドを組み込んだPrintTicketを印刷装置１０が解釈可能なPJLコマンドに変換することによっても、実施例１と同様に、簡便に新たな印刷機能を追加することができる。
【００７８】
本実施例においても、印刷機能を定義する構成ファイルとしてGPDファイル４１に代えてPPDファイルを使用することができる。また、アプリケーション３０とプリンタドライバ（Printer Driver core部４０）とがGDIを介してやり取りを行うこともでき、この場合は、実施例１と同様に「PrintTicket to DEVMODE処理」、「DEVMODE to PrintTicket処理」を追加して、PrintTicketとDEVMODE構造体の相互変換を行えばよい。
【００７９】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨を逸脱しない限りにおいて、プリンタドライバの構成や印刷機能の追加方法は適宜変更可能である。
【産業上の利用可能性】
【００８０】
本発明は、WindowsOS上で動作するプリンタドライバ、特に、Version4のプリンタドライバ及び当該プリンタドライバを記録した記録媒体並びに当該プリンタドライバを用いた機能追加方法に利用可能である。
【符号の説明】
【００８１】
１０  印刷装置
２０  コンピュータ装置
２１  制御部
２１ａ  CPU
２１ｂ  ROM
２１ｃ  RAM
２２  記憶部
２３  通信I/F部
２４  表示部
２５  操作部
３０  アプリケーション
４０  Printer Driver core部
４１  GPDファイル
４２  DevModeMap.xml
４３  構成処理部
４４  禁則JavaScript部
４５  レンダリング処理部
４６  印刷フィルタ
５０  印刷設定UI部
５１  PT/PC処理部
５２  双方向通信制御部
５３  UI処理部
６０  印刷設定画面
【図１】
2015090634.tif 000003
【図２】
2015090634.tif 000004
【図３】
2015090634.tif 000005
【図４】
2015090634.tif 000006
【図５】
2015090634.tif 000007
【図６】
2015090634.tif 000008
【図７】
2015090634.tif 000009
【図８】
2015090634.tif 000010
【図９】
2015090634.tif 000011
【図１０】
2015090634.tif 000012
【図１１】
2015090634.tif 000013
【図１２】
2015090634.tif 000014
【図１３】
2015090634.tif 000015
【図１４】
2015090634.tif 000016
【図１５】
2015090634.tif 000017
【図１６】
2015090634.tif 000018
【図１７】
2015090634.tif 000019