JP2009048467A - 拡大縮小印刷方法 - Google Patents

拡大縮小印刷方法 Download PDF

Info

Publication number
JP2009048467A
JP2009048467A JP2007214852A JP2007214852A JP2009048467A JP 2009048467 A JP2009048467 A JP 2009048467A JP 2007214852 A JP2007214852 A JP 2007214852A JP 2007214852 A JP2007214852 A JP 2007214852A JP 2009048467 A JP2009048467 A JP 2009048467A
Authority
JP
Japan
Prior art keywords
resolution
print
enlargement
printer
application
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.)
Pending
Application number
JP2007214852A
Other languages
English (en)
Inventor
Keiji Kawasaki
敬二 川嵜
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 JP2007214852A priority Critical patent/JP2009048467A/ja
Publication of JP2009048467A publication Critical patent/JP2009048467A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 スプールファイルが特定解像度で保存される印刷環境において、アプリケーションの生成した画像の解像度をそのまま用いて、軽量かつ劣化の少ない拡大・縮小印刷を実現する。
【解決手段】 アプリケーションに対して偽装解像度を返却して所望する解像度の画像を生成させると共に、物理用紙サイズに不要なマージンが挿入された場合はそれをレンダリング時に無視する構成を取る。
【選択図】 図11

Description

