(57)【要約】      （修正有）【課題】アプリケーションからの印刷指示に応じて印刷処理を行う過程で、スクリプト言語を用いる処理を高速化する印刷制御プログラムを提供する。【解決手段】印刷制御プログラムは、印刷設定の指示を受け付けＳ２１０、受け付けた印刷設定の情報を含んだプリントチケットを生成するＳ２２０ＵＩ処理２００と、所定のスクリプト言語を解釈してプリントチケットに対する処理を行うＳ４００スクリプト言語処理４００と、スクリプト言語処理による処理後のプリントチケットに基づいて印刷設定の情報に基づく設定処理Ｓ５１０を行うとともに、印刷対象の印刷処理Ｓ５１０を行うネイティブコード処理５００と、を実行する。【選択図】図２
2017130080.tif 000002
【特許請求の範囲】
【請求項１】
印刷制御プログラムであって、
印刷設定の指示を受け付け、当該受け付けた印刷設定の情報を含んだプリントチケットを生成する設定情報生成機能と、
所定のスクリプト言語を解釈して前記プリントチケットに対する処理を行う第１言語機能と、
前記第１言語機能による処理後の前記プリントチケットに基づいて印刷対象の印刷処理を行う第２言語機能と、をコンピューターに実現させ、
前記第２言語機能が前記印刷設定の情報に基づく設定処理を行うことを特徴とする印刷制御プログラム。
【請求項２】
前記第２言語機能は、前記コンピューターにとってのネイティブコードを解釈して処理を行うことを特徴とする請求項１に記載の印刷制御プログラム。
【請求項３】
前記第１言語機能は、前記プリントチケットに含まれている前記印刷設定の情報を所定の保存領域に保存した上で、前記プリントチケットの変換処理を行い、当該処理後の前記プリントチケットに前記保存した前記印刷設定の情報を含ませる、ことを特徴とする請求項１または請求項２に記載の印刷制御プログラム。
【請求項４】
前記印刷設定の情報に基づく設定処理とは、前記印刷設定の情報に含まれる複数の項目間の競合を排して印刷設定を確定する処理であることを特徴とする請求項１〜請求項３のいずれかに記載の印刷制御プログラム。
【請求項５】
前記印刷対象を表現する印刷対象データを生成するアプリケーションへ前記生成したプリントチケットを提供し、前記アプリケーションから前記印刷対象データと前記プリントチケットとを取得することを特徴とする請求項１〜請求項４のいずれかに記載の印刷制御プログラム。
【請求項６】
印刷設定の指示を受け付け、当該受け付けた印刷設定の情報を含んだプリントチケットを生成する設定情報生成部と、
所定のスクリプト言語を解釈して前記プリントチケットに対する処理を行う第１言語処理部と、
前記第１言語処理部による処理後の前記プリントチケットに基づいて印刷対象の印刷処理を行う第２言語処理部と、を備え、
前記第２言語処理部が前記印刷設定の情報に基づく設定処理を行うことを特徴とする印刷制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御プログラムおよび印刷制御装置に関する。
【背景技術】
【０００２】
オペレーティングシステム（以下、ＯＳ）としての、Microsoft（登録商標）社が提供するWindows（登録商標）において動作するVersion4プリンタードライバー（以下、Ｖ４プリンタードライバー）が知られている。また、ＸＰＳ（XML Paper Specification）仕様で記述されたＸＰＳファイルを処理するＸＰＳプリンタードライバーが開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３‐２５７８２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
Ｖ４プリンタードライバーは、アプリケーションからの印刷指示に応じて印刷処理を行う過程で、Microsoft社が定めたアーキテクチャー上、スクリプト言語を用いて処理を行う段階を有している。スクリプト言語の性質上、処理に比較的多くの時間を要する。ユーザーは印刷の高速化を望むため、前記アーキテクチャーによる制約の下でも、処理時間の短縮に向けた工夫が必要である。
【０００５】
本発明は上述の課題に鑑みてなされたものであり、印刷の高速化に寄与する印刷制御プログラムおよび印刷制御装置を提供する。
【課題を解決するための手段】
【０００６】
本発明の態様の１つは、印刷制御プログラムであって、印刷設定の指示を受け付け、当該受け付けた印刷設定の情報を含んだプリントチケットを生成する設定情報生成機能と、所定のスクリプト言語を解釈して前記プリントチケットに対する処理を行う第１言語機能と、前記第１言語機能による処理後の前記プリントチケットに基づいて印刷対象の印刷処理を行う第２言語機能と、をコンピューターに実現させ、前記第２言語機能が前記印刷設定の情報に基づく設定処理を行う。
【０００７】
当該構成によれば、前記印刷設定の情報に基づく設定処理を、スクリプト言語を解釈して処理を行う第１言語機能ではなく、第２言語機能が担当する。これにより第１言語機能の負担が減り、印刷制御プログラムによる処理時間を短縮することができる。
【０００８】
本発明の態様の１つは、前記第２言語機能は、前記コンピューターにとってのネイティブコードを解釈して処理を行うとしてもよい。
当該構成によれば、第２言語機能は、コンピューターにとってのネイティブコードつまり機械語を解釈して処理を行うため、このような第２言語機能が前記設定処理を担当することで、処理時間が確実に短くなる。
【０００９】
本発明の態様の１つは、前記第１言語機能は、前記プリントチケットに含まれている前記印刷設定の情報を所定の保存領域に保存した上で、前記プリントチケットの変換処理を行い、当該処理後の前記プリントチケットに前記保存した前記印刷設定の情報を含ませるとしてもよい。
当該構成によれば、第１言語機能がプリントチケットの変換処理を行う過程で、前記印刷設定の情報が改変されたりその一部が失われたりすることを防止できる。
【００１０】
本発明の態様の１つは、前記印刷設定の情報に基づく設定処理とは、前記印刷設定の情報に含まれる複数の項目間の競合を排して印刷設定を確定する処理である。
当該構成によれば、第１言語機能をこのような設定処理の負担から解放する（代わりに、第２言語機能に当該設定処理を担当させる）ことで、処理時間を短縮することができる。
【００１１】
本発明の態様の１つは、印刷制御プログラムは、前記印刷対象を表現する印刷対象データを生成するアプリケーションへ前記生成したプリントチケットを提供し、前記アプリケーションから前記印刷対象データと前記プリントチケットとを取得するとしてもよい。
当該構成によれば、印刷制御プログラムは、アプリケーションへ前記生成したプリントチケットを提供した後、印刷指示（印刷対象データとプリントチケットとを含む指示）を得て、第１言語機能や第２言語機能による各処理を行うことができる。
【００１２】
本発明の技術的思想は、印刷制御プログラム以外によっても実現される。例えば、当該プログラムを記憶したコンピューター読み取り可能な記憶媒体や、当該プログラムと協働して処理を実行するコンピューター等のハードウェア（印刷制御装置）、印刷制御装置が実行する工程を含んだ方法（印刷制御方法）等をそれぞれ発明として捉えることができる。
【図面の簡単な説明】
【００１３】
【図１】印刷制御装置の構成を例示するブロック図。
【図２】印刷制御処理を示すフローチャート。
【図３】PrintTicketの一例を示す図。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら本発明の実施形態を説明する。
図１は、本実施形態にかかる印刷制御装置１０の構成を例示するブロック図である。印刷制御装置１０は、例えば、ＲＡＭ、ＲＯＭ、ＣＰＵ等を備えるＩＣやその他の記憶媒体等による制御部２０を備える。制御部２０では、ＣＰＵが、ＲＯＭやその他の記憶媒体に記録されたプログラム（例えば、アプリケーション１３やプリンタードライバー１２等）に従った処理をＯＳ１１の下で実行することができる。ＯＳ１１が管理する環境下に、Ｖ４プリンタードライバーの一種であるプリンタードライバー（以下、ドライバー）１２がインストールされている。ドライバー１２は、本発明にかかる印刷制御プログラムの一例に該当する。ＯＳ１１は、Ｖ４プリンタードライバーが動作可能なＯＳ（Windows）である。
【００１５】
印刷制御装置１０は、図示しないインターフェースを備えており、印刷制御装置１０には当該インターフェースを介して入力部５０と表示部５１とプリンター５２とが接続される。入力部５０はユーザーの入力操作を受け付けるための手段であり、マウス、キーボード、タッチパネル、各種入力キー等が該当し得る。表示部５１は、制御部２０が出力する信号に応じて任意の画像を表示するディスプレイである。なお、前記タッチパネルは、表示部５１に表示される。プリンター５２は、ドライバー１２によって駆動制御される印刷装置であり、制御部２０が出力するレンダリング後の印刷データに基づいて印刷を実行する。
【００１６】
印刷制御装置１０は、例えば、ＰＣ（パーソナルコンピューター）、タブレット型端末、スマートフォン等といった、プリンター５２に対する制御装置となり得る様々な装置によって実現される。印刷制御装置１０に含まれる構成の一部（少なくとも制御部２０を含む構成）を指して、本発明にかかる印刷制御装置と把握してもよい。また、印刷制御装置１０、入力部５０、表示部５１およびプリンター５２は、それぞれが独立した製品であってもよいし、一体的に構成された一製品であってもよい。例えば、入力部５０および表示部５１は、印刷制御装置１０に含まれる構成であってもよい。あるいは、印刷制御装置１０、入力部５０および表示部５１はいずれも、プリンター５２の一部であるとしてもよい。この場合、プリンター５２を、印刷制御装置と称することができる。
【００１７】
アプリケーション１３は、入力部５０による操作内容を受け付けて、ドキュメントやＣＧや写真等を要素として含み得る印刷対象を表現する印刷対象データ（画像ファイル）を生成するためのソフトウェアである。ドライバー１２は、ユーザーインターフェース（ＵＩ）モジュール１２ａ、第１言語処理モジュール１２ｂ、第２言語処理モジュール１２ｃ等を有する。
【００１８】
ＵＩモジュール１２ａは、表示部５１へのＵＩ画面の表示制御、入力部５０の操作による当該ＵＩ画面を通じた入力の受け付け、当該ＵＩ画面を通じた入力に従った情報処理等を行うためのモジュールである。ＵＩモジュール１２ａに従って制御部２０が実現する機能の一部に、設定情報生成機能が含まれる。また、このようなＵＩモジュール１２ａは、設定情報生成部に該当する。
【００１９】
第１言語処理モジュール１２ｂは、所定のスクリプト言語を解釈して処理を行うためのモジュールである。当該スクリプト言語としては、例えば、JavaScriptが挙げられる。第１言語処理モジュール１２ｂに従って制御部２０が実現する機能を、第１言語機能と呼ぶ。また、このような第１言語処理モジュール１２ｂは、第１言語処理部に該当する。
【００２０】
第２言語処理モジュール１２ｃは、ネイティブコード、つまり制御部２０（制御部２０のＣＰＵ）がＯＳ１１の下で直接解釈できる機械語で処理を行うためのモジュールである。第２言語処理モジュール１２ｃに従って制御部２０が実現する機能を、第２言語機能と呼ぶ。また、このような第２言語処理モジュール１２ｃは、第２言語処理部に該当する。
【００２１】
図２は、制御部２０が実行する印刷制御処理をフローチャートにより示している。図２において、アプリケーション処理１００は、アプリケーション１３による処理を示し、ＵＩ処理２００は、ＵＩモジュール１２ａによる処理を示し、ＯＳ処理３００は、ＯＳ１１による処理を示し、スクリプト言語処理４００は、第１言語処理モジュール１２ｂによる処理を示し、ネイティブコード処理５００は、第２言語処理モジュール１２ｃによる処理を示す。
【００２２】
アプリケーション１３は、ドライバー１２のＵＩモジュール１２ａに対して、ＵＩ起動指示を送る（ステップＳ１１０）。具体的には、印刷制御装置１０において、アプリケーション１３が起動している状態で、ユーザーがドライバー１２のＵＩ画面を表示するめの所定操作を入力部５０により行った場合に、当該操作に応じてＵＩ起動指示が送られる。
【００２３】
ＵＩモジュール１２ａは、ＵＩ起動指示を契機として、ＵＩ画面を表示部５１に表示させ、ＵＩ画面を介して印刷設定の指示を受け付ける（ステップＳ２１０）。ユーザーは、表示部５１に表示されたＵＩ画面に対する入力により、印刷設定の複数の項目に関して任意に指示をすることができる。ユーザーは、例えば、用紙サイズ、用紙種類、紙面への割り付け方法、カラーまたはモノクロ印刷、片面または両面印刷…等の様々な項目について設定を行うことができる。ＵＩモジュール１２ａは、このようにＵＩ画面上で各項目について指示された結果（印刷設定情報）を、一時的にバイナリーデータとして保持する。ユーザーが、ＵＩ画面を閉じた（例えば、ＵＩ画面に含まれる“ＯＫボタン”を操作してＵＩ画面を閉じた）タイミングでステップＳ２１０が終了する。
【００２４】
次に、ＵＩモジュール１２ａは、プリントチケット（PrintTicket）に、ステップＳ２１０の受け付けにより取得した印刷設定情報を埋め込む処理を行う（ステップＳ２２０）。PrintTicketは、ドライバー１２が有する複数の機能に関する設定を記述したＸＭＬ形式のファイルである。上述したように、ステップＳ２１０の時点では印刷設定情報はバイナリーデータである。そこで、ＵＩモジュール１２ａは、印刷設定情報をPrintTicketに埋め込むために、バイナリーデータをテキストデータに変換するエンコーダー（例えば、Ｂａｓｅ６４エンコーダー）を用いて、印刷設定情報を変換する。そして、当該変換後の印刷設定情報を、PrintTicket内に埋め込む。このようなステップＳ２１０，Ｓ２２０は、印刷設定の指示を受け付け、当該受け付けた印刷設定の情報を含んだプリントチケットを生成する処理であると言える。
【００２５】
図３は、ＵＩモジュール１２ａが生成したPrintTicket３０の一例を示している。PrintTicket３０を構成する記述のうち、一部の記述４０が前記バイナリーデータからテキストデータへの変換を経て埋め込まれた印刷設定情報に該当する。
【００２６】
ＵＩモジュール１２ａは、ステップＳ２２０までの処理により生成したPrintTicketを、アプリケーション１３へ提供する（ステップＳ２３０）。
アプリケーション１３は、PrintTicketを取得し（ステップＳ１２０）、これに応じてＯＳ１１へ印刷指示を送る（ステップＳ１３０）。アプリケーション１３は、印刷対象データおよび前記取得したPrintTicketと共に印刷指示を送る。この結果、ＯＳ１１を介して、ドライバー１２が印刷対象データおよびPrintTicketを取得できる。
【００２７】
前記印刷指示を契機として、ＯＳ１１は、印刷に関する所定指示を第１言語処理モジュール１２ｂへ送り（ステップＳ３１０）、第１言語処理モジュール１２ｂはＯＳ１１からの当該指示に対して応答する（ステップＳ４００）。このようなＯＳ１１と第１言語処理モジュール１２ｂとの間でのやり取り（ステップＳ３１０，Ｓ４００）は、Microsoft社が定めたアーキテクチャー上、必ず発生する処理であり複数回続く。ステップＳ３１０，Ｓ４００の中では、ＯＳ１１から第１言語処理モジュール１２ｂへPrintTicketが送られ、また、第１言語処理モジュール１２ｂがＯＳ１１からの指示に応じて処理したPrintTicketがＯＳ１１へ返される（このようなやり取りが複数回続く）。また、第１言語処理モジュール１２ｂは、ＸＭＬ形式のPrintTicketをDevmodeと呼ばれるバイナリー形式のデータに変換する機能と、DevmodeをＸＭＬ形式のPrintTicketに変換する機能とを有している。Devmodeは、ＯＳ１１が保存等するために必要な、Microsoft社が定義する特定のデータ構造である。第１言語処理モジュール１２ｂは、ステップＳ３１０，Ｓ４００の中でＯＳ１１との間でPrintTicketをやり取りするために、前記変換を繰り返し実行する。
【００２８】
ここで、第１言語処理モジュール１２ｂは、PrintTicketに含まれている印刷設定情報に基づく設定処理を実行可能であり、従来、第１言語処理モジュール１２ｂは、ＯＳ１１からの指示に応じて当該設定処理を実行していた。この設定処理は、印刷設定情報に含まれる複数の項目間の競合を排して印刷設定を確定する処理であり、Validate処理とも呼ぶ。ユーザーがＵＩ画面を通じて任意に指示した印刷設定の複数の項目の中には、競合する（両立させられない）組み合わせが存在し得る。例えば、用紙種類の項目で“写真用紙”が指示され、片面または両面印刷を選択する項目で“両面印刷”が指示されている場合等である。写真用紙は、裏面への印刷ができない媒体であるため、写真用紙と両面印刷は競合する。設定処理（Validate処理）では、このような競合を排し（例えば、ユーザーの指示による両面印刷という現在の設定を片面印刷に変更し）、印刷設定情報を整合が取れた内容にして確定させる。本実施形態では、このような設定処理（Validate処理）を、第１言語処理モジュール１２ｂは実行せず、後述するように第２言語処理モジュール１２ｃが実行する。
【００２９】
本実施形態では、第１言語処理モジュール１２ｂは、ステップＳ４００において、PrintTicketに含まれている印刷設定情報の一次退避および埋込（ステップＳ４１０）を行う。先ず、一次退避とは、PrintTicketに含まれている印刷設定情報を、制御部２０における所定の保存領域に保存する処理を言う。このような一時退避をした後で、第１言語処理モジュール１２ｂは、ＯＳ１１からの指示に応答して前記アーキテクチャーに則った所定の処理（PrintTicketの変換（ＸＭＬ形式のPrintTicket→Devmodeへの変換、Devmode→ＸＭＬ形式のPrintTicketへの変換）を含んだ処理）を進める。そして、ＯＳ１１からの当指示に応じた処理後のPrintTicketに、前記所定の保存領域に保存（一次退避）しておいた印刷設定情報を再び含ませる（埋込）。
【００３０】
本実施形態では、PrintTicketに含まれる印刷設定情報に基づく設定処理（Validate処理）を、第１言語処理モジュール１２ｂではなく、第２言語処理モジュール１２ｃが実行する。そのためには、印刷設定情報が、改変や喪失されることなく第２言語処理モジュール１２ｃへ正確に伝わる必要がある。上述のＯＳ１１と第１言語処理モジュール１２ｂとの間でのやり取り（ステップＳ３１０，Ｓ４００）の中では、PrintTicketに対する変換が繰り返し必要とされるが、このような変換処理の過程でPrintTicketに含まれる印刷設定情報の一部が意図せずに改変されたり、喪失したりする可能性がある。このような改変や喪失のおそれを鑑みて、本実施形態では、PrintTicketに含まれる印刷設定情報について、前記一次退避および埋込（ステップＳ４１０）を行う。これにより、上述のＯＳ１１と第１言語処理モジュール１２ｂとの間でのやり取り（ステップＳ３１０，Ｓ４００）の間は、印刷設定情報は確実に保持され、その後に、正確な印刷設定情報を第２言語処理モジュール１２ｃへ提供することが可能となる。
【００３１】
次に、ＯＳ１１は、第２言語処理モジュール１２ｃに対して印刷指示を送る（ステップＳ３２０）。このときＯＳ１１は、印刷対象データやPrintTicket（ステップＳ４００を経たPrintTicket）等を含ませたＸＰＳファイルと共に印刷指示を送る。ＸＰＳファイルは、第２言語処理モジュール１２ｃが解釈可能な形式のデータである。
【００３２】
印刷指示を受けた第２言語処理モジュール１２ｃは、ＸＰＳファイル内のPrintTicketに含まれる印刷設定情報に基づいて、設定処理（Validate処理）を行う（ステップＳ５１０）。第２言語処理モジュール１２ｃは、テキストデータである印刷設定情報をバイナリーデータにデコードした上で、印刷設定情報の内容を認識し、設定処理（Validate処理）を行う。この結果、印刷設定情報は、複数の項目間に競合が無い状態となり、その内容が確定する。
【００３３】
次に、第２言語処理モジュール１２ｃは、PrintTicketに基づいて印刷対象の印刷処理を行う（ステップＳ５２０）。この場合、ＸＰＳファイルに含まれている印刷対象データに対するレンダリングにより、例えば、ビットマップデータ化、色変換処理、ハーフトーン処理、並べ替え処理等を実行し、印刷対象データからプリンター５２が解釈可能な（印刷を実行可能な）印刷データを生成する。このような印刷データの生成に際して、PrintTicketにおける各種情報を反映させる。つまり、用紙サイズ、割り付け方法、カラーまたはモノクロ印刷…等といった各種印刷設定に従って前記レンダリングを実行して、プリンター５２へ送信するための印刷データを生成する。このように印刷データを生成し、当該印刷データや印刷設定情報を示すコマンドをプリンター５２へ送信してプリンター５２を駆動させる（プリンター５２に印刷を実行させる）ステップが、印刷処理である。
【００３４】
このように本実施形態によれば、印刷制御装置１０は、印刷設定の指示を受け付け、印刷設定情報を含んだPrintTicketを生成するＵＩモジュール１２ａと、所定のスクリプト言語を解釈してPrintTicketに対する処理を行う第１言語処理モジュール１２ｂと、第１言語処理モジュール１２ｂによる処理後のPrintTicketに基づいて印刷対象の印刷処理を行う第２言語処理モジュール１２ｃとを有し、印刷設定情報に基づく設定処理（Validate処理）を、第１言語処理モジュール１２ｂではなく、第２言語処理モジュール１２ｃが実行する。これにより、スクリプト言語を用いるために処理が比較的遅い第１言語処理モジュール１２ｂの負担が軽減され、ドライバー１２による処理時間が短縮される（印刷が高速化される）。特に、第２言語処理モジュール１２ｃは、ネイティブコードを解釈して高速に処理可能なモジュールであるため、このような第２言語処理モジュール１２ｃが第１言語処理モジュール１２ｂの代わりに設定処理（Validate処理）を受け持つことで、印刷の高速化が確実なものとなる。
【００３５】
ドライバー１２がサポートする機能（印刷設定の項目数や項目毎の選択肢）がドライバー１２のアップデート等により増えれば増える程、上述した設定処理（Validate処理）は複雑化するため、これをスクリプト言語を用いて処理する第１言語処理モジュール１２ｂに実行させる場合は、ドライバー１２のパフォーマンスが大きく低下し得る。しかし、本実施形態のように、第２言語処理モジュール１２ｃが第１言語処理モジュール１２ｂの代わりに設定処理（Validate処理）を実行することで、ドライバー１２がサポートする機能が増加しても、このようなパフォーマンスの低下を抑制することができる。
【符号の説明】
【００３６】
１０…印刷制御装置、１１…ＯＳ、１２…プリンタードライバー、１２ａ…ＵＩモジュール、１２ｂ…第１言語処理モジュール、１２ｃ…第２言語処理モジュール、１３…アプリケーション、２０…制御部、３０…PrintTicket、５０…入力部、５１…表示部、５２…プリンター
【図１】
2017130080.tif 000003
【図２】
2017130080.tif 000004
【図３】
2017130080.tif 000005