(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-10
(45)【発行日】2024-05-20
(54)【発明の名称】プログラム、情報処理装置、及び情報処理装置の制御方法
(51)【国際特許分類】
G06F 3/12 20060101AFI20240513BHJP
【FI】
G06F3/12 308
G06F3/12 328
(21)【出願番号】P 2022188909
(22)【出願日】2022-11-28
(62)【分割の表示】P 2018172655の分割
【原出願日】2018-09-14
【審査請求日】2022-12-23
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】中川 雅司
【審査官】松浦 かおり
(56)【参考文献】
【文献】特開2015-114764(JP,A)
【文献】特開2018-120475(JP,A)
【文献】特開2018-081533(JP,A)
【文献】特開2016-054359(JP,A)
【文献】特開2014-241118(JP,A)
【文献】特開2015-230711(JP,A)
【文献】特開2016-058041(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/09- 3/12
B41J 5/00- 5/52
B41J 21/00-21/18
B41J 29/00-29/70
G03G 13/34
G03G 15/00
G03G 15/36
G03G 21/00-21/02
G03G 21/14
G03G 21/20
H04N 1/00
(57)【特許請求の範囲】
【請求項1】
複数の印刷装置に対応するプリンタドライバを有するコンピュータで利用されるプログラムであって、前記プリンタドライバとは異なり、かつ、前記プリンタドライバには含まれないプログラムであって、
情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが第1の形式に変換した印刷データの形式を、第1の印刷装置に対応する第1の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第1の印刷装置に対応する拡張情報に基づいて、前記第1の印刷装置で解釈可能な第2の形式に変換する
第1の工程と、
前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが前記第1の形式に変換した印刷データの形式を、
前記第1の印刷装置とは異なる第2の印刷装置に対応する第2の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第2の印刷装置に対応する拡張情報に基づいて、前記第2の印刷装置で解釈可能
であり、前記第2の形式とは異なる第3の形式に変換する
第2の工程とを前記情報処理装置のコンピュータに実行させることを特徴とするプログラム。
【請求項2】
前記第1の印刷装置が選択された場合に、前記印刷データの形式は前記第2の形式に変換され、前記第2の印刷装置が選択された場合に、前記印刷データの形式は前記第3の形式に変換されることを特徴とする請求項1に記載のプログラム。
【請求項3】
第3の印刷装置に対応する拡張情報が前記情報処理装置に記憶されていない場合に、前記印刷データの形式を前記第1の形式から変換することなく前記第1の形式の印刷データが前記第3の印刷装置に送信されることを特徴とする請求項1又は2に記載のプログラム。
【請求項4】
前記第1の形式の印刷データは、Internet Printing Protocolに従った印刷データであることを特徴とする請求項1乃至3のいずれか1項に記載のプログラム。
【請求項5】
前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバに前記第1の形式に変換させる第3の工程を前記情報処理装置にさらに実行させることを特徴とする請求項1乃至4のいずれか1項に記載のプログラム。
【請求項6】
前記第1の印刷装置の拡張情報はPDF形式の前記印刷データを前記第
2の形式の印刷データにレンダリングするための方法に関する情報であることを特徴とする請求項1乃至5のいずれか1項に記載のプログラム。
【請求項7】
前記他の印刷設定値は前記印刷データを
、前記印刷データを受信する印刷装置に記憶するための機能に関する設定値であることを特徴とする請求項1乃至6のいずれか1項に記載のプログラム。
【請求項8】
前記印刷設定値はステイプルを用いずにシートを綴じるための機能に関する設定値であることを特徴とする請求項1乃至6のいずれか1項に記載のプログラム。
【請求項9】
前記プログラムは拡張プリンタドライバであることを特徴とする請求項1乃至8のいずれか1項に記載のプログラム。
【請求項10】
前記第1の印刷装置と前記第2の印刷装置は、製造元が異なることを特徴とする請求項1乃至9のいずれか1項に記載のプログラム。
【請求項11】
前記第1の形式はXPSであり、前記第2の形式はPCLであることを特徴とする請求項1乃至10のいずれか1項に記載のプログラム。
【請求項12】
請求項1乃至
11の何れか1項に記載のプログラムを記憶した、コンピュータ読取可能な記憶媒体。
【請求項13】
複数の印刷装置に対応するプリンタドライバを有し、前記プリンタドライバとは異なり、かつ、前記プリンタドライバには含まれないプログラムを有する情報処理装置であって、
前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが第1の形式に変換した印刷データの形式を、第1の印刷装置に対応する第1の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第1の印刷装置に対応する拡張情報に基づいて、前記第1の印刷装置で解釈可能な第2の形式に変換する
第1の変換手段と、
前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが前記第1の形式に変換した印刷データの形式を、
前記第1の印刷装置とは異なる第2の印刷装置に対応する第2の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第2の印刷装置に対応する拡張情報に基づいて、前記第2の印刷装置で解釈可能
であり、前記第2の形式とは異なる第3の形式に変換する
第2の変換手段とを有することを特徴とする情報処理装置。
【請求項14】
複数の印刷装置に対応するプリンタドライバを有する情報処理装置であって、前記プリンタドライバとは異なり、かつ、前記プリンタドライバには含まれないプログラムを実行することにより行われる情報処理装置の制御方法であって、
前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが第1の形式に変換した印刷データの形式を、第1の印刷装置に対応する第1の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第1の印刷装置に対応する拡張情報に基づいて、前記第1の印刷装置で解釈可能な第2の形式に変換する
第1の工程と、
前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが前記第1の形式に変換した印刷データの形式を、
前記第1の印刷装置とは異なる第2の印刷装置に対応する第2の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第2の印刷装置に対応する拡張情報に基づいて、前記第2の印刷装置で解釈可能
であり、前記第2の形式とは異なる第3の形式に変換する
第2の工程とを有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
印刷命令を生成するプログラム、情報処理装置、及び情報処理装置の制御方法に関する。
【背景技術】
【0002】
プリンタドライバを利用し、印刷装置に対して印刷ジョブを送信する構成が一般に知られている。情報処理装置には、基本ソフトウェアであるオペレーティングシステム(OS)がインストールされており、プリンタドライバはそのOSの規定するプリントアーキテクチャに従って構成され、OSから呼び出されて動作する。印刷装置を提供するベンダは、OSの仕様に適合するプリンタドライバを提供する。OSとプリンタドライバは、協働して出力先の印刷装置を用いて印刷を行う機能を実現する。
【0003】
ところで、OSとしてMicrosoft(登録商標)のWindows(登録商標)8.1以降のバージョンを利用する場合のプリンタドライバとして、V4プリンタドライバと呼ばれるアーキテクチャが登場している。V4プリンタドライバでは、印刷装置を提供するベンダが、プリンタドライバの機能を補助するための専用のアプリケーションを提供することができる。このアプリケーションはUWP Device Apps(Universal Windows Platform Device Apps)と呼ばれる。UWP Device Appsは、ストアアプリケーション(WindowsストアアプリケーションもしくはWSA)から取得して、情報処理装置にインストールすることができる。また、V4プリンタドライバには、ベンダ独自の印刷設定を行うための印刷設定アプリケーションであるPrinterExtensionを紐付けることができる。
【0004】
また、従来、機能が異なる複数種類の印刷装置を制御するためのプリンタドライバとしてユニバーサルプリンタドライバと称されるプリンタドライバが知られている(特許文献1)。当該プリンタドライバでは、モデル毎に個々の印刷装置に適切な描画データに加工して印刷ジョブを生成することができる。
【0005】
特許文献1に開示されているようなユニバーサルプリンタドライバは、ベンダ毎に提供されることが一般的である。従って、同じベンダが提供している複数種類の印刷装置については、1つのユニバーサルプリンタドライバで対応することができた。しかしながら、異なるベンダが提供する印刷装置に1つのユニバーサルプリンタドライバで対応することは困難であった。ユニバーサルプリンタドライバがサポートするPDL(Page Description Language)の形式は1種類、多くても2種類である。一方、各ベンダがサポートするPDLの形式はベンダ独自に進化してきたものであり、印刷装置の特色を最大限に発揮できるような形式になっているため多種多様である。中には特定のPDLのデータ形式しか受け付けない印刷装置もあり、それ以外のデータ形式を送信してしまうと、エラーが発生したり、指示と異なるデータを印刷したりしてしまう場合がある。
【0006】
そこで、IPP Everywhere(登録商標)(非特許文献1)などに代表されるIPP(Internet Printing Protocol)に準拠する仕組みの使用が検討されている。すなわちIPPを利用した共通のプリンタドライバやプリントクライアントを提供することが考えられている。IPP Everywhereは、ベンダの違い等によらず、様々な印刷装置において印刷を可能とするための印刷プロトコルである。
【0007】
例えば、Ubuntu(登録商標)17.04では、OSのデフォルト機能として、IPP Everywhere(登録商標)に対応する印刷装置に対して印刷ジョブを送信する仕組みが搭載されている。
【先行技術文献】
【特許文献】
【0008】
【非特許文献】
【0009】
【文献】IPP Everywhere Candidate Standard 5100.14-2013, The Printer Working Group https://ftp.pwg.org/pub/pwg/candidates/cs-ippeve10-20130128-5100.14.pdf
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、IPP等の印刷プロトコルに準拠する共通のプリンタドライバでは、ベンダが独自に提供する機能を利用することができない。あるいは、ベンダ独自のPDLのデータを正しく出力できないという課題がある。
【0011】
そこで本発明は、情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従ってプリンタドライバが第1の形式に変換した印刷データの形式を第1の印刷装置に対応する第1の印刷設定画面から受け付けた、印刷設定画面を介して設定できない他の印刷設定値と、第1の印刷装置に対応する拡張情報に基づいて、第1の印刷装置で解釈可能な第2の形式に変換することができ、また、情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従ってプリンタドライバが第1の形式に変換した印刷データの形式を第2の印刷装置に対応する第2の印刷設定画面から受け付けた、印刷設定画面を介して設定できない他の印刷設定値と、第1の印刷装置とは異なる第2の印刷装置に対応する拡張情報に基づいて、第2の印刷装置で解釈可能であり、前記第2の形式とは異なる第3の形式に変換することができる仕組みを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明に係るプログラムは以下の構成を有する。すなわち、複数の印刷装置に対応するプリンタドライバを有するコンピュータで利用されるプログラムであって、前記プリンタドライバとは異なり、かつ、前記プリンタドライバには含まれないプログラムであって、情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが第1の形式に変換した印刷データの形式を、第1の印刷装置に対応する第1の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第1の印刷装置に対応する拡張情報に基づいて、前記第1の印刷装置で解釈可能な第2の形式に変換する第1の工程と、前記情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従って前記プリンタドライバが前記第1の形式に変換した印刷データの形式を、前記第1の印刷装置とは異なる第2の印刷装置に対応する第2の印刷設定画面から受け付けた、前記印刷設定画面を介して設定できない他の印刷設定値と、前記第2の印刷装置に対応する拡張情報に基づいて、前記第2の印刷装置で解釈可能であり、前記第2の形式とは異なる第3の形式に変換する第2の工程とを前記情報処理装置のコンピュータに実行させることを特徴とする。
【発明の効果】
【0013】
上記の構成によれば、情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従ってプリンタドライバが第1の形式に変換した印刷データの形式を第1の印刷装置に対応する第1の印刷設定画面から受け付けた、印刷設定画面を介して設定できない他の印刷設定値と、第1の印刷装置に対応する拡張情報に基づいて、第1の印刷装置で解釈可能な第2の形式に変換することができ、また、情報処理装置のオペレーティングシステムによって提供される印刷設定画面を介して設定された印刷設定値に従ってプリンタドライバが第1の形式に変換した印刷データの形式を第2の印刷装置に対応する第2の印刷設定画面から受け付けた、印刷設定画面を介して設定できない他の印刷設定値と、第1の印刷装置とは異なる第2の印刷装置に対応する拡張情報に基づいて、第2の印刷装置で解釈可能であり、前記第2の形式とは異なる第3の形式に変換することができる。
【図面の簡単な説明】
【0014】
【
図2】コンピュータ100のハードウェア構成の一例を示す図である。
【
図3(a)】コンピュータ100のソフトウェア構成の一例を示す図である。
【
図3(b)】コンピュータ100のドライバのソフトウェア構成の詳細を示す図である。
【
図3(c)】コンピュータ100のソフトウェア構成の詳細を示す図である。
【
図4】(a)から(c)フィルタパイプラインコンフィグ400の一例を示す図である。
【
図5】第1の実施形態におけるベンダ拡張INFパッケージのインストール処理手順を説明するフローチャートである。
【
図6】ベンダ拡張INFパッケージの一例を説明する図である。
【
図7】第1の実施形態における印刷命令生成処理を説明するフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための実施形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせのすべてが発明の解決手段に必須のものとは限らない。
【0016】
<第1の実施形態>
まず
図1を用いて、本実施形態に係る印刷システムの構成を説明する。本実施形態に係る印刷システムは、コンピュータ100、プリンタ200a~cを含む。ネットワーク300上には、コンピュータ100、プリンタ200a~cが互いに通信可能に接続されている。なお、デバイス間の通信の形態は無線ネットワークを介した通信であってもよいし、有線ネットワークを介した通信であってもよい。また、無線ネットワークを介した通信の場合、IEEE802.11に準拠するアクセスポイントを介した無線通信であってもよいし、Wi-Fi Direct(登録商標)などの直接無線通信であってもよい。また、本実施形態では、印刷システムの一例として上記の構成を説明するが、これに限定されるものではない。1つ以上の通信装置と印刷とがネットワークを介して通信可能に接続されていればよい。
【0017】
本実施形態では印刷ジョブを受信してシートに画像を印刷する印刷装置の一例として単機能のプリンタ200a~cを説明するが、これに限定されるものではない。印刷機能とスキャン機能を有するMFP(Multi Function Peripheral)などの装置であってもよい。
【0018】
本実施形態では、プリンタ200a~cは異なるベンダにより製造されている例について説明する。プリンタ200a~cは、IPP(Internet Printing Protocol)に則する印刷ジョブ(印刷命令)をコンピュータ100から受信し、当該印刷ジョブに基づいてシートに画像を印刷する。
【0019】
また、プリンタ200a~cはIPPとは異なる形式の印刷ジョブを受信し、解釈する機能も有している。例えば、プリンタ200aは、LIPS(登録商標、LBP Image Processing System)形式に則するPDL(Page Description Language)データを含む印刷ジョブを解釈することができる。更に、プリンタ200aは、PCL(登録商標、Printer Command Language)形式に則するPDLデータを含む印刷ジョブを解釈することができる。なお、LIPS形式は、UFR(登録商標、Ultra Fast Rendering)形式とも呼ばれる。また、プリンタ200bは、PCL形式に則するPDLデータを含む印刷ジョブを解釈することができる。その一方で、LIPS(UFR)形式の印刷ジョブには対応していない。プリンタ200cは、インクジェットプリンタであり、ESC/P(登録商標、Epson Standard Code for Printer)に則する印刷ジョブを解釈することができる。しかしながら、PCL形式やLIPS形式の印刷ジョブには対応していない。
【0020】
このように、プリンタのベンダ(製造元)が異なると、サポートするPDLの種類が異なる。また、同じプリンタであっても、使用するPDLの種別によっては、サポートする機能に差異がある。なお、各プリンタが解釈できるPDLの種類は一例である。プリンタが解釈可能なPDLの形式は、PCL、LIPS、ESC/P、の他に、RPCS(登録商標、Refined Printing Command Stream)などの形式であってもよい。また、Post Script(登録商標)、ART(Advanced Rendering Tools)などの形式であってもよい。また、SPDL2(Sharp Printer Description Language2)などの形式であってもよい。また、上述のPDLに基づき派生した形式などであってもよい。各プリンタは上述のPDL形式、又は上述のPDL形式に基づき派生したPDL形式のうち、少なくとも1つの方式をサポートしているものとする。
【0021】
続けて、情報処理装置の一例であるコンピュータ100について説明する。本実施形態では、コンピュータ100がPC(Personal Computer)である場合を例示しているがこれに限定されるものではない。タブレット端末や、ヘッドマウントディスプレイとコンピュータが組み込まれたウェアラブルコンピュータなどの端末であっても良い。
【0022】
コンピュータ100は、ネットワーク300上のプリンタ200a~cと互いに通信することができる。また、コンピュータ100は、印刷対象のデータに基づき印刷ジョブを生成し、各プリンタへ送信することができる。
【0023】
コンピュータ100のハードウェア構成について
図2を用いて説明する。
図2は、コンピュータ100のハードウェア構成の一例を示すブロック図である。
【0024】
CPU(Central Processing Unit)101は、制御部120全体の動作を制御するプロセッサである。制御部120は、メモリであるROM(Read Only Memory)1021、RAM(Random Access Memory)1022、ストレージ105を有し、各部はシステムバス107により接続されている。また、制御部120は、入出力デバイスを接続するためのインタフェース(I/F)103、104や、ネットワークを介して外部装置と通信するための通信I/F106も備えている。
【0025】
RAM1022は揮発性メモリであり、ワークエリア、ROM1021及びストレージ105に格納された各種制御プログラムを展開するための一時記憶領域として用いられる。
【0026】
ROM1021は不揮発性メモリであり、コンピュータのブートプログラムなどが格納されている。ストレージ105はRAM1022と比較して大容量な不揮発性のフラッシュメモリやHDD(Hard Disk Drive)である。ストレージ105には、コンピュータ100全体を制御するためのOS(Operating System)1053や、OS1053上で動作する各種アプリケーション1051のプログラムが格納されている。また、IPP等の所定の印刷プロトコルに則する印刷ジョブを生成する共通プリンタドライバ1054や、共通プリンタドライバ1054と連携する設定アプリケーション1052a~cのプログラムが格納されている。以下、設定アプリケーション1052a~cを総称して、設定アプリケーション1052と表記する場合がある。所定の印刷プロトコルは、プリンタ200aからcに共通して実行可能な印刷命令の形式を規定する印刷プロトコルである。
【0027】
アプリケーション1051や、設定アプリケーション1052などの各種アプリケーションは、CD-ROMやUSBメモリあるいはネットワーク300を経由してコンピュータ100にインストールすることができる。
【0028】
CPU101はRAM1022上に展開したOSのプログラムや各アプリケーションのプログラムを実行し、コンピュータ100の制御を行う。このように、CPU101、ROM1021、RAM1022、ストレージ105等のハードウェアは、いわゆるコンピュータを構成している。
【0029】
なお、コンピュータ100は、1つのCPU101が後述するフローチャートに示す各処理を実行するものとするが、他の態様であっても構わない。例えば、複数のプロセッサが協働して後述するフローチャートに示す各処理を実行するようにすることもできる。
【0030】
入力I/F103は、キーボード108や、ポインティングデバイス109と制御部120を接続する。キーボード108やポインティングデバイス109は、ユーザの指示を受け付ける受付部として機能する。受付部は画面上に表示されるキーなどの表示アイテムの選択を検知することができる。出力I/F104は、情報を表示するモニタ110と、制御部120を接続する。モニタ110は、情報を表示する表示部として機能する。なお、コンピュータ100がタブレット端末などの場合、受付部と表示部を兼ねるタッチパネルディスプレイを介してユーザに対する情報の表示や、操作の受け付けを行うものとする。この場合、ユーザは指などのオブジェクトを用いてタッチ操作を行うことで、コンピュータ100に所望の操作指示を入力することができる。
【0031】
通信I/F106は、ネットワーク300上の印刷装置などの外部装置や、クラウド上のサーバなどと通信を行うためのインタフェースである。
【0032】
<コンピュータ100のソフトウェア構成>
つぎに、本実施形態におけるコンピュータ100のソフトウェア構成の一例を
図3(a)(b)及び
図4を用いて説明する。
【0033】
まず、コンピュータ100における各ソフトウェアモジュールによるデータ処理の全体像について
図3(a)及び(b)を用いて説明する。
【0034】
図3(a)に示す各モジュールは、不図時のOS1053上で動作する。OS1053は、コンピュータ100全体の制御を行うシステムソフトウェアである。ここでは一例としてWindows(登録商標)10以降のOSがインストールされている例について説明する。
【0035】
データ生成アプリケーション301、及び、データ生成アプリケーション302は、ユーザ操作に従って印刷データを生成して、出力する。データ生成アプリケーション301、及び、データ生成アプリケーション302は、例えば文書作成アプリケーションや、画像生成アプリケーションである。
【0036】
ユーザはキーボード108やタッチパネル/マウスなどに代表されるポインティングデバイス109などといった入力装置を使用して、データ生成アプリケーション301又はデータ生成アプリケーション302を操作する。
【0037】
本実施形態において、データ生成アプリケーション301は、印刷イメージの生成を行うグラフィックスコンポーネントであるGDI(Graphics Device Interface)を利用して印刷を行うGDIアプリケーションである。データ生成アプリケーションは、例えば、「Win32/64アプリケーション」や「.NETアプリケーション」などである。データ生成アプリケーション301は、印刷データとしてGDIデータを出力する。
【0038】
データ生成アプリケーション302は、OS1053上で動作する拡張アプリケーションである。データ生成アプリケーション302は、例えば、UWP(UniversalWindows Platform)アプリケーションである。UWPアプリケーションは、Windows(登録商標)ストアを通して配布されるアプリケーションであり、データ生成アプリケーション301とは異なる実行環境で動作する。異なる実行環境とは例えば、個別のサンドボックス内(仮想環境上)等である。
【0039】
以下では、データ生成アプリケーション302は、印刷データとしてXPSデータを生成する例について説明するが、これに限らず、XPS以外のデータ形式の印刷データを生成することとしてもよい。
【0040】
上述のデータ生成アプリケーション301や302は、一例にすぎず、データ生成アプリケーションは、印刷データをプリンタドライバに出力するアプリケーションであればよい。
【0041】
変換モジュール307は、GDIアプリケーションであるデータ生成アプリケーション301から出力されたGDI描画データをXPS(XML Paper Specification)データに変換する。本実施形態では、変換モジュール307は、OS1053のモジュールとして構成される。
【0042】
変換後のXPSデータはスプール領域306にスプールされる。また、スプール領域306には、データ生成アプリケーション302から出力されたXPSデータがスプールされる。本実施形態では、データ生成アプリケーション302がXPSデータを生成して出力する例について説明するが、これに限らない。データ生成アプリケーション302はXPSデータと異なるデータ形式のデータを出力し、OS1053がデータ生成アプリケーション302からの描画命令に応じてXPSファイルを生成することとしてもよい。
【0043】
共通プリンタドライバ1054及び拡張プリンタドライバ1055は、スプール領域306に保持された印刷データに基づいて、印刷ジョブ(印刷命令)を生成する。
【0044】
共通プリンタドライバ1054は、アプリケーション1051から取得した印刷データに基づいて、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバである。
図3(b)に示す通り、共通プリンタドライバ1054は、印刷命令生成部(レンダリングフィルタ)312を有する。印刷命令生成部312は、XPS形式のデータをIPPに従った印刷命令に変換する印刷命令生成モジュールである。IPPは、ベンダが異なるプリンタ200a、200b、及び、200cのすべてのプリンタが解釈可能な印刷プロトコルである。共通プリンタドライバ1054は、複数の印刷生成部を有することとしてもよい。また、共通プリンタドライバ1054は、OS1053の標準機能として組み込まれたクラスドライバであってもよいし、別途ユーザがコンピュータ100に対してインストールしたユニバーサルプリンタドライバであってもよい。
【0045】
また
図3(b)に示す通り、拡張プリンタドライバ1055は、XPS形式のデータを各プリンタに固有の印刷プロトコルに従った印刷ジョブに変換する印刷命令生成部(レンダリングフィルタ)1から6を有する。
図3(b)に示した印刷命令(LIPS)生成用モジュール群、印刷命令(PCL)生成用モジュール群、及び、印刷命令(ESC/P)生成用モジュール群はそれぞれ独立した拡張プリンタドライバ1055として構成されてもよい。あるいは、印刷命令(LIPS)生成用モジュール群、印刷命令(PCL)生成用モジュール群、及び、印刷命令(ESC/P)生成用モジュール群のうち複数のモジュール群を含む1つの拡張プリンタドライバ1055として構成されることとしてもよい。
【0046】
印刷命令生成部1から6は、所定の印刷プロトコル(IPP)と異なる他の印刷プロトコルに従った印刷命令を生成するための拡張モジュールである。他の印刷プロトコルは、複数台のプリンタ200aからcのうち1台の印刷装置が実行可能な印刷命令の形式であって、他の1台の印刷装置が実行できない印刷命令の形式を示す印刷プロトコルである。
図3(b)の例において、印刷命令生成部1から2は、プリンタ200aが利用可能な固有の印刷プロトコル(例えば、LIPS(UFR)形式)に従った印刷ジョブを生成するために用いられる。また、印刷命令生成部3から5は、プリンタ200bが利用可能な固有の印刷プロトコル(例えば、PCL形式)に従った印刷ジョブを生成するために用いられる。さらに、印刷命令生成部6は、プリンタ200cが利用可能な固有の印刷プロトコル(例えば、ESC/P形式)に従った印刷ジョブを生成するために用いられる。
【0047】
フィルタパイプラインコンフィグ400は、共通プリンタドライバ1054に含まれる1又は複数の印刷命令生成部、及び、拡張プリンタドライバ1055に含まれる1又は複数の印刷命令生成部のうち、印刷ジョブの生成に用いるモジュールの呼び出し順を示す。
【0048】
図3(b)では、LIPS対応機種用、PCL対応機種用、及び、ESC/P対応機種用のそれぞれのフィルタパイプラインコンフィグ400を保持する例を示したが、いずれか1つのPDLのみのフィルタパイプランコンフィグ400を保持してもよい。フィルタパイプラインコンフィグ400は、ストレージ105又は、ROM1021等の記憶媒体に保持される。
【0049】
スプール領域306から取得されたXPSデータは、フィルタパイプラインコンフィグ400によって特定される1又は複数の印刷命令制御部によって処理される。
【0050】
例えば、フィルタパイプラインコンフィグ400において、処理を実行すべき印刷命令生成部を指定することにより、コンピュータ100は、ベンダに固有の印刷プロトコルに対応した印刷ジョブを出力することができる。
【0051】
例えば、フィルタパイプラインコンフィグ400において、印刷命令生成部312で処理を行った後に、印刷命令生成部1及び2で処理を行うように設定されている場合、ジョブ生成の流れは以下となる。すなわち、印刷命令生成部312は、XPSスプールファイルに基づいて、IPPに従った印刷命令を生成する。また、標準設定データに基づき、IPPに則する印刷属性を生成し、印刷命令に付加して、印刷ジョブを生成する。当該ジョブは、印刷命令生成部1に入力される。印刷命令生成部2において処理されたデータは、印刷命令生成部2に入力される。印刷命令生成部2では、LIPS(UFR)に従った印刷ジョブを生成する。このようにして、プリンタ200aに固有の印刷プロトコル(LIPS(UFR)形式)に従った印刷ジョブを生成することができる。
【0052】
図3(a)の説明に戻る。共通プリンタドライバ1054及び拡張プリンタドライバ1055によって生成された印刷ジョブは、プリントマネージャ318に出力される。
【0053】
また、共通プリンタドライバ1054、及び、拡張プリンタドライバ1055は、印刷設定アプリケーション1052aからcによる印刷設定を受け付ける。
【0054】
印刷設定アプリケーション1052aからcは、ベンダごとに固有の印刷設定を行うための印刷設定アプリケーションである。本実施形態では、印刷アプリケーション1052aからcはそれぞれ、プリンタ200aからcに固有の印刷設定を行うための印刷設定アプリケーションである。
【0055】
印刷設定とは、例えば、針を使用せずに複数の印刷ページを綴じる針なし綴じ機能の使用や、所定の格納領域に記憶したデータを印刷するボックス印刷機能の使用についての設定などである。
【0056】
そして、共通プリンタドライバ1054、及び、拡張プリンタドライバ1055は、受信した印刷設定と生成した印刷命令とを含む印刷ジョブをプリントマネージャ318に出力する。
【0057】
プリントマネージャ318は、プリンタ200の能力情報の取得や、印刷ジョブの送信制御を行う。プリントマネージャ318は、共通プリンタドライバ1054、あるいは、拡張プリンタドライバ1055から受信した印刷ジョブを、通信部319を介して、目的のプリンタ200に送信する。
【0058】
以上のようにして、コンピュータ100は、アプリケーション1051が生成した印刷データに基づいて印刷ジョブを生成し、プリンタ200に出力することができる。
【0059】
上記の構成によれば、共通プリンタドライバ1054の印刷命令生成部312を用いて、ベンダによらずにプリンタ200が解釈することができる印刷ジョブを生成することができる。また、拡張プリンタドライバ1055の印刷命令生成部1から6を用いることにより、ベンダ固有の印刷プロトコルに合った印刷ジョブを生成することができる。
【0060】
次に、コンピュータ100における各ソフトウェアモジュールによるデータ処理の詳細について
図3(c)を用いて説明する。
図3(a)及び(b)を用いて説明した内容については説明を省略する。
【0061】
図3(c)は、本実施形態におけるコンピュータ100のソフトウェア構成の一例を示す図である。
【0062】
OS1053は、プリンタドライバを使用して印刷を行うための印刷アーキテクチャ10531を提供する。印刷アーキテクチャ10531は、XPS形式のデータをスプールデータとして使用し、当該スプールデータをプリンタドライバによって印刷データ(PDL)に変換する、いわゆるV4印刷アーキテクチャである。
【0063】
コンピュータ100には、プリンタドライバとして、複数ベンダのプリンタをサポートする共通プリンタドライバ1054がインストールされている。本実施形態では、共通プリンタドライバ1054は、所定の印刷プロトコル(例えば、IPP)に従った印刷データの処理を行う。当該共通プリンタドライバ1054は、OS1053の標準機能として組み込まれたクラスドライバであってもよいし、別途ユーザがコンピュータ100に対してインストールしたユニバーサルプリンタドライバであってもよい。
【0064】
印刷アーキテクチャ10531は、変換モジュール307、共通プリンタドライバ1054、プリントマネージャ318、通信部319を含む。なお、共通プリンタドライバ1054とは異なるプリンタドライバ(例えば、ベンダが提供する機種専用のプリンタドライバなど)をインストールすることも可能である。
【0065】
<共通プリンタドライバ1054を用いる印刷処理>
まず、共通プリンタドライバ1054を用いる印刷処理について説明する。データ生成アプリケーション301や、データ生成アプリケーション302は、印刷アーキテクチャ10531と協働して印刷データ(例えば、文書や、画像など)を生成する。
【0066】
アプリケーション1051を介して印刷指示が行われると、OS1053は、共通プリンタドライバ1054の標準印刷設定部308を呼び出す。標準印刷設定部308は、標準印刷機能の定義ファイル群309の中から選択されたプリンタに対応する定義ファイルを参照する。また、参照した定義ファイルに基づき、現在の印刷設定を示す標準設定データ(DEVMODE303やPrintTicket304)及び選択されたプリンタの印刷能力を示すPrintCapabitiesを生成する。
【0067】
標準設定データは、アプリケーション1051や、OSによって表示される印刷設定を変更するための画面(ユーザインタフェース)を介して適宜変更される。
【0068】
図3(c)に示す定義ファイル群309に含まれる定義ファイルは、IPPプリンタの探索時などにプリンタから取得される属性情報に基づき生成されたプリンタの能力を示す。定義ファイル群309には、プリンタ毎に異なる別ファイルが記憶される。
【0069】
続けて定義ファイルの生成について説明する。選択中のプリンタに対応する定義ファイルがストレージに記憶されていない場合、共通プリンタドライバ1054は、プリンタに能力情報の問い合わせを行う。共通プリンタドライバ1054は、プリントマネージャ318、通信部319を介して、プリンタへ能力を問い合わせる。
【0070】
プリントマネージャ318は、後述する印刷ジョブの制御機能に加え、IPPに対応するプリンタの探索や、プリンタ能力の取得を行うことができる。具体的には、プリンタ能力の取得は、RFC2911で既定されたプリンタ属性要求操作(Get-Printer-Attributes Operations)によって行われる。
【0071】
まず、プリントマネージャ318は、Get-Printer-AttributesRequestをプリンタ200に対して送信する。当該リクエストの応答として、プリンタ200の属性情報が得られる。プリンタ属性要求操作により得られるプリンタの能力情報は、例えば、「両面」や「カラー印刷」が可能かどうかなどの、標準的な印刷設定の能力情報などである。ここで、プリンタ属性要求操作により取得できる能力(属性)はIPPで既定されている属性に関するサポート情報である。従って、ベンダ固有の機能情報(針なし綴じ機能や、ボックス印刷機能など)は、IPPのプリンタ属性要求操作では取得することができない。取得された属性情報は、標準印刷設定部308に転送される。標準印刷設定部308は、IPPを用いて取得した属性情報に基づいて、定義ファイルを生成しストレージ105に記憶する。
【0072】
アプリケーション1051(データ生成アプリケーション301及びデータ生成アプリケーション302)は標準印刷設定部308が生成したPrintTicket形式やDEVMODE形式の設定データを取得する。データ生成アプリケーション301では現在の印刷設定を示す標準設定データとしてバイナリのDEVMODE303が用いられる。また、データ生成アプリケーション302ではマークアップ言語であるXMLで記載されたPrintTicket304が用いられる。このDEVMODE303もしくはPrintTicket304は、IPPに則した印刷ジョブに反映すべき印刷設定を保持する標準設定データである。ただし、DEVMODE303およびPrintTicket304は、標準設定データの一例であり、これに限定しなくてもよい。
【0073】
ユーザによる印刷指示が行われたことを検知すると、OS1053又はアプリケーション1051はXPSスプールファイルを生成する。生成されたXPSスプールファイルは、印刷命令生成部312に渡される。印刷命令生成部312は、受け取ったXPSスプールファイルをレンダリングしてIPPに則するPDLデータに変換する。IPPに則するPDLデータは、例えば、PDF(Portable Document Format)又はPWG-Raster形式のデータである。
【0074】
更に印刷命令生成部312は、XPSスプールファイルに含まれるPrintTicket304に指定された設定内容に基づき、IPPに則する印刷属性情報を生成する。ここで、IPPに則するPDLデータおよびPrintTicket304を正しく理解し、印刷ジョブを正しく出力できるのであれば、そのままプリンタ200へ送信してもよい。つまり、共通プリンタドライバ1054は、印刷命令生成部312で処理した印刷ジョブをプリントマネージャ318へ送信し、通信部319を介してプリンタ200に送信してもよい。
【0075】
<拡張プリンタドライバ1055による印刷処理>
IPPに則するPDLデータが正しく理解できずに、その印刷ジョブを正しく出力できないプリンタ200に対しては、当該プリンタ200が正しく出力できる印刷ジョブを生成する拡張プリンタドライバ1055が必要となる。
【0076】
本実施形態に係る拡張プリンタドライバ1055は、IPPに則するPDLデータを、出力先のプリンタ200が正しく出力することが可能なベンダ独自のPDLに変換する。
【0077】
フィルタパイプラインコンフィグ400は、共通プリンタドライバ1054並びに拡張プリンタドライバ1055が参照し、どの印刷命令生成部(以下、レンダリングフィルタという場合がある)をどのように使用するかを決定する手引書のようなものである。
【0078】
レンダリングフィルタとは、印刷処理の最小単位である。共通プリンタドライバ、及び、拡張プリンタドライバは、単一もしくは複数のレンダリングフィルタを有する。
【0079】
図4(a)、(b)、(c)はフィルタパイプラインコンフィグ400を説明するための図である。いずれも印刷アーキテクチャで既定された規則に則ったXML形式のファイルであり、レンダリングフィルタの呼び出し順と、インタフェースとインプット、アウトプットの形式を定義している。レンダリングフィルタを呼び出す共通プリンタドライバ1054や拡張プリンタドライバ1055は、定義された順番通り、かつ定義されたインタフェースを使って呼び出すようになっている。
【0080】
図4(a)に例示するファイル400aは、フィルタパイプラインコンフィグ400の一例を示している。ファイル400aは、3つのレンダリングフィルタ(印刷命令生成部)を定義している。
【0081】
すなわち、最初に共通プリンタドライバ1054の印刷命令生成部312を呼び出し、次に拡張プリンタドライバ1055の印刷命令生成部1を呼び出し、さらに拡張プリンタドライバ1055の印刷命令生成部2を呼び出すように定義されている。
【0082】
図4(a)において、共通プリンタドライバ1054の印刷命令生成部312は、“XPS to PDF”として表されている。また、
図4(a)において、拡張プリンタドライバ1055の印刷命令生成部1は、“Vender Renderer PDLA”として表されている。さらに、
図4(a)において、拡張プリンタドライバ1055の印刷命令生成部2は、“Vender Renderer PDLB”として表されている。
【0083】
拡張プリンタドライバ1055はフィルタパイプラインコンフィグ400に記載されている順序でフィルタを呼び出し、最終的に生成されたPDLデータをプリントマネージャ318に送信する。すなわち、フィルタパイプラインコンフィグ400aに定義しているフィルタの処理を全て完了したら、拡張プリンタドライバ1055は生成されたベンダ独自PDLと拡張印刷設定情報とを印刷ジョブとしてプリンタ200に送信する。
【0084】
PDLデータを受け取ったプリントマネージャ318は印刷ジョブを生成し、キュー(待ち行列)に生成した印刷ジョブを登録する。プリンタ200が印刷できる状態になったら、キューに登録した順に通信部319を介して印刷ジョブを送信する。
【0085】
設定アプリケーション1052は、印刷データのプレビューを表示する機能や、印刷設定変更を促すユーザインタフェースを表示する機能などを提供する。設定アプリケーション1052は、印刷アーキテクチャ10531とは別のUWPのプラットフォーム上で動作するアプリケーションである。このアプリケーションは、IPPをベースとした共通プリンタドライバ1054による印刷をベースにしつつ、必要に応じてプリンタ200の備える機能をより柔軟に利用可能にするためのアプリケーションである。
【0086】
設定アプリケーション1052はサンドボックス化されたUWPの実行環境で動作する。従って、当該アプリケーションがハングアップやエラーを起こしたとしても、システム全体に与える影響を小さくすることができる。本実施形態では、本設定アプリケーション1052aの拡張印刷設定部10522を起動して拡張印刷設定を印刷ジョブに付加することを想定しているが、必ずしも拡張印刷設定を付加する必要はない。
【0087】
ここでは、プリンタ200aに対応する設定アプリケーションとして設定アプリケーション1052aがインストールされている場合を例示する。また、ここでは、プリンタ200bに対応する設定アプリケーションとして設定アプリケーション1052bがインストールされている場合を例示する。さらに、プリンタ200cに対応する設定アプリケーションとして1052cがインストールされている場合を例示する。
【0088】
印刷命令生成部312は、拡張アプリケーションのインストール状況や、設定記憶部320に記憶された設定に基づき、設定アプリケーション1052を起動するか否かを判断する。
【0089】
設定アプリケーション1052は、起動アプリ部10521、拡張印刷設定部10522、通信部10523を含む。
【0090】
起動アプリ部10521は、印刷時に呼び出されるモジュールであり、拡張印刷設定部10522や通信部10523の起動や動作を制御する。
【0091】
拡張印刷設定部10522は、IPPに則する印刷設定と比較してより詳細な印刷設定を行うことができる拡張ユーザインタフェースを、モニタ110に表示させる。この拡張ユーザインタフェースは、ユーザがアプリケーション1051において印刷設定の開始指示あるいは印刷プレビュー指示を行ったタイミングで、モニタ110に表示される。
【0092】
通信部10523は、設定アプリケーション1052の各モジュールがプリンタ200と通信するための機能を提供する。通信部10523は、特定の通信方式や特定の制御方式を用いてプリンタ200の情報を取得する。
【0093】
特定の通信方式は例えば、WSD(Web Services for Devices)プロトコルや、SNMP(Simple Network Management Protocol)である。また、ベンダ独自のプロトコルを用いた通信方式であってもよい。また、ジョブ制御言語や、プリンタ制御言語で定義された制御コマンドを用いて、プリンタの情報を取得することもできる。例えば、PJL(Printer Job Language)、PostScript、CPCA(Common Peripheral Controlling Architecture)で定義されたコマンドを用いて、プリンタに情報を要求してもよい。また、その他、NPAP(Network Printing Alliance Protocol)を用いてプリンタから情報を取得することもできる。
【0094】
拡張プリンタドライバ1055の印刷命令生成部1から6は、必要に応じて、設定アプリケーション1052と通信し、拡張印刷設定を取得する。取得した拡張印刷設定に基づいて、ベンダ独自のPDLデータに反映するができる。
【0095】
<拡張プリンタドライバ1055のインストール方法>
次に、拡張プリンタドライバ1055のインストール方法について
図5のフローチャートを用いて説明する。
図5に示す処理は、CPU101がROM1021又はストレージ105に記憶された各制御モジュールを実現するためのプログラムをRAM1022に読み出し、実行することにより実現される。
【0096】
まず拡張プリンタドライバ1055のインストールパッケージについて説明する。拡張プリンタドライバ1055のインストールパッケージは拡張INFファイルの仕組みを利用する。拡張INFファイルとは、Microsoft(登録商標)のWindows(登録商標)が定義する「Extension INF」に従ったファイルである。ベースとなる基本INFファイルに記載しているHWID、COIDと同じIDを定義した拡張INFファイルを用意し、ベースとなる基本パッケージに追加したいモジュールを定義する。拡張INFファイルを使用してインストールすることにより、基本INFファイルに記載されているモジュールに上書き、もしくは追加インストールされるようになる。
【0097】
図6はLIPS対応の拡張プリンタドライバ1055をインストールするためのドライバパッケージ600の例である。ドライバパッケージ600は、拡張INFファイル6000、フィルタパイプラインコンフィグファイル、及び、印刷命令生成用のモジュール群を含む。
【0098】
ベンダ拡張INFファイル6000は、対応する基本INFファイルのHWID、及び、COID等を示す。基本INFファイルは、共通プリンタドライバ1054のINFファイルである。
【0099】
拡張INFを使用して、拡張プリンタドライバ1055をインストール方法について説明する。まず、OS1053がインストール対象のINFファイルが拡張INFかどうかを判断する(ステップS601)。
【0100】
拡張INFファイルではないと判断した場合は(ステップS601のNo)、通常のINFインストールを行う(ステップS602)。
【0101】
拡張INFファイルと判断した場合は(ステップS601のYes)、HWID、COIDを調べる。拡張INFファイルに記載しているHWID、COIDと一致する基本INFファイルを探索する(ステップS603)。
【0102】
探索した結果、HWID、COIDを定義している基本INFファイルが存在していなかった場合(ステップS603のNo)、インストール処理を終了する。
【0103】
一方、探索した結果、HWID、COIDを定義している基本INFファイルが存在している場合(ステップS603のYes)、基本INFファイルのモジュールに印刷命令生成部1及び2のモジュールを拡張する処理を行う(ステップS604)。
【0104】
本実施形態の場合、パッケージ600にあるフィルタパイプラインコンフィグファイルファイルを共通プリンタドライバが参照できる場所に配置する。もし、既にフィルタパイプラインコンフィグ400が存在している場合は、そのファイルを上書きされる。あるいは、上書きをせずに、既存のフィルタパイプラインコンフィグ400に追加する形で新たなフィルタパイプラインコンフィグ400を記憶することとしてもよい。
【0105】
さらに、印刷命令生成部1から2を拡張プリンタドライバが参照できる場所に配置する。もし、既に同名のベンダ拡張印刷処理部モジュールが配置先に存在している場合は、そのファイルを上書きする。
【0106】
以上の手順により、拡張プリンタドライバ1055をコンピュータ100にインストールすることができる。
【0107】
図6の例では、LIPS対応拡張プリンタドライバ1055のインストールの例について説明したが、LIPS、PCL、及び、ESC/Pなど、複数のPDLに対応する拡張プリンタドライバ1055をインストールすることとしてもよい。
【0108】
<印刷ジョブ生成フロー>
本実施形態に係るコンピュータ100による印刷ジョブの生成手順について
図7を用いて説明する。
図7は、コンピュータ100の制御を示すフローチャートである。
図7のフローチャートに示す各動作(ステップ)は、CPU101がROM1021又はストレージ105に記憶された各制御モジュールを実現するためのプログラムをRAM1022に読み出し、実行することにより実現される。なお、フローチャートで示す各処理は、アプリケーション1051、OS1053、共通プリンタドライバ1054、および拡張プリンタドライバ1055のモジュールやソフトウェアコンポーネントが協働して実現するものとする。またデータ送信、情報の入出力などの一部の処理は、各I/Fと協働して実現される。
【0109】
図7のフローチャートは、使用するプリンタとして、共通プリンタドライバ1054だけでは対応できないプリンタが指定されたため、事前にインストールしておいた拡張プリンタドライバ1055もさらに使用して印刷ジョブを生成する処理である。これらの処理はユーザから印刷のための指示を受け付けたことに応じて実行される。
【0110】
ステップS701において、アプリケーション1051は印刷ジョブの生成命令をユーザから受け付ける。例えばアプリケーション1051は、印刷ボタンキーが押下されることによって、印刷ジョブの生成命令を受け付ける。
【0111】
ステップS702において、アプリケーション1051は描画データを出力する。ステップS703において、OS1053は、出力された描画データに基づいてXPSスプールファイルを生成する。なお、データ生成アプリケーション301からの印刷の場合、OS1053は、変換モジュール307を用いてXPSスプールファイルを生成する。
【0112】
次にOS1053は、コンピュータ100に拡張印刷モジュールがインストールされているかを判定する(S704)。例えば、OS1053は、コンピュータ100に、拡張INFファイル6000がインストールされている場合に、拡張印刷モジュールがインストールされていると判定することができる。拡張印刷モジュールとは、
図6の例では印刷命令生成部1及び2である。あるいは、
図3(b)の例では、印刷命令生成部1から6である。
【0113】
拡張印刷モジュールがインストールされていないと判定された場合(S704でNo)、共通ドライバ1054の印刷命令生成部312がXPSスプールファイルを処理して、IPPに従った印刷命令を生成する(S705)。
【0114】
ステップS705において印刷命令生成部312は、XPSスプールファイルをIPPに則するPDLに変換する。また、ジョブに設定すべき印刷設定を示す標準設定に基づいて、IPPに則する印刷設定(印刷属性)を生成する。
【0115】
一方、拡張印刷モジュールがインストールされていると判定された場合(S704でYES)、印刷アーキテクチャ10531は、印刷ジョブを解析して、ジョブを実行するプリンタ200の識別情報を特定する(S706)。
【0116】
続いて印刷アーキテクチャ10531は、ステップS706において特定したプリンタ200の識別情報に対応するフィルタパイプラインコンフィグを特定する特定処理を行う(S707)。プリンタの識別情報とフィルタパイプラインコンフィグは直接関連付けられていなくてもよい。例えば、プリンタの識別情報に基づいて使用すべき印刷プロトコルが特定され、特定された印刷プロトコルに対応する印刷命令を生成するためのフィルタパイプラインコンフィグを特定する、というように間接的に関連付けられていてもよい。例えば、指定されたプリンタ200がLIPSに対応する場合、印刷アーキテクチャ10531は、LIPSに従った印刷命令を生成するために使用すべき1又は複数の印刷命令生成部を示すフィルタパイプラインコンフィグを特定する。このように、印刷を行う印刷装置が印刷処理に用いる印刷データの形式を示す情報に応じて、参照するフィルタパイプラインコンフィグを特定する。
【0117】
次に、印刷アーキテクチャ10531は、ステップS707において、参照すべきフィルタパイプラインコンフィグ400が特定されたか否かを判定する(S708)。参照すべきフィルタパイプラインコンフィグ400が特定されなかった場合には、印刷アーキテクチャ10531は、ステップS705に進み、共通ドライバによる印刷命令の生成を行う。参照すべきフィルタパイプラインコンフィグ400が特定されない場合とは、例えば、印刷を実行するプリンタ200に固有の印刷プロトコルに対応するフィルタパイプラインコンフィグ400がコンピュータ100に保持されていない場合等である。このように、印刷を行う印刷装置が印刷処理に用いる印刷データの形式に応じた印刷命令を生成するためのフィルタパイプラインコンフィグ400が保持されていない場合には、コンピュータ100は所定のプロトコルに従った印刷命令を出力する。
【0118】
参照すべきフィルタパイプラインコンフィグ400が特定されなかった場合、印刷先として指定されたプリンタ200に固有の印刷プロトコルでの印刷が実行されないことを示す通知を行うこととしてもよい。あるいは、共通印刷プロトコル(例えば、IPP)により印刷が実行されることを示す通知を行うこととしてもよい。
【0119】
一方ステップS707において参照すべきフィルタパイプラインコンフィグが特定された場合には、印刷アーキテクチャ10531は、特定したフィルタパイプラインコンフィグに従って印刷命令を生成する(S709)。すなわち、特定したフィルタパイプラインコンフィグによって指定された1又は複数の印刷命令生成部を、指定された順序で使用して、印刷命令を生成する。
【0120】
例えば、
図4(a)に示したフィルタパイプラインコンフィグ400aを参照する場合、共通プリンタドライバ1054の印刷命令生成部312、拡張プリンタドライバ1055の印刷命令生成部1、印刷命令生成部2の順に印刷データを処理する。ここで印刷命令生成部1は
図4(a)のVender Renderer PDLAに相当する。また、印刷命令部2は、
図4(a)のVender Renderer PDLBに相当する。
【0121】
まず印刷命令生成部312によってIPPに従った印刷データが生成される。また、印刷命令生成部312は、印刷ジョブに設定すべき印刷設定を示す標準設定に基づいて、IPPに則する印刷設定を生成する。
【0122】
次に、印刷命令生成部312によって生成された印刷データ、及び、印刷設定が、印刷命令生成部1に出力される。印刷命令生成部1及び印刷命令生成部2は、共通プリンタドライバ1054が所定の印刷プロトコル(例えば、IPP)に従って生成した印刷命令に基づいて、他の印刷プロトコルに従った印刷命令を生成可能である。例えば、印刷命令生成部1及び印刷命令生成部2は、共通プリンタドライバ1054から受け取った印刷データからLIPSに対応した印刷命令を生成する。
【0123】
さらに、印刷命令生成部1及び印刷命令生成部2は、指定されたプリンタ200に対応する設定アプリケーション1052aから拡張印刷設定を取得する。印刷命令生成部1及び印刷命令生成部2は、印刷命令生成部312から受信した標準設定と、設定アプリケーション1052aから取得した拡張印刷設定に基づいて、指定されたプリンタ200に固有の印刷設定を生成する。
【0124】
そして、当該印刷設定を、生成した印刷命令とともにプリントマネージャ318に出力する。上記の例では、印刷命令生成部1、印刷命令生成部2、及び、設定アプリケーション1052aが用いられる例について説明したが、指定されたプリンタ200に応じて、上記以外の印刷命令生成部や設定アプリケーション1052が用いられる。
【0125】
ステップS705あるいはステップS709において印刷命令が生成されると、プリントマネージャ318は、生成された印刷命令と印刷設定とに基づいて印刷ジョブを生成する。そして、プリントマネージャ318は、生成した印刷ジョブを、通信部319を介して指定されたプリンタ200に送信する(S710)。
【0126】
このようにプリントマネージャ318は、共通プリンタドライバ1054が取得した印刷データを、フィルタパイプラインコンフィグ400が示す1又は複数のモジュールが処理することによって得られる、固有の印刷プロトコルに従った印刷命令を出力する。このようにして、プリントマネージャ318は、印刷を行う印刷装置が印刷処理に用いる印刷データの形式を示す情報に応じて、第1の印刷命令、または、第2の印刷命令を出力する。第1の印刷命令とは、所定のプロトコル(例えば、IPP)に準拠した印刷命令であり、第2の印刷命令とは、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令である。
【0127】
ステップS705において生成された印刷命令を出力する場合には、IPPに準拠した印刷命令が出力される。このように、プリントマネージャ318は、アプリケーション1051から取得した印刷データに基づいて、所定の印刷プロトコル(例えば、IPP)に従った第1の印刷命令を出力可能である。
【0128】
ステップS709において生成された印刷命令を出力する場合には、アプリケーション1051から取得した印刷データに基づいて、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を出力可能である。
【0129】
上記の実施形態によれば、コンピュータ100は、IPP等の所定の印刷プロトコルを利用可能な共通プリンタドライバを使用するので、印刷装置のベンダの違いによらない印刷命令を出力することができる。さらに上記の実施形態によれば、コンピュータ100は、上記の所定の印刷プロトコルと異なる固有の印刷プロトコルを用いた印刷命令を出力することができる。従って、ユーザは、固有の印刷プロトコルを用いることにより利用可能となる、固有の印刷機能を利用することが可能となる。
【0130】
<第2の実施形態>
第1の実施形態では、共通プリンタドライバ1054においてIPPに則するPDLを生成した後に、拡張プリンタドライバ1055を用いてベンダ独自PDLに変換して印刷命令を生成する例について説明したがこれに限らない。共通プリンタドライバ1054の印刷命令生成部312を仲介せずに、拡張プリンタドライバ1055の印刷命令生成を呼び出して印刷命令を生成することとしてもよい。
【0131】
本実施形態に係るハードウェア構成、ソフトウェア構成、及び、処理手順は実施形態1において説明した内容と同様であるため、説明を省略する。ただし、本実施形態に係る拡張プリンタドライバ1055は、IPPに則するPDLではなく、アプリケーションが作成するXPSデータを解釈し、ベンダ独自のPDLデータに変換する機能を有する。
【0132】
アプリケーション1051は、ユーザから印刷開始指示を受け付けると、印刷設定とXPSスプールファイルを共通プリンタドライバ1054へ渡す。
【0133】
ここで、
図7のステップS707において、参照すべきフィルタパイプラインコンフィグとして、
図4(b)に示すフィルタパイプラインコンフィグ400bが選択された例について説明する。
【0134】
フィルタパイプラインコンフィグ400bは、印刷命令生成部1及び印刷命令生成部2のみ定義している。印刷命令生成部1は
図4(b)のVender Renderer PDLAに相当する。また、印刷命令部2は、
図4(b)のVender Renderer PDLBに相当する。
【0135】
共通プリンタドライバ1054はフィルタパイプラインコンフィグ400bに従い、印刷命令生成部312を呼び出さずに、取得した印刷設定とXPSスプールファイルを拡張プリンタドライバ1055へ渡す。
【0136】
拡張プリンタドライバ1055は、
図7のステップS709において、フィルタパイプラインコンフィグ400bに従い印刷命令生成部1及び印刷命令生成部2を用いて、XPSスプールファイルに基づき、印刷命令を生成する。また、拡張プリンタドライバ1055は、共通プリンタドライバ1054から取得した印刷設定と、拡張アプリケーション1052aから取得した拡張印刷設定とに基づいて、指定されたプリンタ200に固有の印刷設定を生成する。
【0137】
ステップS709において印刷命令が生成されると、プリントマネージャ318は、生成された印刷命令と印刷設定とに基づいて印刷ジョブを生成する。そして、プリントマネージャ318は、生成した印刷ジョブを、通信部319を介して指定されたプリンタ200に送信する(S710)。
【0138】
本実施形態では、IPPに則する共通プリンタドライバの印刷命令生成部312を呼び出さずに、ベンダ毎の特定のPDLを含む印刷ジョブを作成する。すなわち、拡張プリンタドライバ1055は、共通プリンタドライバ1054による印刷命令の生成なしに、所定の印刷プロトコル(例えばIPP)と異なる他の印刷プロトコルに従った印刷命令を生成可能である。拡張プリンタドライバ1055は、アプリケーション1051から出力された印刷データを用いて、他の印刷プロトコルに従った印刷命令を生成する。
【0139】
プリントマネージャ318は、共通プリンタドライバ1054が所定の印刷プロトコルに従って印刷命令を生成することなしに1又は複数の拡張モジュールが生成した、他の印刷プロトコルに従った印刷命令を出力可能である。従って、共通プリンタドライバを介する場合と比較して、印刷命令を生成するための処理量を減らすことができ、より効率的に印刷命令を生成することができる。
【0140】
<第3の実施形態>
第1の実施形態及び第2の実施形態では、コンピュータ100にインストールされた拡張プリンタドライバ1055を用いてベンダ独自PDLに変換して印刷命令を生成する例について説明したがこれに限らない。コンピュータ100とネットワークを介して接続された外部装置(例えば、クラウドサーバ)が有する印刷命令生成部を利用して印刷命令を生成することとしてもよい。
【0141】
本実施形態に係るハードウェア構成、ソフトウェア構成、及び、処理手順は実施形態1において説明した内容と同様であるため、説明を省略する。
【0142】
ただし、本実施形態に係る通信部319は、拡張プリンタドライバ1055の指示に従って、クライアントコンピュータとネットワークを介して接続された外部サーバと通信を行う。また、本実施形態では、拡張プリンタドライバ1055は、外部装置上にある印刷命令生成部8を用いて印刷命令の生成を行う。
【0143】
ここで、
図7のステップS707において、参照すべきフィルタパイプラインコンフィグとして、
図4(c)に示すフィルタパイプラインコンフィグ400cが選択された例について説明する。
【0144】
印刷命令生成部1は
図4(c)のVender Renderer PDLAに相当する。また、印刷命令生成部2は、
図4(c)のVender Renderer PDLBに相当する。さらに、印刷命令生成部8は
図4(c)のVender Renderer PDLCに相当する。
【0145】
フィルタパイプラインコンフィグ400cは外部装置上にある印刷命令生成部8を利用するためのURLを定義している。拡張プリンタドライバ1055は、通信部319を介して、この定義に従いクラウド領域にある印刷命令生成部8呼び出して、印刷命令を生成する。
図4(c)の例では、拡張プリンタドライバ1055は、印刷命令生成部1及び印刷命令生成部2を用いて処理を行った後に、処理後のデータを印刷命令生成部8に送る。そして、印刷命令生成部8によって処理された後の印刷データ(印刷命令)をプリントマネージャ318に送信する。
【0146】
プリントマネージャ318は、生成された印刷命令と印刷設定とに基づいて印刷ジョブを生成する。そして、プリントマネージャ318は、生成した印刷ジョブを、通信部319を介して指定されたプリンタ200に送信する(S710)。
【0147】
上記の例では、印刷命令生成部1、2、及び、8を用いて印刷命令を生成する例について説明したが、これに限らない。印刷命令生成部1で処理を行う前に印刷命令生成部312によって処理を行うこととしてもよい。あるいは、印刷命令生成部8のみを用いてXPSスプールデータから印刷命令を生成することとしてもよい。
【0148】
このようにして、本実施形態に係るプリントマネージャ318は、外部装置が有する拡張モジュールが、共通プリンタドライバ1054が取得した印刷データを処理することによって得られる、他の印刷プロトコルに従った印刷命令を出力する。外部装置が有する拡張モジュールは、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための拡張モジュールである。
【0149】
本実施形態によれば、クラウドなどの外部装置上の印刷命令生成部を利用して印刷命令を生成するので、コンピュータ100にインストールされた印刷命令生成のみを用いる場合に比べて、拡張性をより向上させることができる。すなわち、コンピュータ100だけでは生成できない種別のPDLで記述された印刷命令を生成することが可能になる。
【0150】
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0151】
100 クライアントコンピュータ
200 プリンタ
101 CPU
1054 共通プリンタドライバ
1055 拡張プリンタドライバ
400 フィルタパイプラインコンフィグ