本発明は拡大縮小印刷方法に関するものである。
従来からホストコンピュータにおいて印刷コマンドを作成し、該作成した印刷コマンドをプリンタに出力し、プリンタによって紙媒体への記録を行わせる印刷システムが知られている。
このような構成で印刷を行う場合、ホストコンピュータでは、アプリケーションプログラム(以下、アプリケーション)からの印刷命令をプリンタドライバが解釈し、プリンタに適したプリントコマンドに変換し、送信する処理を行う。アプリケーションから発行される印刷命令は、機種非依存の共通形式であり、アプリケーションはプリンタ毎に特別な処理を必要としない形態が一般的である。プリンタドライバはプリンタとの接続、制御、通信を行うためのホストコンピュータ上で動作するソフトウェアプログラムで、ホストコンピュータ上で動作し、プリンタ毎に必要である。
ここで、プリンタ本体が印刷データのレンダリングやレイアウト等複雑な処理を行えない場合、プリンタドライバは全ての印刷命令を画像化した後、プリンタが解釈できるようなプリントコマンドに変換してプリンタに送信する。このようなプリンタに対しては、拡大,縮小を始めとした様々な処理をプリンタドライバ側で行う必要がある。
通常、このような構成においてプリンタドライバで拡大,縮小処理を実現する場合、主に以下の二通りの手法に分類される。
一つ目は、アプリケーションに偽の解像度を返却し、結果的に大きな領域を返却した上でアプリケーションに印刷データを生成させることで、結果的に大きなレンダリング結果を得るという方法、
又は、アプリケーションに偽の解像度を返却し、結果的に小さな領域を返却した上でアプリケーションに印刷データを生成させることで、結果的に小さなレンダリング結果を得るという方法である。
二つ目は、アプリケーションにプリンタ本来の解像度を返却し、得た印刷データを元にプリンタドライバ側で画像を作成する際に実際の拡大,縮小処理を行うという方法である。
前者はレンダリング時に特別な処理が不要であるというメリットがある。またそれに加え、特定のアプリケーションがピクセル単位で印字領域を取得して画像を生成した場合に、レンダリング時に余分な拡大・縮小処理が不要となり、元の画像の解像度で印刷データを作成することができるため、処理の無駄が無く出力結果も良好となる。
前者の手法を実現するための構成例の一例を図3に示す。図3は、オペレーティングシステム(以下、OS)としてMicrosoft社のWindows(登録商標)、及びOSの描画モジュールであるグラフィックデバイス・インターフェース(Graphics Device Interface:以下、「GDI」)を用いた印刷システム構成の概略図である。なお本構成においては、Enhanced Meta File(以下、EMF)をスプールファイルとして用いる方式が一般的であるが、ここでは簡略化のため、EMFをスプールファイルとして用いず、直接プリントコマンドを生成するRAWモードで説明する。
また図3において太枠で示したモジュールは、プリンタドライバの構成ファイルとしてIHVが提供可能なモジュールである。
アプリケーション200はまず、ユーザインタフェースモジュール202からDEVMODE構造体に格納された印刷設定を取得する。そのDEVMODE構造体の情報を用いて、デバイスコンテキスト(以下、DC)を作成する。DCは、Windows(登録商標)において表示を取り扱うデバイスを仮想的に操作する概念で、アプリケーション200は通常、このDCに対して描画を行うことで、プリンタ207に対する描画を実現する。
アプリケーション200は、DCからデバイス固有の情報を取得する事が可能である。図5に、取得可能なインデックス及び値の一例を示す。ここで、インデックスとは取得対象の項目を指す。
DCにはピクセル単位の印字可能領域サイズを示す値(HORZRES,VERTRES)、解像度情報(LOGPIXELSX,LOGPIXELSY)、及び印字可能領域の物理(ミリメータ)単位の値(HORZSIZE,VERTSIZE)などが存在する。
これらDCの様々な値は、アプリケーション200からDCを生成する際に、OS経由でグラフィックスドライバ300が呼び出され、グラフィックスドライバ300内で決定する。
DCは通常ピクセル単位で管理される。そのため、グラフィックスドライバ300は、本来のプリンタ207の解像度と異なる解像度を返却し、ピクセル単位の印字可能領域やオフセット値を調整することで、アプリケーション200に対し、大きい(小さい)印刷領域を返却することが可能である。この場合、偽装したのは解像度のみであり、物理用紙サイズはアプリケーション200から見ると変わらない。
これにより、印刷設定に応じて拡大・縮小を行いたい場合等に、アプリケーション200に予め大きい(小さい)領域を返却することで、実質アプリケーション200に拡大・縮小後の描画命令を生成させることができる。グラフィックスドライバ300は、OS経由でDCに描画された描画を受け取りレンダリングすることで、特別な処理を行う事無く、大きい(小さい)ラスタデータを生成することが可能である。生成されたラスタデータを元にプリンタ207が解釈可能なプリントコマンド301を生成し、プリンタ207に送信する。送信したプリントコマンド301は一旦OSによってスプールされ、プリントプロセッサー302を介してプリンタ207に送信される。
拡大,縮小印刷の一例として、プリンタ207でフチ無し印刷を行う際の例を挙げる。フチ無し印刷処理においては、用紙サイズ全面に印刷を行うため、オフセットが0になる。加えて、プリンタ207における印刷位置の誤差等に対応できるよう、本来の物理用紙サイズ全体よりも大きい印刷データをプリンタ207に送信し、本体側ではみ出す形で印刷する方法が一般的である。つまり、オフセットを0にするだけでは、プリンタ207が所望するサイズをアプリケーション200に伝えることができない。
フチ無し印刷処理を実現するためのグラフィックスドライバ300のデバイス固有情報の返却値の一例を図6に示す。図6では本来のプリンタの解像度、600に対し、609を返却し、ピクセル単位の印字領域を大きく見せている。
アプリケーション200はこの情報を元に、設定に応じて印字領域(5040ピクセル×7128ピクセル)の画像を生成し、印刷することが可能である。アプリケーション200により生成された画像は、グラフィックスドライバ300内でレンダリングする際、拡大,縮小処理を行う必要が無いため、無駄な処理を省略すると共に、画像のリスケールに伴う劣化を防止することが可能である。また、この例においては、5040ピクセル×7128ピクセルの値を返却するための理論解像度は609.6である。しかしDCの解像度情報は整数値である必要があるため、それを切り捨てた値を返却している。そのため、物理用紙サイズと解像度を元に計算されるピクセル値は異なる。しかし、アプリケーション200においては、画像を描画する際にピクセル値を取得し、描画する事が一般的であるため、ピクセル単位の値を保証することが重要である。
このように解像度を偽装して返却することで、実際の印字領域を大きく(小さく)見せる技術が従来から知られる。
上記の例として、下記特許文献1をあげることが出来る。
特開2003−114771号公報
前記の通り、一例として示したGDIによる印刷システムの系においては、解像度を偽装することでアプリケーションが生成した画像をそのまま利用した拡大・縮小を行うことができた。
すなわち、前記の方法は、アプリケーションのデータ生成の単位、及びスプールされるデータの単位がピクセル単位であるため、実現可能であった。
しかし、例えば、Microsoft社が開発したオープン規格の電子文書フォーマットの一つであるXML Paper Specification(以下、XPS)をスプールファイルとする印刷システムでは前記手法により拡大・縮小を実現できない。
以下、XPSをスプールファイルとするようなドライバをXPSDrvと呼ぶ。
XPSDrvにおいては、スプールファイルは96dpi単位で描画が記載されるXPS文書となる。
このようなXPS文書をスプールファイルとするXPSDrvに一般的なアプリケーションから印刷を行った場合、アプリケーションは前記の方法でDCに対して描画を行う。それにより生成された印刷命令は、Microsoft社によるOSの印刷サポート機能(MicrosoftXpsDocumentWriter:以下、MXDW)によって、前記96dpiのXPSファイルに置き換えられる。つまり、このような印刷系においては、アプリケーションに対し解像度を偽装し、大きなピクセル単位の領域を返却したとしても、最終的に生成される96dpiのXPS文書に変換された時点で、理論的に全て同じサイズで生成されることになる。
この、XPSDrvの印刷系の一例を図2に示す。図2の構成要素の詳細については実施例で説明する。
図2において、IHVが独自に作成することが可能なモジュールを太枠で示す。図2は、図3と対応した構成を取っているが、図3のグラフィックスドライバ300がIHVにより提供するモジュールであるのに対し、MXDW201はOSにより提供されるモジュールである。MXDW201は、グラフィックスドライバ300同様、DC作成時のピクセル単位の印字領域情報返却を担うモジュールであるが、IHVが独自に作成するわけではないため、プリンタドライバからは返却値を正しくコントロールできない。
前記GDIによる印刷システムの系で説明したフチ無し印刷と同様のケースを考えると、所望するピクセル値を得るための理論解像度は609.6であった。しかしDCの解像度情報は整数値でしか取り扱われないため、この値は610に切り上げられ、MXDW201により計算されるピクセル単位の印字領域は、プリンタが所望する値とならない。このようにして計算されるDCの情報の一例を図7に示す。図7に示した通り、所望する印字領域の理論値(5040ピクセル×7128ピクセル)に対し数ピクセル大きい、(5043ピクセル×7133ピクセル)をアプリケーションに返却することとなる。全体から見ると誤差としては小さいが、この値を元にアプリケーション200が画像を生成した場合、レンダリング時に極めて高解像度な画像の縮小処理、又は拡大処理が必要になる上、画像の劣化の原因となる。
このようにIHVがアプリケーション200に対する返却値をコントロールできないことを補うため、MXDW201はDCのサイズ等の調整を行うための仕組みを用意している。
これは、MXDW201から、ユーザインタフェースモジュール202に対し、アプリケーション200に返却するための返却値を計算するための調整値を問い合わせる機能である。
この機能を用いてユーザインタフェースモジュール202から返却可能な値のうち、サイズ情報に関わるものには以下がある。
物理用紙サイズ中における、印字可能領域の上下左右位置(1/1000mm単位)
調整用解像度(整数値)
上記の通り、調整用の解像度は整数値のままであるが、印字可能領域の上下左右位置を1/1000mm単位で返却可能であるため、通常の解像度においては、ピクセル単位で最終的に所望する値を調整可能である。
しかしながら、フチ無しのケースを考えるとこれらの返却値だけでは不十分である。フチ無し印刷時のアプリケーション200に対するDCの理想値は図6に示した通りである。しかし、上記調整方法では、物理用紙サイズを調整できないため、最終的にアプリケーション200に返却する物理用紙サイズと、印字可能領域が一致しない。そのため、フチ無し設定で印刷を行ったにも関わらず、生成されるスプールデータは、不要なオフセットが存在してしまったり、逆に物理用紙サイズが印字領域よりも小さくなり、一部のデータが隠れたりてしまう。そのような出力が成される返却値の一例を図8及び図9に示す。
以上のように、XPSDrvを用いた印刷システムのようにスプールファイルが一旦固定解像度を持つデータに変換される場合、拡大・縮小を背景技術で示したような手法で実現することができない。また特にXPSDrvの系においては、アプリケーションへの返却値を正しくコントロールできないため、レンダリング時に特別な処理が必要である。
本発明は、XPSDrvのようにスプールファイルが固定解像度を持つデータに変換される印刷系において、アプリケーションが生成した画像を含む印刷データを、もとの画像の解像度をそのまま利用し、軽量かつ劣化の少ない拡大縮小方法を行うことを目的とする。
該目的を達成する為に、本発明の拡大縮小印刷方法は、
アプリケーションプログラムにより生成された印刷データを受信し、前記印刷データに付属の印刷設定に基づいて最適なサイズのラスタデータに変換し、前記ラスタデータを元に印刷コマンドを生成する拡大縮小印刷方法であって、
前記アプリケーションプログラムに対して返却する印刷領域に関する情報を調整するための調整手段を持ち、かつ前記アプリケーションプログラムにより生成された印刷データが、一定の解像度を有するフォーマットに変換されるような印刷システムにおいて、
前記調整手段に対して、プリンタ本体の解像度と、前記印刷設定に伴う拡大・縮小率に基づき計算した偽装解像度を整数値にした上で返却する偽装解像度返却ステップと、
前記調整手段に対して、前記偽装解像度と、プリンタの所望するピクセル単位の印刷可能領域サイズから逆算した調整用の印字可能領域を物理単位で返却する調整用印字可能領域返却ステップと、
前記偽装解像度返却ステップで返却した整数値の解像度でレンダリングするレンダリングステップとを有し、
前記アプリケーションが等倍で描画した画像を、拡大・縮小処理すること無くプリンタの所望するサイズのラスタデータとして使用可能であることを特徴とする。
また、本発明の拡大縮小印刷方法の
前記偽装解像度返却ステップは、計算した解像度が小数値であった場合に、切り上げ整数値を返却することを特徴とする。
また、本発明の拡大縮小印刷方法の
前記レンダリングステップは、前記偽装解像度返却ステップによって返却された切り上げ整数値の解像度を元に前記調整手段が計算し、前記アプリケーションプログラムに返却することで、プリンタの所望するピクセル単位の物理用紙サイズよりも大きな印刷データが生成された場合に発生するオフセットを無視してレンダリングすることを特徴とする。
また、本発明の拡大縮小印刷方法の
前記レンダリングステップは、前記印刷設定により回転が指示された場合に、前記オフセットを除いた理論的な物理用紙サイズを基準に回転を行うことを特徴とする。
本発明によれば、固定解像度でスプールファイルが生成されるような印刷系において、アプリケーションが生成した画像を劣化させることなく、軽量に拡大・縮小・フチ無し印刷を実現することができる。
次に、本発明の詳細を実施の形態の記述に従って説明する。
<印刷システムのハードウェア構成>
図1は本発明の実施形態における印刷システムのハードウェア構成を示すブロック図である。本図において、一般的に100がホストコンピュータ装置となる。101は、CRT表示装置であり、プリンタドライバが提供する印刷設定ダイアログやプリンタステータス情報等を表示する。102はCRTCで表示装置用のコントローラである。103は、キーボードなどのデータ入力装置であり、104は、キーボードコントローラである。105は、ポインティングデバイス等の座標入力装置であり、106は、ポインティングデバイスコントローラである。107は、装置全体の制御を司るCPUである。108は、ブートプログラムなどを記憶しているROMである。109は、OS、各アプリケーションプログラムやプリンタドライバプログラムを格納したり、さらにはワークエリアとしても利用されるRAMである。110は、OS、各アプリケーションプログラムとプリンタドライバプログラム、フォントデータを記憶しており、さらにはスプールファイル等を一時的に記憶するハードディスク装置であり、111はハードディスクコントローラである。112は、可搬性記憶媒体の駆動装置であるフロッピー(登録商標)ディスク装置であり、113はフロッピー(登録商標)ディスクコントローラである。114は、インターフェースであり、インターフェースケーブルを介してインクジェットプリンタなどのプリンタ115に接続される。116は、各デバイスを接続するバスである。本装置に電源が投入されると、CPU107はROM108に格納されているブートプログラムに従って起動し、ハードディスク装置110からOSをロードし、ユーザーの操作待ち状態になる。そして、ユーザーからKB103またはPD105からアプリケーションを介して印刷指示やプリンタドライバの印刷設定変更指示を受けた場合、もしくは自動的に起動するように設定されている場合は、ハードディスク装置110に格納されているプリンタドライバプログラムがRAM109にロードされ実行される。
<XPS文書の構成>
XPSとは、XML Paper Specificationの略で、Microsoft社が開発したオープン規格の電子文書フォーマットの一つである。
本文の理解を容易にするため、XPSについて簡単に説明する。XPS文書はFixedDocumentSequence (以下FDS)をルートとするツリー構造になっている。FDSは複数のFixedDocument(以下FD)を持ち、FDは複数のFixedPage(以下FP)を持つ。FDSとFDとFPのそれぞれは、XPSパートと呼ばれることがある。FPは文書のページの内容をXML形式で記述しており、実際に表示または印刷される内容を含んでいる。FPのページ内容で使用されるフォントや画像等の資源は複数のFPで共有することができる。また、FDSとFDとFPははそれぞれ印刷設定をPrintTicket(以下PT)で持つことができる。PTはXPS文書を印刷する際の印刷設定をXML形式で記述したものである。ここで各FPを印刷する際に使用する印刷設定は、FDSのPTと、印刷対象FPの親FDのPTと、印刷対象FPのPTをマージしたPTとなる。
図4はXPS文書の論理構造を示したブロック図の一例である。XPS文書の論理構造はFDS401がルートとなるツリー構造となっている。FDS401は子としてFD402とFDを405有する。FD402は子としてFP403とFP404を有する。FD405は子としてFP406を有する。印刷設定を記述したPTについては、FDS401がPT407を、FD402がPT408を、FP403がPT409を、FD405がPT411をそれぞれ保持している。FP404とFP406はPTを保持していない。また、FP403とFP404がフォントや画像等の資源410を共有しており、FP406はフォントや画像等の資源413を利用している。ここで例えばFP403を印刷する際に使用するPTは、PT407とPT408とPT409をマージしたPTとなる。
また、FP内における座標系は96dpiになっており、FP内に記載される各エレメント(画像、文字列、グラフィックス)はそれに従い配置される。但し、実際には各エレメントの配置位置やサイズは基本的にfloat型で取り扱われ、小数値であることが許容されているため、実解像度としては、96dpiよりも高解像度であると言える。注意として、XPS文書が資源として持つ画像については、96dpiである必要は無く、FP内における配置位置が96dpiで記載されているに過ぎない。画像は96dpiよりもさらに高解像度であっても良い。
以上説明したように、XPS文書は論理的にXPSパートという概念を用いると理解が容易になる。ただし、XPS文書自体はバイト列(ストリーム)として取り扱いが可能である為、XPS文書内部のデータを指す場合はXPSデータという言葉を用いることもある。
<プリンタドライバの構成>
図2は、本発明におけるプリンタドライバの実施形態を説明するためにOSの印刷サポート機能とプリンタドライバを中心に概念的に表したブロック図である。図2において、本発明に関るモジュールは、印刷設定処理の機能を有するユーザインタフェースモジュール202と、プリントコマンド生成部の機能を有するフィルターパイプライン204である。ここでフィルターパイプライン204は、XPSデータのページをレイアウト処理する機能を有するレイアウトフィルター205と、XPSデータをプリンタが解釈可能なプリントコマンドに変換する機能を有するレンダーフィルター206で構成される。
ここでフィルターとは、一般的に入力されたデータをもとに、加工、変換、無変換、生成等の工程を介して、何らかのデータを出力する機能を有するプログラムのことを称する。
図2における印刷システムでは、アプリケーション200が作成した文書の各ページの印刷データは、OSの印刷サポート機能(MXDW)201を通じてXPSスプールファイル203に一時的に蓄えられ、これをプリンタドライバのフィルターパイプライン204がプリンタで解釈可能な印刷コマンドに変換してプリンタ207に供給して印刷するよう構成されている。
ユーザインタフェースモジュール202は、一般に印刷に使用する用紙サイズや印刷方向、その他の属性を設定する機能を提供する。ユーザインタフェースモジュール202は、複数の印刷設定項目の設定値が格納された印刷設定情報(DEVMODE)をアプリケーション200に返却する。
アプリケーション200は作成した任意の文書の印刷にあたり、MXDW201に対して、印刷開始や印刷終了を通知したり、印刷設定を行うためにユーザインタフェースモジュール202から返却された印刷設定情報を通知したり、文書の各ページの描画開始や描画終了を通知する。MXDW201は、アプリケーション200が描画した内容や印刷設定情報をXPSスプールファイル202に変換し、格納する。
フィルターパイプライン204は任意の個数のフィルターで構成されており、印刷時にXPSスプールファイル203から印刷設定情報とXPSパートとを読込み、プリンタが解釈可能なプリントコマンドに変換してプリンタ207に供給し、印刷を行う機能を有する。各フィルターはスプールされた印刷ジョブをデスプールの際にOSの印刷サポート機能から呼び出される。スプールされたXPSデータはフィルターパイプライン203の各フィルターを通過するXPSデータのまま内容が編集され、或いはドライバ独自のデータ形式に変換され、最終的にプリンタが解釈可能なプリントコマンドに変換される。印刷ジョブのXPSデータを全て処理し終えた場合、或いは、印刷ジョブがキャンセルされた場合は、フィルターパイプライン204の各フィルターは動作を終了する。本実施形態におけるフィルターパイプライン204はレイアウト処理部であるレイアウトフィルター205と、プリントコマンド変換部であるレンダーフィルター206で構成される。
レイアウトフィルター205は、XPSスプールファイル203に格納されたXPSデータを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのXPSデータを出力する機能を有する。
レンダーフィルター206はレイアウトフィルター205の出力を入力とし、印刷設定情報に従い、XPSデータをプリンタが解釈可能なプリントコマンドに変換し出力する機能を有する。本実施系においては、レンダーフィルター206はプリントコマンド生成の際に、入力のXPSデータを一度イメージデータに変換する。レンダーフィルターはイメージ生成後、色空間の変換や二値化等の画像処理を経て、ラスタープリンタが解釈可能な印刷コマンドに変換される。ページプリンタに代表される高機能なプリンタにおいて、プリンタが解釈できるプリントコマンドの種類にXPSが含まれるならば、レンダーフィルター206の変わりに、入力のXPSデータを編集しXPSデータを出力するようなフィルターを持つ構成となる。また、XPSデータを編集する必要が無ければ、そのようなフィルター自体が不要となることは言うまでもない。
出力デバイスであるプリンタ207は、フィルターパイプライン204で生成されたプリントコマンドを解釈し、可視画像を印刷用紙に対して形成する機能を持つ。
以下、本発明にかかる一実施形態を、図面を参照して詳細に説明する。
〔第1の実施形態〕
本発明の処理は、大きく分けて二つの処理によって構成される。
一つ目の処理として、プリンタドライバはアプリケーション200に対して拡大,縮小,フチ無しを実現するために適した印刷領域情報を返却する。アプリケーション200に対する印刷領域情報の返却は、MXDW201によって成されるが、これはOSによって提供される機能であるため、IHVはユーザインタフェースモジュール202からそれらの返却値を調整可能となっている。これらの処理の詳細については後述する。
本実施例における印刷システム上では、アプリケーション200が生成した印刷命令は、前述の通りMXDW201によって一旦XPSスプールファイル203に変換される。ここで、XPSスプールファイルは96dpiの座標系で各エレメントが記載されているため、このXPSスプールファイルを再び拡大,縮小,フチ無しに適したサイズに展開する。これが二つ目の処理である。
まず、プリンタドライバからアプリケーション200に対して拡大,縮小,フチ無しを実現するために適した印刷領域情報を返却する処理について説明する。
ここで、アプリケーション200に返却する印字領域と最終的な印刷結果の関係について簡単に説明する。
本実施例における印刷システムにおいては、アプリケーション200からはDCと呼ばれる仮想領域に描画を行うことによって印刷を実現する。DCは図5に示すような値をパラメータとして持ち、座標系はピクセル単位であることは背景技術において説明した通りである。アプリケーション200は、このDCのピクセル単位のサイズを取得することで、印字可能領域一杯に印刷するよう画像を拡大して配置したり、また予め印字可能領域と一致するようなサイズの画像を生成し、そのままのサイズで描画することが可能である。後者のケースでは、プリンタ207で出力可能な解像度を計算した上でアプリケーション200が画像を生成する場合であり、それを生かした高解像度な出力が望まれる。
これらDCのサイズ等の情報は、印刷設定等によって変化する値であり、プリンタドライバにより決定される。図3のようなドライバ構成において、DCのサイズ情報を決定するのはグラフィックスドライバ300である。一方、図3のようなドライバ構成においては、DCのサイズを決定するのはOSの印刷サポート機能であるMXDWになる。
通常の印刷設定においては、プリンタドライバ内では、DC用に返却した印字可能領域と等しいサイズのラスタデータを生成するため、アプリケーションが等倍で描画した画像はプリントコマンドを作成するためにそのまま利用される形となる。これは余計な拡大,縮小処理が不要という意味で処理が軽量であるだけでなく、画像の劣化も少ない。
一方、拡大・縮小印刷の場合を考えると、DC用に返却する値を通常の印刷の場合と同じ値とした場合、アプリケーション200がDCに対して描画した画像の一部を拡大、及び全体を縮小して描画する形となる。これは拡大印刷の場合、解像度の劣化を招く。例えば200%に拡大印刷を行った場合、例えアプリケーション200がDCのピクセル値に応じて画像を作成してきたとしても、そのうちの1/4程の領域を拡大して印刷することになる。逆に、縮小印刷の場合、アプリケーション200がプリンタ207の解像度に最適な画像を生成したとしても、結果的に縮小されるので、不要な解像度の画像をスプールしていることになる。
以上のようなDC用の返却値とアプリケーション200の動作を考えた場合、拡大,縮小時には、最終的にレンダリング時に用いるピクセル値を返却した方が、効率も良く、また画像のリスケールを行わないため画質面でも好ましいことがわかる。
例えば約600dpiの解像度を持ち、A4においては4000×6000ピクセルのラスタデータから生成されるプリントコマンドを受け取るプリンタがあるとする。ここで、例えば縦横それぞれ50%の縮小を行う場合には、予めDCのサイズとしては2000×3000ピクセルの領域を返却しておく。そしてアプリケーションがこのDCに対して生成した描画をそのまま展開すれば、縮小されたのと同義の結果を得ることができる。
図3のような構成を持つ印刷システムにおいては、以上のような拡大・縮小方法を容易に実現することができた。これは予めDCのサイズとして返却した解像度、及びピクセル値に対してアプリケーションが生成した描画命令が、そのままの解像度でドライバまで到達するためである。
一方、図2のようなXPSスプールファイル203を用いた印刷システムにおいては、アプリケーションに返却する解像度によらず、一律96dpiの座標系を持つXPS文書がスプールデータとして使用される。
そのため、レンダリング時には拡大・縮小処理が必要になることになる。前記のようにDCのサイズとして返却する解像度を変えても、XPSスプールファイル203中のFPのサイズは、理論的に変化しないためである。
例えば、4000×6000ピクセル、600dpiの情報をDCに返却した場合、生成されるFPのサイズは、
4000×96/600 = 640
6000×96/600 = 960
となる。一方200%に拡大するために解像度を2倍に偽装(1200dpi)し、8000×12000ピクセルの情報をDCに返却した場合、生成されるFPのサイズは、
8000×96/1200 = 640
12000×96/1200 = 960
となる。このように、解像度を偽装して返却するピクセルサイズを調整しても、FPの座標系においてサイズは変化しない。
しかしながら、返却する解像度の調整は画像に対しては無意味ではない。XPS文書は、図4に示したとおり、階層構造をもつXML文書及び、それらのXML文書内から参照されるその他のパーツで構成される。ページの実情報(ページサイズや各描画)が記載されるFPは前述の通り96dpiの座標系を持つ。一方、FPから参照される画像オブジェクトに関しては96dpiである必要は無く、より高解像度でも良いし、低解像度でも良い。よって最終的に、この96dpiの画像を例えば600dpiのプリンタ用に展開することを考えた場合、画像が600dpiに最適化されたサイズであることは、図3の例同様、画質,並びに速度の面から有効であると言える。
以上のような理由から、本実施形態においては、MXDW201によって一旦96dpiのXPSスプールファイル203が生成されるような印刷システム上においても、アプリケーションに200対して拡大・縮小後に最適な解像度情報を返却する。
図2のようなXPSDrvの構成の場合、アプリケーション200がDCを作成しようとした場合、作成のための各種サイズ情報等の問い合わせはMXDW201に来る。MXDWはOSの提供する印刷サポート機能であるため、IHVはDC作成のための返却値を正しくコントロールできない。そのため、IHVが提供するモジュールであるユーザインタフェースモジュール202と通信を行い、ユーザインタフェースモジュール202側でDCの値を調整する機能がある。
図10に、図2のようなXPSDrvの印刷システムにおいて、アプリケーション200がDCの生成を行った場合の処理の流れを示す。
まずアプリケーション200はOSのAPIを用いてDCの作成を依頼する。DCの作成はDEVMODE構造体に格納された各種印刷設定を引数として行われる。よってアプリケーションはDCを作成するために必要なDEVMODEを、予めユーザインタフェースモジュール202から取得しておく。
このようにして指定されたDEVMODEは、ユーザインタフェースモジュール202のサポートするDocumentProperties関数に渡され、エラーチェック等が成される。次に、そのようにして生成されたDEVMODEを用い、MXDW201のDrvEnablePDEV関数がコールされる。この関数では、DEVMODEの各種印刷設定を参照し、その設定において必要なDCのサイズ情報等を返却する。
MXDW201からは、ユーザインタフェースモジュール202がDC調整関数をサポートしていた場合、DC調整関数をコールする。
DC調整関数では、DEVMODE構造体の印刷設定を参照して、プリンタドライバが所望するピクセル値でDCが生成されるよう調整を行う。サイズに関連する項目で調整可能な値には以下のようなものがある。
物理用紙サイズ中における、印字可能領域の上下左右位置(1/1000mm単位)
調整用解像度(整数値)
これらの値を決定する場合のユーザインタフェースモジュール202の処理の流れを図12に示す。
まず引数として与えられた(S1200)DEVMODE構造体を参照し、現在の印刷モードにおけるプリンタ解像度、及び拡大,縮小率及びフチ無しの設定に従って、調整用解像度を決定する(S1201)。フチ無し設定の場合は、通常オフセットを0にし、本来の物理用紙サイズよりも大きな印刷データを作成し、はみ出して印刷することによりフチなしを実現することが一般的である。はみ出し量はプリンタ207の斜行精度等の設計に基づき決定されるため、通常、ユーザインタフェースモジュール202は、フチ無し印刷時の拡大率を予め決められた値として保持している。ユーザインタフェースモジュール202により、はみ出し量を変更可能である場合もある。この時点における調整用解像度は必ずしも整数である必要は無い。
この調整用解像度を用いて、最終的にアプリケーション200に返却したい理論印字領域,及び理論物理用紙サイズのピクセル単位の値を計算する(S1202)。次に調整用解像度が整数であるかどうかを確認する(S1203)。調整用解像度は、S1201の処理において、拡大,縮小設定時における拡大,縮小率や、フチ無し印刷時の拡大率を元に計算されるため、必ずしも整数とは限らない。ここで、調整用解像度が小数であった場合は、調整用解像度を切り上げる(S1204)。調整用解像度は、最終的に整数である必要があるためで、切り捨てるか切り上げるかの選択が存在するが、ここでは切り上げるものとする。これらの選択の違いによるアプリケーションに対する返却値については後述する。
次に、必要に応じてS1204で切り上げた調整用解像度、及びS1202で計算した理論印字領域を元に、最終的に理論印字領域になるように返却用の印字可能領域(1/1000mm)を逆算する(S1205)。この逆算された値は1/1000mm単位であるため、一般的な解像度の高さにおいては、最終的に計算されるピクセル値を保証することが可能である。ここでは、印字可能領域の上下左右位置を返却するため、オフセットにつていも考慮した値をとる。
このようにして必要に応じて切り上げられた調整用解像度、及び調整用解像度を用いて計算することでピクセル単位の理論印字領域が計算できるような調整用印字可能領域(1/1000mm)を返却する(S1206)。以上が、MXDW201からDC調整関数をコールされた際の、ユーザインタフェース202の処理の流れである。
このようにして調整した場合に生成されるDCの値について、図8に示す。対応する理想的な値は図6に示す。
図6で示されるDCの値に対し、図8ではLOGPIXELSX/Y,及びPHYSICALWIDTH,PHYSICALHEIGHTが異なる。図6及び図8では、フチ無し印刷設定の場合の例なのでPHYSICALOFFSETX,及びYが0になっているが、オフセットが存在するような印刷設定であっても、これらの値は理論値と一致させることが可能である。ユーザインタフェース202におけるDC調整関数は、印字可能領域の上下左右位置を指定することが可能であるためである。
相違点として、まずLOGPIXELSの値については、理論値が小数であるため切り上げを行い610としたが、この値が609であるか610であるかについては大きな影響は無い。
一方、物理用紙サイズをDC調整関数で調整する仕組みが無いため、この切り上げ解像度610で計算された物理用紙サイズは大きな値になってしまっている。PHYSICALWIDTH,PHYSICALHEIGHTで示される値である。このDCは、結果的に、印字可能領域の右下にオフセットが存在している事になる。
これについて、DC調整関数で、逆に調整用解像度を切り捨てた場合に生成されるDCの値を図9に示す。このDCの値は、逆に物理用紙サイズのピクセル値が印字可能領域のピクセル値(HORZRES,VERTRES)よりも小さくなってしまっている。これは本来DCのそれぞれのパラメータが示す値としては不適切な組み合わせとなり、場合によってはアプリケーション200内でエラーが発生する可能性がある。
よって本実施形態においては、解像度が小数になる場合には切り上げる前者のDCの値となるよう調整を行う。
次に、このようにして生成されたDCにアプリケーション200が生成する描画、及びMXDW201によって生成されるXPSスプールファイル203について説明する。
図11にその概略を示す。
まず、アプリケーション200が生成する印刷データは、DCへの描画によって成されるため、図8で示したDCの値と同じ座標系,サイズを持つことになる。またここでは、アプリケーション200は、DCから印字領域のピクセル単位の値を取得し、同一のサイズの画像をDCに描画しているものとする。前述の通り、物理用紙サイズは解像度の切り上げにより大きくなってしまうため、右下にオフセットが発生する(領域1100と1101の差で示される白い領域)。
次に、MXDW201は、このようにしてアプリケーションが生成した描画命令をXPS文書に変換する。XPS文書におけるFPの座標系は96dpiの解像度で記載されるため、印字領域は図11の※で示された計算により、793.18×1121.78に変換される。しかしながら、XPS文書中において画像はファイルとして存在し、それをFPから参照する形で描画されるため、アプリケーションにより生成された印字領域全体と同じサイズの画像は、そのままの解像度を保持したままXPS文書中に存在することになる。
最後に、このようにして生成されたXPSスプールファイル203をレンダーフィルター206で展開する。レンダーフィルター206における画像化は、解像度610で計算される。プリンタ本来の解像度ではなく、また小数の値である理論解像度609.6でも無い。これは、MXDW201により解像度610であるとして計算された元の印字領域を、そのまま復元するためである。この計算は、図11の※で示される。一旦96dpiに変換された座標系を、もう一度元に戻す形になる。
これにより、アプリケーションが作成した画像を、レンダーフィルター206の画像化のプロセスにおいてもそのままの解像度で利用することになり、不要な拡大・縮小処理が不要になる。
またXPSスプールファイル203中に存在したオフセット領域を画像化の際に無視し、最終的にオフセットを無くす。これは理論印字領域のみをレンダリングすれば良いが、レンダリングエンジンに対して回転などの指示を行う場合には考慮が必要になる。
そのような処理も含めた、レンダーフィルター206の処理のフローチャートを図13に示す。
なお、図13のフローチャートでは、レンダーフィルターはXPS文書のXPSパーツ毎に取得可能なモードで動作していることを前提としているが、XPS文書をバイナリで受け取るモードにおいても同様に適用可能である。
まず、S1300において、初期化処理、並びにFDSに対する処理を行う。ここでは、フィルターパイプライン204を構成するフィルターとして必要な各種初期化処理や、FDSに関連付けられたPTの取得などを行う。
S1301からS1310まではFDの処理を行うループであり、FDSに存在するFDの個数だけループし、FDSに存在するFDを全て処理すれば終了する。FDについても、FDSの処理同様、関連付けられたPTの取得などを行う。FDに適用されるPTは、実際にはFDSに存在したPTとFDに存在したPTをマージしたPTとなる。
S1302からS1309まではFPの処理を行うループであり、現在のFDに存在するFPの個数だけループし、FDに存在するFPを全て処理すれば終了である。FPについても、FDS,FDの処理同様、関連付けられたPTの取得などを行う。
S1403において、FPにPTが存在した場合、前記FDに適用されるPTとマージを行い、最終的にページに適用されるPTを求める。
次に、S1403で求めたPTにおいて、レンダリング時に回転が必要な設定が成されているかを調べる。例えば、ランドスケープ設定で生成されたデータを、プリンタの給紙方向に回転するケースなどが該当する。
回転が不要であった場合は、S1306で返却した解像度(小数である場合、切り上げた解像度)で、理論印字領域の範囲をレンダリングする。図11においては、1105で示される領域をレンダリングする形となり、結果的に1104が持つオフセットは無視される。
このようにして生成されたラスタデータを元に、S1408でプリンタ207が解釈できるプリントコマンドを生成し、プリンタ207に送信することで、印刷が実行される。
以上のような処理をFP/FDがなくなるまで繰り返すことで、XPS文書全体を処理すれば、レンダーフィルター206の処理は終了となる。
S1404において、回転が必要であると判断した場合には、回転を行うサイズについて注意が必要である。回転処理は、例えば180度原点に対して行った場合、座標軸においてもとの位置の真裏にきて、全ての値はマイナスになることになる。そのため、回転後には回転を行いたい対象のサイズ分移動させる。つまり、回転後の原点を明らかにするために、回転対象のサイズが必要といえる。
そのため、S1405で回転を行う対象のサイズを計算する。もし、FPに記載のFPの物理用紙サイズ全体を回転させた場合、1404で示されるオフセット領域が左上に移動する形となる。それを左上を原点として印字領域のサイズでレンダリングした場合、レンダリング結果にオフセット領域が入ってしまう。S1405では、S1403で求めたPTの各種印刷設定を元に、96dpiにおける理論物理用紙サイズを計算する。
S1406では、S1405で求めた回転対象サイズを元に、レンダリングエンジンに回転を指示する。
こうすることで、1105に示された印字領域(オフセットが存在する印刷設定であった場合それも含む)のみが回転される形となり、レンダリング結果にもオフセット領域が含まれることが無い。
〔その他の実施形態〕
本発明の目的は前述したような実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステムあるいは装置に提供することによっても達成される。このような形態においては、システムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM,CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれている。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまることで、前述した実施形態の機能が実現される場合も含む。この場合、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行う。
実施形態におけるハードウェア構成を示す図である。 実施形態におけるプリンタドライバを中心としたソフトウェア構成及び印刷処理の流れを示す図である。 GDIを用いる印刷システムにおける、ソフトウェア構成及び印刷処理の流れを示す図である。 XPS文書の論理構造の一例を示す図である。 領域情報に関連するDCの値の一例を示す図である。 フチ無し設定時のDCの値の一例を示す図である。 MXDWにより計算されるフチ無し設定時のDCの値の一例を示す図である。 DC調整関数により調整したDCの値の一例を示す図である。 DC調整関数により調整したDCの値の一例を示す図である。 アプリケーションがDCを作成した場合の、MXDW及びユーザインタフェースの処理の概要を示す図である。 フチ無し印刷時における、DC,XPS文書,レンダリング後の画像の解像度及びサイズの概略を示す図である。 ユーザインタフェースにおける、DC調整関数の処理のフローチャートを示す図である。 レンダーフィルターにおける、印刷コマンド作成処理のフローチャートを示す図である。
符号の説明
100 ホストコンピュータ装置
116 バス
400 XPS文書
1100 DCにおける物理用紙領域
1101 DCにおける印字可能領域
1102 XPS文書のFPにおける物理用紙領域
1103 XPS文書のFPにおける印字可能領域
1104 レンダリング時に無視される物理用紙領域
1105 レンダリング後の印字可能領域

