JP2018022527A - 情報処理装置及びその制御方法とプログラム - Google Patents

情報処理装置及びその制御方法とプログラム Download PDF

Info

Publication number
JP2018022527A
JP2018022527A JP2017207215A JP2017207215A JP2018022527A JP 2018022527 A JP2018022527 A JP 2018022527A JP 2017207215 A JP2017207215 A JP 2017207215A JP 2017207215 A JP2017207215 A JP 2017207215A JP 2018022527 A JP2018022527 A JP 2018022527A
Authority
JP
Japan
Prior art keywords
xps
data
drawing data
format
gdi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017207215A
Other languages
English (en)
Other versions
JP6437076B2 (ja
Inventor
南陽 母里
Namiharu Mori
南陽 母里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017207215A priority Critical patent/JP6437076B2/ja
Publication of JP2018022527A publication Critical patent/JP2018022527A/ja
Application granted granted Critical
Publication of JP6437076B2 publication Critical patent/JP6437076B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】GDIアプリからの同じ描画命令でありながら、使用するプリンタドライバの種類によって印刷結果に差が生じてしまうのを防ぐ。
【解決手段】XPS形式の描画データから印刷装置に対応した印刷データを生成するプリンタドライバにおいて、当該入力されたXPS形式の描画データが、GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから変換モジュールで変換されたXPS形式の描画データであり、且つ、当該入力されたXPS形式の描画データが所定のグラフィック描画命令を含む、と判定した場合、当該所定のグラフィック描画命令を前記印刷装置で表現可能な特定の描画を指定するグラフィック描画命令に変更し、当該変更後のグラフィック描画命令を含む描画データに基づいて印刷データを生成する、ように構成する。
【選択図】図5

Description

本発明は、プリンタドライバの描画制御技術に関するものである。
マイクロソフト社のプリンティングシステムでは、従来よりGDI(Graphic Device Interface)と呼ばれるグラフィックスエンジンが使用されてきた。GDIを用いた従来の印刷処理フローは、以下のとおりである。
1)ユーザからの印刷指示に応じて、GDIアプリケーション(以下「GDIアプリ」と呼ぶ。)がGDIのサービス関数群を呼び出して描画命令を発行する。
2)発行されたGDI描画命令は、描画データとしてスプールされ、GDI用のプリンタドライバ(以下「GDIドライバ」と呼ぶ)に渡される。
3)GDIドライバでは、GDI描画命令で構成される描画データ(以下、「GDI形式の描画データ」と呼ぶ。)を印刷装置が解釈可能な印刷データ(いわゆるPDLデータ)に変換し、印刷装置に出力する。
このような、GDIアプリからGDIドライバを介して印刷を行う処理フローを「GDIプリントパス」と呼ぶこととする。近年、このGDIプリントパスに、XPSプリントパスと呼ばれる新しい印刷処理フローが追加された。XPSは、XMLベースの電子文書フォーマットで、XML Paper Specificationの略である。XPSプリントパスでは、XPSを扱うアプリケーション(以下「XPSアプリ」と呼ぶ。)でXPS形式の描画データを生成し、XPS用のプリンタドライバ(以下、「XPSドライバ」と呼ぶ。)にて印刷データに変換され、印刷装置に出力される。
GDIプリントパスとXPSプリントパスとは排他的な関係にあるわけではなく、例えばGDIアプリがGDIを使って生成したGDI形式の描画データをXPS形式の描画データに変換してXPSドライバで印刷データにすることが可能である。また、逆にXPSアプリによるXPS形式の描画データをGDI形式の描画データに変換してGDIドライバで印刷データにすることも可能である。すなわち、GDIアプリからXPSドライバを介して印刷を行う印刷処理フローや、XPSアプリからGDIドライバを介して印刷を行う印刷処理フローも存在する。例えば、GDIアプリからXPSドライバを用いて印刷を行う場合、GDI形式の描画データが変換モジュールによってXPS形式の描画データに変換される。この変換モジュールはMXDW(Microsoft XPS Document Writer)と呼ばれる。XPS形式に変換された描画データは、XPSスプールファイルに格納された後、XPSドライバにて印刷データへ変換される。
このようにWindows(登録商標)VISTA以降のOSにおいては4つの印刷処理フローが利用可能になっている。これにより、GDIドライバあるいはXPSドライバのどちらか一方を用意すれば、GDIアプリおよびXPSアプリの両方で生成された描画データの印刷処理に対応することが出来る。
しかしながら、XPS形式とGDI形式とでは仕様が異なることから、描画データの形式変換には様々な問題が存在する。その一例として、印刷可能領域からはみ出した部分に印刷画像を割り当てた印刷要求が、GDIアプリからXPSドライバに対して発行されてしまうという問題が挙げられる。この問題に対しては、XPSドライバに入力されるXPS形式の描画データが、GDIアプリ由来のものか、XPSアプリ由来のものかを判断して印刷可能領域内に印刷されるように制御する技術が提案されている(特許文献1)。
特開2008−276745号公報
そして、描画データの形式変換における問題として、上述の問題の他に、グラフィック属性のオブジェクトの描画に関する問題の存在が明らかとなった。例えば、グラフィック属性のオブジェクトの描画命令でオブジェクト幅=0を指定した場合、プリンタドライバによってオブジェクト(例えば、線)が描画されたりされなかったりするという問題である。この問題は、GDI形式におけるオブジェクト幅=0はデバイスで表示できる最小の幅を意味するのに対し、XPS形式におけるオブジェクト幅=0は当該オブジェクトをまったく描画しないことを意味することに起因している。つまり、GDIアプリがGDIを介して生成した描画データにオブジェクト幅=0の線の描画を指定する描画命令が含まれる場合に、GDIドライバで印刷を行えば線が描画されるのに対し、XPSドライバでの印刷では線が描画されないことになる。すなわち、同じGDIアプリからなされた同じ描画命令であるにも関わらず、所定のグラフィック描画命令に対して、利用するプリンタドライバの種類によって印刷結果に違いが出るのでは、印刷品質に大きな影響を及ぼすことになる。
本発明に係る情報処理装置は、入力されたXPS形式の描画データから、印刷装置に対応した印刷データを生成するプリンタドライバを備えた情報処理装置であって、前記プリンタドライバは、前記入力されたXPS形式の描画データが、GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから変換モジュールで変換されたXPS形式の描画データであるかどうかを判定し、当該入力されたXPS形式の描画データが、所定のグラフィック描画命令を含むかどうかを判定し、当該判定の結果、前記入力されたXPS形式の描画データが、前記GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから前記変換モジュールで変換されたXPS形式の描画データであり、且つ、前記所定のグラフィック描画命令を含む、と判定した場合、当該所定のグラフィック描画命令を前記印刷装置で表現可能な描画を指定するグラフィック描画命令に変更し、当該変更後のグラフィック描画命令を含む描画データに基づいて前記印刷データを生成する、ことを特徴とする。
本発明によれば、入力されたXPS形式の描画データから印刷装置に対応する印刷データを生成するプリンタドライバ(XPSドライバ)において、当該入力されたXPS形式の描画データが、GDIアプリケーションの印刷処理で生成されたGDI形式の描画データから所定の変換モジュールによってXPS形式の描画データに変換されたものであり、且つ、所定のグラフィック描画命令を含んでいる場合、当該所定のグラフィック描画命令を印刷装置で表現可能な特定の描画を指定するグラフィック描画命令に変更し、当該変更後のグラフィック描画命令を含む描画データに基づいて印刷データを生成することにより、GDIアプリケーションからの同じ描画命令でありながら、使用するプリンタドライバの種類がXPSドライバであるかGDIドライバであるかによって印刷結果に差が生じてしまうのを防ぐことができる。
印刷データを生成する情報処理装置の構成の一例を示す機能ブロック図である。 情報処理装置のハードウェア構成の一例を示すブロック図である。 UIドライバの内部構成の一例を示す図である。 グラフィックスドライバの内部構成の一例を示す図である。 印刷データ生成処理の流れを示すフローチャートである。 XPSデータのデータ構造を示す図である。 実施例1に係るアプリ判定処理の詳細を示すフローチャートである。 (a)は探索文字列設定情報の一例を示す図であり、(b)は探索の対象ファイルとしてのプリントチケットの一例を示す図である。 描画命令変更処理の詳細を示すフローチャートである。 XPSドライバのUI画面の一例を示す図である。 実施例2に係るアプリ判定処理の詳細を示すフローチャートである。 実施例2に係るプリントチケットの一例である。
以下、図面を参照して本発明の実施の形態を詳しく説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
[実施例1]
図1は、本実施例に係る、印刷データを生成する情報処理装置の構成の一例を示す機能ブロック図である。情報処理装置100には、不図示のオペレーティングシステム(以下、OS)がインストールされている。本実施例では、OSとしてWindows(登録商標)を前提としている。そして、情報処理装置100には描画データを生成するソフトウェアとして、GDIアプリケーション110とXPSアプリケーション120の2種類の描画用ソフトウェアがOS上で動作する。GDIアプリ110は、ユーザからの印刷指示を受けてGDI関数を呼び出して、オブジェクトの属性(文字、グラフィック、イメージなど)に応じたGDI形式の描画データを、GDI111を用いて生成する。GDI111は、一般にグラフィックスエンジンと呼ばれる。GDI形式の描画データは、そのままではXPSドライバ130で入力が受け付けられないので、MXDW112に送られる。MXDW112は、GDI−XPS変換手段であって、GDI形式の描画データをXPS形式の描画データに変換するモジュールでありOSによって提供される。MXDW112によってXPS形式に変換された描画データが、XPSドライバ130に入力される。XPSアプリ120は、XPS形式の描画データを直接生成する。なお、XPS形式の描画データは、WPF(Windows Presentation Foundation)と呼ばれるグラフィックエンジンを介して生成される場合もあるが、本発明の特徴とは無関係であるので説明を省く。XPSアプリ120で生成されたXPS形式の描画データは、そのままXPSドライバ130に入力される。
XPSドライバ130は、入力描画データとしてXPS形式の描画データのみを受け付けるプリンタドライバである。XPSドライバ130は、印刷部数や用紙サイズといった印刷設定を管理し、入力された描画データから印刷装置が解釈可能な印刷データ(PDLデータ)を生成する。XPSドライバ130で生成された印刷データは、スプーラ140を経て印刷装置に送信される。XPSドライバ130は、UIドライバ131、グラフィックスドライバ132、設定データ保持部133から構成される。UIドライバ131は、XPSドライバ130のユーザインタフェース画面(以下、UI画面)の表示や、ユーザから入力された印刷設定に関する情報の保存を行う。グラフィックスドライバ132は、UIドライバ131でユーザが設定した印刷設定情報に基づいて、XPS形式の描画データから印刷データを生成する。UIドライバ131及びグラフィックスドライバ132の詳細については後述する。設定データ保持部133は、XPSドライバ130が印刷データ生成時に参照する、印刷に関連する各種設定データを保持する。この設定データはXML形式で記述され、UIドライバ131及びグラフィックスドライバ132の動作設定に関する情報が含まれる。本実施例では、アプリケーションの種類を判定するための探索文字列に関する情報が設定データの一部として保持されており、印刷データ生成時に参照される。
図2は、情報処理装置100のハードウェア構成の一例を示すブロック図である。なお図2に示す構成は一例であって、情報処理装置100は単体の機器であっても、LANやWAN等のネットワークを介して接続がされた複数の機器からなるシステムであってもよい。情報処理装置100は、ROM206やハードディスク203に記憶された処理プログラムをCPU201が実行することで様々な処理を実現し、システムバス210に接続された各部を総括的に制御する。また、CPU201は、マウスカーソル等で指示されたコマンドに基づいて、予め登録されたウインドウを開くといった種々の処理を実行する。例えばユーザが印刷の実行を指示する際は、印刷設定のウインドウを開き、XPSドライバ130に対する各種設定を行う。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。ハードディスク203には、OS、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等が記憶される。XPSドライバ130もハードディスク203に保存される。ディスプレイコントローラ204は、不図示のディスプレイの表示を制御する。プリンタコントローラ205は、所定の双方向性インタフェース(不図示)を介して印刷装置に接続され、印刷装置との通信制御を担う。なお、CPU201は、例えばRAM202上に設定された表示情報RAMへのアウトラインフォントの展開(ラスタライズ)処理を実行し、ディスプレイ上でのWYSIWYG(ウィジウィグ)を可能としている。外部記憶ドライブ207は、CDやDVDといった記憶媒体とのアクセスを制御する。キーボードコントローラ209は、キーボードやポインティングデバイスからのキー入力を制御する。
続いて、UIドライバ131の詳細について説明する。図3は、UIドライバ131の内部構成の一例を示す図である。UIドライバ131は、UI表示部301、UI設定部302、ドライバ初期化部303、ドライバハンドル返却部304から構成される。
UI表示部301は、ユーザが印刷設定を行うためのUI画面をディスプレイ上に表示する。UI設定部302は、UI表示部301を介してユーザが設定または変更した印刷設定を保存する。ドライバ初期化部303は、UIドライバ131の初期化を行う。アプリケーションやGDI111からドライバ初期化指示を受けると、初期化処理で生成したドライバハンドルをアプリケーションまたはGDI111に渡す。ドライバハンドルとは、ドライバを固有に識別するための識別名である。初期化処理で生成したドライバハンドルはドライバハンドル返却部304にて初期化指示を出したアプリケーションに返却する。ドライバハンドルを受け取ったアプリケーションは、ユーザに対して印刷設定入力の許可や、XPSドライバ130に対して描画データの出力を行う。なお、ユーザが印刷設定を行うために、ドライバの初期化指示と共にUI画面の表示指示がUIドライバ131に渡される場合がある。その場合には、UI表示部301にてUIダイアログを表示する。
続いて、グラフィックスドライバ132の詳細について説明する。図4は、グラフィックスドライバ132の内部構成の一例を示す図である。前述したように、グラフィックスドライバ132はXPS形式の描画データ(以下、「XPSデータ」と呼ぶ。)を受け取って、印刷設定情報に応じた印刷データを生成し、スプーラ140を介して印刷装置に送信する機能を有する。グラフィックスドライバ132は、XPS解析部401と印刷データ生成部402とで構成される。
MXDW112又はXPSアプリ120から入力されるXPSデータは、ドキュメント情報の全てがXMLで記述されており、記述内容ごとの複数ファイルをZIP圧縮により1つにまとめている。入力されたXPSデータは、XPS解析部401において解凍された後に解析される。解析の内容としては、例えば、入力されたXPSデータがGDIアプリ110に由来するものかどうかの判定処理がある。解析処理の詳細については後述する。また、XPS解析部401は、印刷データの前段階のデータである中間データの生成も行なう。印刷データ生成部402は、中間データと印刷設定情報を基に印刷データ(PDLデータ)を生成する。生成された印刷データはスプーラ140に出力される。
次に、本実施例に係る、XPSドライバ130における印刷データ生成処理について詳しく説明する。図5は、印刷データ生成処理の流れを示すフローチャートである。この印刷データ生成処理は、XPSドライバ130に対する印刷指示に応答して開始する。具体的には、ユーザの印刷指示に応じてROM206に格納された所定のプログラムがRAM202に展開され、これをCPU201が実行することで実現される。
ステップ501において、XPSドライバ130に、MXDW112或いはXPSアプリ120からXPSデータが入力される。入力されたXPSデータは、グラフィックスドライバ132内のXPS解析部401に送られる。この時点でXPSデータはZIP形式の状態である。XPSドライバ130がXPSデータの入力を受け付けた時点では、それがXPSアプリ120から直接に入力されたものか、当初はEMF形式であった描画データがMXDW112でXPS形式に変換された後に入力されたものかは分からない。そこで、入力されたXPSデータが、GDIアプリ110に由来するものか、XPSアプリ120に由来するものかを識別するために後述のステップ503にてアプリ判定処理を行なう。
ステップ502において、XPS解析部402は、ZIP形式のXPSデータを解凍する。図6は、XPSデータのデータ構造を示す図である。XPSデータはツリー構造になっており、rootフォルダの下の第一階層に「Metadata」「_rels」、「Documents」といった複数のフォルダが存在する。
ステップ503において、XPS解析部402は、アプリ判定処理を行う。このアプリ判定処理は、入力されたXPSデータの生成元のアプリケーションが、GDIアプリ110であるのかXPSアプリ120であるのかを判定する処理である。アプリ判定処理の詳細については後述する。判定の結果、生成元のアプリがGDIアプリ110であれば、ステップ505に進む。一方、生成元のアプリがXPSアプリ120であれば、描画命令に手を加えることなくそのまま中間データを生成し、ステップ507に進む。
ステップ505において、XPS解析部401は、解凍して得られた「Documents」フォルダ内のページ単位のファイル内に、グラフィック属性のオブジェクトの幅として0が指定された描画命令が存在するかどうかを判定する。図6に示す“1.fpage”や“2.fpage”がページ単位のファイルであり、その中には、例えば、以下に示す「Path」の描画命令が含まれている。
<Path Data="F1 M 19.2,19.2 L 96,19.2" Stroke="#ffff0000" StrokeThickness="0" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round" Clip="M 0,0 L 0,1083.84 755.2,1083.84 755.2,0 z" />
上記「Path」は線の描画を指定する命令であり、各要素は線描画の設定内容を表している。例えばData要素は、(19.2, 19.2)の座標に移動(M)し、線(L)を(96, 19.2)に対して描画することを表している。そして、オブジェクト幅としての線幅に関する要素は“StrokeThickness”であり、その要素値が“0”であること、すなわちXPSの仕様では線を描画しないことを意味している。
判定の結果、オブジェクト幅が0のグラフィック描画命令が存在する場合は、ステップ506に進む。一方、オブジェクト幅が0のグラフィック描画命令が存在しない場合は、ファイル内の描画命令に手を加えることなく中間データを生成してステップ507に進む。
ステップ506において、XPS解析部401は、オブジェクト幅が0のグラフィック描画命令を、最小幅でのオブジェクト(例えば、線オブジェクト)の描画を指定するグラフィック描画命令に変更する処理を行なう。例えば、上述の「Path」の描画命令の場合、以下のように変更される。
<Path Data="F1 M 19.2,19.2 L 96,19.2" Stroke="#ffff0000" StrokeThickness="0.16" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round" Clip="M 0,0 L 0,1083.84 755.2,1083.84 755.2,0 z" />
上記具体例の場合、“StrokeThickness”の要素値“0”が、“0.16”に変更されており、これは0.16の幅(単位はpoint)で線を描画することを意味している。
このように、オブジェクト幅が0のグラフィック描画命令をXPSの仕様に従ってそのまま描画しないと解釈するのではなく、GDIの仕様に従ってデバイスの最小単位で描画するという内容に解釈し直し、描画命令の内容が変更される。この描画命令変更処理の具体的な流れについては後述する。そして、この描画命令変更処理の結果を踏まえて或いは描画命令変更処理の過程において中間データが生成され、印刷データ生成部402に送られる。
ステップ507において、印刷データ生成部402は、中間データと印刷設定情報に基づいて印刷データを生成する。生成された印刷データはスプーラに送られる。
以上が、XPSドライバ130における印刷データ生成処理の内容である。上述のとおり、EMF(GDI)とXPSとでは仕様が異なる、オブジェクト幅=0のグラフィック描画に関して生成元アプリケーションの種類に応じた印刷データの生成を行うことで、各アプリケーションで想定している仕様で印刷を行うことが可能となる。
続いて、上述した図5のフローチャートにおけるアプリ判定処理(ステップ503)の詳細について説明する。本実施例のアプリ判定処理では、予め設定された探索条件の情報に従って、XPS形式の描画データ内の所定のファイルから特定の文字列を探索することで、XPSドライバに入力されたXPSデータの生成元のアプリを特定する。図7は、本実施例に係るアプリ判定処理の詳細を示すフローチャートである。
ステップ701では、生成元アプリを特定するための探索文字列に関する設定情報が設定データ保持部133から取得される。図8(a)は、本ステップで取得する探索文字列設定情報の一例を示しており、XPSデータ内のどの部分(ファイル)を対象に如何なる文字列を探索するかが指定されている。図8(a)に示す探索文字列設定情報において、探索条件の単位であるSetting要素801は、「SearchString」、「SearchPath」、「Mode」の3つの要素をさらに有している。「SearchString」は探索する文字列を指定してする要素であり、ここではMXDW112を表す文字列である“microsoftxpsdocumentwriter”がその値として設定されている。MXDW112を指すこの文字列は、EMF形式からXPS形式に変換する際にMXDW112において、ジョブレベルのプリントチケットに記述されるものである。そのため、この文字列を含むプリントチケットを持つXPSデータはGDIアプリ110が生成元であると判断することができる。なお、MXDW112を表す文字列であればよいので“microsoftxpsdocumentwriter”に限定されるわけではない。
「SearchPath」は、XPSデータの中のどのファイルから文字列を探索するかを特定するためのパスを指定する要素である。ここではその値として“/MeaData/*_PT.xml”が設定されている。前述のとおりXPSデータは複数のファイルがZIP圧縮されたデータ形式であるため、「SearchPath」で探索先のパスを指定することによりどのファイルを探索するかを特定する。本実施例のように、正規表現を用いることで複数のファイル(例えば“A_PT.xml”や“B_PT.xml”といったファイル名のファイル)を探索対象にすることができる。ジョブレベルのプリントチケットのファイル名は“JOB_PT.xml”であるので、正規表現を用いることなく“JOB_PT.xml”の文字列を設定値としてもよい。「Mode」は、「SearchPath」で指定されたパスに対応するファイル内に「SearchString」で指定された探索文字列が存在した場合に、どの種類のアプリケーションに由来するXPSデータであるとするかを特定する要素である。ここではその値として“cpk:GDI”が設定されている。つまり、この場合、メタデータフォルダ内の“_PT.xml”をファイル名に含むファイル内に“microsoftxpsdocumentwriter”の文字列があれば、GDIアプリ110由来のXPSデータと判定されることになる。もし「Mode」要素の設定値として“cpk:XPS”が入っていれば、XPSアプリ120に由来すると判定されることになる。なお、図8(a)の例では探索条件は1つ(Setting要素が1つのみ)しか設定されていないが、複数の探索条件を設定し、いずれかの探索条件(Setting要素)を満たした場合に、アプリケーションの種類が特定されるようにしてもよい。このように設定情報において、XPSデータのどのファイルからどの文字列を探索し、見つかった場合にどの種類のアプリケーションと判定するか、という内容を定義している。これにより、プログラム自体はそのままで設定情報における定義変更によって探索条件を変更することができる。
ステップ702では、探索文字列の設定情報に従って、「SearchPath」で指定されたパスが示すファイル内に、「SearchString」で指定された探索文字列が存在するかどうかが判定される。図8(b)は、探索の対象ファイルとしてのプリントチケットの一例を示す図である。図8(b)に示す例では、“psf:PrintTicket”要素の“xmlns:ns0000”要素の中に上記探索文字列“microsoftxpsdocumentwriter”が含まれている。判定の結果、対象ファイル内に探索文字列が存在する場合はステップ703に進む。一方、対象ファイル内に探索文字列が存在しない場合はステップ704に進む。
ステップ703では、入力XPSデータについて、MXDW112を経由したGDIアプリ110が生成元であると決定され、本処理を終える。
ステップ704では、入力XPSデータについて、XPSアプリ120が生成元であると決定され、本処理を終える。
以上が、本実施例に係るアプリ判定処理の内容である。
続いて、上述した図5のフローチャートにおける描画命令変更処理(ステップ506)の詳細について説明する。図9は、描画命令変更処理の詳細を示すフローチャートである。
ステップ901では、ユーザが設定した印刷設定情報から印刷解像度と印刷用紙サイズの情報が取得される。この印刷設定情報はXPSデータ内の上述のプリントチケットと呼ばれる部分に記述されている。XPS解析部401は、プリントチケットを解析して、印刷解像度と印刷用紙サイズの情報を取得する。図8(b)の例では、印刷解像度は“psk:PageResolution”要素にて100(dpi)が、印刷用紙サイズは“psk:PageMediaSize”要素にてA4に相当するサイズ(縦210mm×横297mm)がそれぞれ設定されている。
ステップ902では、取得した印刷解像度及び印刷用紙サイズの情報から、デバイスで表現可能な最小の幅である1ピクセル(pixel)の幅が導出される。例えば、上述のように印刷解像度が100(dpi)、印刷用紙サイズがA4に設定されていた場合、画像の画素数は縦827pixel×横1169pixelとなる。この場合、1ピクセルの幅として、約0.25mmが導出されることとなる。
ステップ903では、オブジェクト幅=0(XPS形式では「描画しない」を意味)を指定するグラフィック描画命令を、1ピクセル幅に相当するオブジェクト幅(ここでは0.25mm)でオブジェクトの描画を指定するグラフィック描画命令に変更する。
以上が、描画命令変更処理の内容である。この変更処理により、入力されたXPSデータの生成元アプリがGDIアプリであった場合、そのままでは何も描画されない内容の描画命令が、GDI(EMF)の仕様と同様、最小のオブジェクト幅で描画する描画命令に変更される。
なお、上述の例では、1ピクセル幅を計算によって求めているが、印刷装置や生成する印刷データの仕様によっては、線などのグラフィック属性のオブジェクトを最小幅で描画する専用の描画命令が予め用意されている場合もある。このような場合は、上述のステップ902における導出処理を省略し、図5のフローにおける印刷データの生成(ステップ507)にて、オブジェクト幅が0のグラフィック描画命令については、上記専用の描画命令に変更した上で印刷データを生成すればよい。この場合、印刷装置側でオブジェクト幅の計算が行われることになる。
また、本実施例では、情報処理装置にインストールされているプリンタドライバがXPSドライバのみの構成であったが、さらにGDIドライバがインストールされていてもよい。本実施例を適用することで、GDIアプリで生成した描画データについていずれのプリンタドライバを用いても同じ印刷結果を得ることができる。
本実施例によれば、XPSドライバに入力されたXPSデータがGDIアプリに由来する場合は、オブジェクト幅=0のグラフィック描画命令が、GDIアプリの仕様に則ってオブジェクトの最小幅での描画を指定するグラフィック描画命令に変更される。これにより、GDIアプリでユーザが意図した内容の印刷結果を、XPSドライバを介した印刷によって得ることができる。
[実施例2]
実施例1では、予め設定された探索条件の情報に従って、XPSデータ内の所定のファイルから特定の文字列を探索することで、XPSドライバに入力されたXPSデータの生成元のアプリを特定し、必要に応じて描画命令を変更する態様であった。次に、印刷時に使用するXPSドライバのユーザインタフェース画面でユーザが行なった設定内容に基づいて、XPSデータの生成元のアプリを特定する態様について、実施例2として説明する。なお、実施例1と基本的な構成は共通であり、以下では実施例1との差異点であるアプリ判定処理を中心に説明するものとする。
最初に、ユーザが印刷時に使用する、XPSドライバ130のユーザインタフェース画面(以下、UI画面)について説明する。図10は、XPSドライバ130のUI画面の一例を示す図である。このUI画面1000は、UIドライバ131のUI表示部301によって情報処理装置100のディスプレイ上に表示される。ユーザは印刷時、文書等の作成アプリケーションから図10に示すようなUI画面1000を使用して、出力用紙サイズや印刷の向きといった各種印刷設定を行う。このUI画面1000では、右上部にある「出力方式」の項目1001において、出力モードとして「印刷(GDI−XPS互換)」を選択できるようになっている。この「印刷(GDI−XPS互換)」は、GDIアプリによって生成した描画データを印刷出力するユーザが、GDIドライバで印刷する時と同様の印刷結果を、XPSドライバを介した印刷で得たい場合に選択するモードである。なお、ユーザが、「印刷(GDI−XPS互換)」を選択しなかった場合(例えば、通常の印刷を示す「印刷(通常)」を選択した場合)は、すべてXPSの仕様に従うことになる。すなわち、GDIアプリによって生成した描画データであったとしても、XPSの仕様に従って、オブジェクト幅=0のグラフィック描画命令はオブジェクトの描画を行なわない描画命令として扱われることになる。
図11は、本実施例に係るアプリ判定処理の詳細を示すフローチャートである。
ステップ1201では、受信したXPSデータの中から、印刷設定情報が記述されたファイルであるプリントチケットが取得され、内容の解析がなされる。この際、ユーザが印刷設定時に上述のUI画面1000の項目1001で選択した、出力モードの設定値を取得する。図12は、本実施例に係るXPSデータのプリントチケットの一例である。ここで、UI画面1000における出力方式の項目1001は、XPSデータのプリントチケット上では、「psk:OutputMode」要素で記載される。図12の例では、「psk:OutputMode」の要素値として“GDI”が設定されており、これは出力方式として「印刷(GDI−XPS互換)」が選択されたことを意味している。XPS解析部401はプリントチケット上の「psk:OutputMode」要素の設定値を読み取ることで、生成元のアプリケーションの種類を特定することが可能となる。
ステップ1102では、取得した出力モードの設定値(「psk:OutputMode」の要素値)が“GDI”であるかどうかが判定される。判定の結果、“GDI”である場合は、ステップ1103に進む。一方、“GDI”でない場合は、ステップ1104に進む。
ステップ1103では、入力されたXPSデータはMXDW112を経由したGDIアプリ110が生成元のXPSデータであると決定され、本処理を終える。
ステップ1104では、入力されたXPSデータは、XPSアプリ4が生成元のXPSデータであると決定され、本処理を終える。
以上が、本実施例に係るアプリ判定処理の内容である。
本実施例によっても、実施例1と同様、GDIアプリでユーザが意図した内容の印刷結果を、XPSドライバを介した印刷によって得ることができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

Claims (11)

  1. 入力されたXPS形式の描画データから、印刷装置に対応した印刷データを生成するプリンタドライバを備えた情報処理装置であって、
    前記プリンタドライバは、
    前記入力されたXPS形式の描画データが、GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから変換モジュールで変換されたXPS形式の描画データであるかどうかを判定し、
    当該入力されたXPS形式の描画データが、所定のグラフィック描画命令を含むかどうかを判定し、
    当該判定の結果、前記入力されたXPS形式の描画データが、前記GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから前記変換モジュールで変換されたXPS形式の描画データであり、且つ、前記所定のグラフィック描画命令を含む、と判定した場合、当該所定のグラフィック描画命令を前記印刷装置で表現可能な特定の描画を指定するグラフィック描画命令に変更し、
    当該変更後のグラフィック描画命令を含む描画データに基づいて前記印刷データを生成する、
    ことを特徴とする情報処理装置。
  2. 前記プリンタドライバは、予め設定された探索条件の情報に従って、前記入力されたXPS形式の描画データから特定の文字列を探索することで、前記XPS形式の描画データが前記GDIアプリケーションからの印刷処理に基づき生成されたGDI形式の描画データから前記変換モジュールで変換されたXPS形式の描画データであるかどうかを判定することを特徴とする請求項1に記載の情報処理装置。
  3. 前記プリンタドライバは、前記プリンタドライバのユーザインタフェース画面でユーザが行なった出力方式に関する設定内容に基づいて、前記入力されたXPS形式の描画データが、前記GDIアプリケーションからの印刷処理に基づき生成されたGDI形式の描画データから前記変換モジュールで変換されたXPS形式の描画データであるかどうかを判定することを特徴とする請求項1に記載の情報処理装置。
  4. 前記所定のグラフィック描画命令とは、オブジェクト幅が0のグラフィック描画命令であることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記プリンタドライバは、
    前記入力されたXPS形式の描画データ内のプリントチケットから印刷解像度と印刷用紙サイズの情報を取得して最小のオブジェクト幅を導出し、
    前記オブジェクト幅が0のグラフィック描画命令を、当該導出したオブジェクト幅での描画を指定するグラフィック描画命令に変更する、
    ことを特徴とする請求項4に記載の情報処理装置。
  6. 前記プリンタドライバは、前記オブジェクト幅が0のグラフィック描画命令を、前記印刷装置で表現可能な最小のオブジェクト幅での描画を指定する予め定められた専用のグラフィック描画命令に変更することを特徴とする請求項4に記載の情報処理装置。
  7. 前記オブジェクト幅が0のグラフィック描画命令は、線オブジェクトのグラフィック描画命令であることを特徴とする請求項4乃至6のいずれか1項に記載の情報処理装置。
  8. 前記プリンタドライバは、前記入力されたXPS形式の描画データが、XPSアプリケーションの印刷処理に基づき生成されるXPS形式の描画データである場合、当該XPS形式の描画命令に含まれるオブジェクト幅が0のグラフィック描画命令を変更しないことを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. 入力されたXPS形式の描画データから、印刷装置に対応した印刷データを生成するプリンタドライバによって実行される、印刷データ生成方法であって、
    前記印刷データ生成方法は、
    前記入力されたXPS形式の描画データが、GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから変換モジュールで変換されたXPS形式の描画データであるか判定する第1の判定ステップと、
    前記入力されたXPS形式の描画データが、所定のグラフィック描画命令を含むか判定する第2の判定ステップと、
    前記第1の判定ステップにおいて、前記入力されたXPS形式の描画データが、前記GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから前記変換モジュールで変換されたXPS形式の描画データであると判定され、且つ、前記第2の判定ステップにおいて、前記入力されたXPS形式の描画データが、前記所定のグラフィック描画命令を含むと判定された場合、当該所定のグラフィック描画命令を前記印刷装置で表現可能な特定の描画を指定するグラフィック描画命令に変更する変更ステップと、
    前記変更ステップで変更した後のグラフィック描画命令を含む描画データに基づいて前記印刷データを生成する生成ステップと、
    を含むことを特徴とする印刷データ生成方法。
  10. 入力されたXPS形式の描画データから、印刷装置に対応した印刷データを生成するプリンタドライバであって、
    前記プリンタドライバは、コンピュータを、
    前記入力されたXPS形式の描画データが、GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから変換モジュールで変換されたXPS形式の描画データであるかどうかを判定する第1の判定手段と、
    当該入力されたXPS形式の描画データが、所定のグラフィック描画命令を含むかどうかを判定する第2の判定手段と、
    前記第1の判定手段において、前記入力されたXPS形式の描画データが、前記GDIアプリケーションの印刷処理に基づき生成されたGDI形式の描画データから前記変換モジュールで変換されたXPS形式の描画データである、と判定し、且つ、前記第2の判定手段において、前記入力されたXPS形式の描画データが前記所定のグラフィック描画命令を含む、と判定した場合に、当該所定のグラフィック描画命令を前記印刷装置で表現可能な特定の描画を指定するグラフィック描画命令に変更する変更手段と、
    前記変更手段で変更した後のグラフィック描画命令を含む描画データに基づいて前記印刷データを生成する生成手段と、
    して機能させるためのプログラムであることを特徴とするプリンタドライバ。
  11. 前記所定のグラフィック描画命令とは、オブジェクト幅が0のグラフィック描画命令であり、
    前記印刷装置で表現可能な特定の描画を指定するグラフィック描画命令とは、前記印刷装置で表現可能な最小のオブジェクト幅での描画を指定するグラフィック描画命令である、ことを特徴とする請求項10に記載のプリンタドライバ。
JP2017207215A 2017-10-26 2017-10-26 情報処理装置及びその制御方法とプログラム Active JP6437076B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017207215A JP6437076B2 (ja) 2017-10-26 2017-10-26 情報処理装置及びその制御方法とプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017207215A JP6437076B2 (ja) 2017-10-26 2017-10-26 情報処理装置及びその制御方法とプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015209846A Division JP6234417B2 (ja) 2015-10-26 2015-10-26 情報処理装置及びその制御方法とプログラム

Publications (2)

Publication Number Publication Date
JP2018022527A true JP2018022527A (ja) 2018-02-08
JP6437076B2 JP6437076B2 (ja) 2018-12-12

Family

ID=61165669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017207215A Active JP6437076B2 (ja) 2017-10-26 2017-10-26 情報処理装置及びその制御方法とプログラム

Country Status (1)

Country Link
JP (1) JP6437076B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019192087A (ja) * 2018-04-27 2019-10-31 キヤノン株式会社 情報処理装置、プログラム、情報処理方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163700A (ja) * 2004-12-06 2006-06-22 Kyocera Mita Corp 描画処理装置及びプログラム
JP2007249857A (ja) * 2006-03-17 2007-09-27 Canon Inc 情報処理装置及びその制御方法、プログラム
JP2008276745A (ja) * 2007-04-02 2008-11-13 Seiko Epson Corp 印刷制御装置及び印刷文書の印刷方法
JP2009037510A (ja) * 2007-08-03 2009-02-19 Brother Ind Ltd 印刷制御装置およびプリンタドライバのプログラム
JP2012173989A (ja) * 2011-02-22 2012-09-10 Ricoh Co Ltd 印刷制御装置、プログラムおよび記録媒体
JP2015209846A (ja) * 2014-04-23 2015-11-24 ジョンソン エレクトリック ソシエテ アノニム 冷却ファンモジュールのための軸流ファン

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163700A (ja) * 2004-12-06 2006-06-22 Kyocera Mita Corp 描画処理装置及びプログラム
JP2007249857A (ja) * 2006-03-17 2007-09-27 Canon Inc 情報処理装置及びその制御方法、プログラム
JP2008276745A (ja) * 2007-04-02 2008-11-13 Seiko Epson Corp 印刷制御装置及び印刷文書の印刷方法
JP2009037510A (ja) * 2007-08-03 2009-02-19 Brother Ind Ltd 印刷制御装置およびプリンタドライバのプログラム
JP2012173989A (ja) * 2011-02-22 2012-09-10 Ricoh Co Ltd 印刷制御装置、プログラムおよび記録媒体
JP2015209846A (ja) * 2014-04-23 2015-11-24 ジョンソン エレクトリック ソシエテ アノニム 冷却ファンモジュールのための軸流ファン

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019192087A (ja) * 2018-04-27 2019-10-31 キヤノン株式会社 情報処理装置、プログラム、情報処理方法

Also Published As

Publication number Publication date
JP6437076B2 (ja) 2018-12-12

Similar Documents

Publication Publication Date Title
US8917405B2 (en) Information processing for generating graphics data processible by a printer
US8049906B2 (en) Print control unit, a control method thereof, a print control program, and a recording medium for converting document data into printing data
US8537438B2 (en) Information processing apparatus in which a plurality of types of print drivers and plurality of graphics units run, control method therefor, and program
JP2005228243A (ja) 情報処理装置及びその制御方法、プログラム
US8325368B2 (en) Print information conversion apparatus, printing apparatus, printing system, and computer readable medium
JP5235695B2 (ja) 印刷制御装置とその制御方法
US7861182B2 (en) Dynamic printer driver user interface generation
US9507544B2 (en) Information processing apparatus, recording medium, and control method to process print data using filters
US9928018B2 (en) Information processing apparatus and control method thereof, for a drawing control technique of a printer driver
US8320001B2 (en) Information processing method and apparatus for banner printing
JP2009187553A (ja) Pdf文書のテキストのみのコンテンツを印刷するための方法
JP6234417B2 (ja) 情報処理装置及びその制御方法とプログラム
JP2017151820A (ja) 情報処理装置、プログラム及び制御方法
JP6437076B2 (ja) 情報処理装置及びその制御方法とプログラム
US10310788B2 (en) Control method for generating data used for printing and information processing apparatus
JP2013058088A (ja) 情報処理装置、プログラム、記憶媒体
US8908227B2 (en) Image forming apparatus, image forming system, image data processing method, program, and storage medium
US9978005B2 (en) Printer for drawing bold character, method for controlling the same, and storage medium
US20100142001A1 (en) Information processing apparatus, method for controlling the information processing apparatus, and storage medium
JP2019144814A (ja) 情報処理装置、情報処理装置の制御方法およびプログラム
JP2010117907A (ja) 印刷制御装置、および印刷装置
JP2011039960A (ja) 情報処理装置とプログラムとコンピュータ読み取り可能な記録媒体
JP2020177298A (ja) 画像処理装置、画像処理方法、およびプログラム
JP5953727B2 (ja) 画像処理装置及びプログラム
JP2007115026A (ja) 印刷制御装置、印刷制御方法、印刷制御プログラム及び記録媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20180522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180717

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181113

R151 Written notification of patent or utility model registration

Ref document number: 6437076

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151