Claims (6)

  1. アプリケーションプログラムにより生成された印刷データを受信し、前記印刷データに付属の印刷設定に基づいて適したサイズのラスタデータに変換し、前記ラスタデータを元に印刷コマンドを生成する拡大縮小印刷方法であって、
    前記アプリケーションプログラムに対して返却する印刷領域に関する情報を調整するための調整手段を持ち、かつ前記アプリケーションプログラムにより生成された印刷データが、一定の解像度を有するフォーマットに変換されるような印刷システムにおいて、
    前記調整手段に対して、プリンタ本体の解像度と、前記印刷設定に伴う拡大・縮小率に基づき計算した偽装解像度を整数値にした上で返却する偽装解像度返却ステップと、
    前記調整手段に対して、前記偽装解像度と、プリンタが望むピクセル単位の印刷可能領域サイズから逆算した調整用の印字可能領域を物理単位で返却する調整用印字可能領域返却ステップと、
    前記偽装解像度返却ステップで返却した整数値の解像度でレンダリングするレンダリングステップとを有し、
    前記アプリケーションが等倍で描画した画像を、拡大・縮小処理すること無くプリンタが望むサイズのラスタデータとして使用可能であることを特徴とする拡大縮小印刷方法。
  2. 前記偽装解像度返却ステップは、計算した解像度が小数値であった場合に、切り上げ整数値を返却することを特徴とする請求項1に記載の拡大縮小印刷方法。
  3. 前記レンダリングステップは、前記偽装解像度返却ステップによって返却された切り上げ整数値の解像度を元に前記調整手段が計算し、前記アプリケーションプログラムに返却することで、プリンタが望むピクセル単位の物理用紙サイズよりも大きな印刷データが生成された場合に発生するオフセットを無視してレンダリングすることを特徴とする請求項2に記載の拡大縮小印刷方法。
  4. 前記レンダリングステップは、前記印刷設定により回転が指示された場合に、前記オフセットを除いた理論的な物理用紙サイズを基準に回転を行うことを特徴とする請求項3に記載の拡大縮小印刷方法。
  5. 請求項1〜請求項4のいずれかに記載の拡大縮小印刷方法をコンピュータを介して実行可能なプログラム。
  6. 請求項5に記載のプログラムを格納したコンピュータにより読取可能な記憶媒体。
JP2007214852A 2007-08-21 2007-08-21 拡大縮小印刷方法 Pending JP2009048467A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007214852A JP2009048467A (ja) 2007-08-21 2007-08-21 拡大縮小印刷方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007214852A JP2009048467A (ja) 2007-08-21 2007-08-21 拡大縮小印刷方法

Publications (1)

Publication Number Publication Date
JP2009048467A true JP2009048467A (ja) 2009-03-05

Family

ID=40500609

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007214852A Pending JP2009048467A (ja) 2007-08-21 2007-08-21 拡大縮小印刷方法

Country Status (1)

Country Link
JP (1) JP2009048467A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011180721A (ja) * 2010-02-26 2011-09-15 Brother Industries Ltd プリンタドライバ、及び印刷制御装置
JP2016081437A (ja) * 2014-10-21 2016-05-16 京セラドキュメントソリューションズ株式会社 プリンタードライバー
CN111381782A (zh) * 2018-12-28 2020-07-07 佳能株式会社 信息处理装置和用于生成打印数据的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011180721A (ja) * 2010-02-26 2011-09-15 Brother Industries Ltd プリンタドライバ、及び印刷制御装置
JP2016081437A (ja) * 2014-10-21 2016-05-16 京セラドキュメントソリューションズ株式会社 プリンタードライバー
CN111381782A (zh) * 2018-12-28 2020-07-07 佳能株式会社 信息处理装置和用于生成打印数据的方法
CN111381782B (zh) * 2018-12-28 2024-04-12 佳能株式会社 信息处理装置和用于生成打印数据的方法

Similar Documents

Publication Publication Date Title
US6925597B2 (en) Systems and methods for digital document processing
JP5539280B2 (ja) データ処理装置、データ処理方法およびプログラム
JP2003167721A (ja) 印刷制御装置及び方法
US20120105873A1 (en) Information processing apparatus, information processing method and printing control method
US20040049741A1 (en) Print control apparatus and method, computer program, computer-readable storage medium, preview apparatus and method, printer driver, and preview method thereof
JP2018147259A (ja) 情報処理装置、プログラム、記憶媒体、情報処理方法
US10303409B2 (en) Information processing apparatus, information processing method, and storage medium
JP2001063155A (ja) プリンタホスト、印刷コマンド生成装置およびプログラムが記憶されている記憶媒体
JP5528081B2 (ja) 情報処理装置の制御方法、情報処理装置、及び、プログラム
JP5121563B2 (ja) 情報処理装置および情報処理方法、プログラム
JP2009048467A (ja) 拡大縮小印刷方法
JP5734089B2 (ja) 情報処理装置および制御方法およびプログラム
JP6330790B2 (ja) 印刷制御システム、印刷制御装置およびプログラム
JP2019053606A (ja) 制御プログラム
JP2005115527A (ja) 印刷システム、プリンタホストおよび印刷支援プログラム
US9632737B2 (en) Information processing device, and method and medium for the same
JP2013252622A (ja) 画像形成装置、方法及びプログラム。
JP2005182755A (ja) 印刷システム、印刷データ生成方法、及びプログラム
JP4109836B2 (ja) 印刷データ生成方法、印刷データ生成装置、コンピュータプログラム、及び記憶媒体
JP3870042B2 (ja) 印刷制御装置及び印刷制御方法
US20220317943A1 (en) Control method and information processing apparatus
JP5560934B2 (ja) プリンタドライバ
JP5479558B2 (ja) 情報処理装置および情報処理方法、プログラム
JP2003173446A (ja) 画像処理装置、画像処理システム、画像処理方法、記憶媒体、及びプログラム
JP2006093771A (ja) 画像処理装置、画像出力装置、画像処理方法、画像出力方法、画像処理プログラムおよび画像出力プログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100201

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20100630