情報処理装置および情報処理方法、プログラム
【課題】 文書の印刷するときに、文字スタンプに電子文書への埋め込みが禁止されたフォントを指定すると、フォントが変ったり、文字スタンプの品質が低下することがあった。
【解決手段】 画像資源を内包可能な印刷データを編集可能な情報処理装置において、スタンプの文字列を描画した画像を埋め込み、埋め込んだ画像を判別するための情報を付加することで、文字スタンプの画像に適切な画像処理を行う仕組みを提供する。
【解決手段】 画像資源を内包可能な印刷データを編集可能な情報処理装置において、スタンプの文字列を描画した画像を埋め込み、埋め込んだ画像を判別するための情報を付加することで、文字スタンプの画像に適切な画像処理を行う仕組みを提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションが作成した文書を印刷するにあたり、フォントを用いた処理を行う情報処理装置、情報処理方法、及びプログラムに関するものである。
【背景技術】
【0002】
情報伝達用の印刷データと機能表示用の印刷データとを含む印刷を行なう一例として、例えば「社外秘」扱いの文書を配布する場合に、文書の各ページに「社外秘」という文字が現われる印を押す場合などがある。ところが、印刷後の印刷物の各ページに人手により印を押すという作業はコストがかかるため、一般に電子化された「社外秘」等のマークを文書と共に印刷する手法が取られる。この「社外秘」といったマークをスタンプと呼んでいる。
【0003】
スタンプ付きの文書印刷の場合には、アプリケーションはユーザが希望するスタンプの文字列やスタンプの文字列を描画する為に使用されるフォント等を受け付ける入力部分を持つ必要がある。そして、文書の印刷時において、アプリケーションは文書の各ページにユーザにより指定されたスタンプを合成し、合成結果の描画命令を発行する必要がある。すなわち、文書に重ね合わせるスタンプを変更するたびに、文書自体を編集する必要がある。これを改善するため、プリンタドライバによるスタンプ機能の実現手法がある。
【0004】
アプリケーションが発行した描画命令は印刷データとしてスプールファイルに格納される。すなわち、スプールファイルとはアプリケーションに依存しない電子文書の一形式である。プリンタドライバは、スプールファイルに格納された印刷データをプリンタが解釈可能な印刷コマンドに変換しプリンタに供給する機能を有する。プリンタドライバによりスタンプ機能を実現する場合、印刷データの各ページにスタンプの文字列を合成することになる。図4はスタンプの処理における、印刷データと合成する文字と合成結果の概念を示している。図4(A)のページ401の内容はアプリケーションにより作成され、印刷データとしてスプールされている。図4(B)の文字402はスタンプであり、文書の各ページの印刷データに合成される。図4(C)のページ403が印刷データとしてスプールされたページ401にスタンプの文字402を合成した結果のページである。
【0005】
プリンタドライバが印刷データにユーザが指定したフォントで文字を合成する手法としては、フォント埋め込み、画像埋め込み、文字コード埋め込みという三つの仕組みが知られている。以下、それぞれの仕組みについて説明する。
【0006】
フォント埋め込みとは、プリンタドライバが印刷データを編集することで、文字の描画命令と共にフォント形状情報を印刷データ内に埋め込む手法である。印刷データに埋め込まれたフォント形状情報は、印刷コマンドを生成する際に、合成する文字を描画するために用いられる。このため、印刷コマンドを生成する環境に指定されたフォントが存在しなくてもユーザが意図した出力を得られるという利点がある。しかし、フォント形状情報を印刷データに内に埋め込むため、印刷データ量が大きくなる傾向にある。特に日本語フォントのような文字種の多いフォントを埋め込む場合にこの問題が顕著である。
【0007】
画像埋め込みとは、プリンタドライバが印刷データを編集することで、文字を描画した画像と共に画像の描画命令を印刷データ内に埋め込む手法である。このため、印刷コマンドを生成する環境にユーザに指定されたフォントが存在しなくても、ユーザが意図したフォントで文字が出力される。しかし画像であるため、印刷コマンド生成時に画像が拡大された場合、文字品位が落ちる場合がある。
【0008】
文字コード埋め込みとは、プリンタドライバが印刷データを編集することで、フォントに依存しない文字コードと共に文字の描画命令ならびにフォント属性を印刷データ内に埋め込む手法である。印刷コマンドを生成する環境にユーザに指定されたフォントが存在する場合は、ユーザが意図した出力が得られる。また、印刷コマンドを生成する環境にユーザに指定されたフォントが存在しない場合は、一般にフォント置き換えと呼ばれる別のフォントを用いた描画が行われる。このフォント置き換えが行われた場合でも、フォントはユーザによる指定とは異なるものの、文字化け等が発生しない利点がある。
【0009】
上述した印刷データにユーザが指定したフォントで文字を合成する手法の中から、プリンタドライバやオペレーティングシステム(以下OSと略す)の種類、さらにプリンタの性能等に応じて適切なものが選択される。フォント埋め込み処理としては、プリンタドライバのユーザインタフェースモジュールがアプリケーションに成り代わり文字を描画したページを挿入する技術が提案されている(例えば、[特許文献1]参照)。また、埋め込みフォントが含まれている場合、埋め込みフォントを取得し、取得した埋め込みフォントを中間データと共に記憶する技術が提案されている(例えば、[特許文献2]参照)。また、電子文書で文字を表現するにあたり、フォント埋め込み処理を行うか、あるいは、画像埋め込み処理を行うかを切替る技術が提案されている(例えば、[特許文献3]参照)。
【0010】
プリンタドライバの種類には様々なものがあるが、ここではマイクロソフト社のOSであるWindows(登録商標)で動作する、XPSプリンタドライバと呼ばれるプリンタドライバについて説明する。XPSプリンタドライバの特徴の一つに、スプールファイルに格納されるデバイス非依存の印刷データの形式がXPSの文書データと同一形式であることが挙げられる。
【0011】
XPSとはXML Paper Specificationの略で、マイクロソフト社が提案しているオープン規格の電子文書フォーマットの一つである。XPS文書はFixedDocumentSequence(以下FDSと略す)をルートとするツリー構造になっている。FDSは複数のFixedDocument(以下FDと略す)を持ち、FDは複数のFixedPage(以下FPと略す)を持つ。FDSとFDとFPのそれぞれは、XPSパートと呼ばれることがある。FPは文書のページの内容をExtensible Application Markup Language(以下XAMLと略す)と呼ばれるXML形式の言語で記述しており、実際に表示または印刷される際に用いられる描画命令を含んでいる。FPの描画で使用されるフォントや画像等の資源は複数のFPで共有することができる。また、FDSとFDとFPはそれぞれ印刷設定をPrintTicket(以下PTと略す)で持つことができる。PTはXPS文書を印刷する際の印刷設定をXML形式で記述したものである。ここで各FPを印刷する際に使用する印刷設定は、FDSのPTと、印刷対象FPの親FDのPTと、印刷対象FPのPTをマージしたPTとなる。
【0012】
図5はXPS文書の論理構造を示したブロック図の一例である。XPS文書501の論理構造はFDS503がルートとなるツリー構造となっている。FDS503は子としてFD511とFD513を有する。FD511は子としてFP521とFP523を有する。FD513は子としてFP525を有する。印刷設定を記述したPTについては、FDS503がPT531を、FD511がPT533を、FP521がPT535を、FD513がPT537をそれぞれ保持している。FP523とFP525はPTを保持していない。また、FP521とFP523がフォントや画像等の資源541を共有しており、FP525はフォントや画像等の資源543を利用している。ここで例えばFP521を印刷する際に使用するPTは、PT531とPT533とPT535をマージしたPTとなる。以上のようにXPSは表示や印刷において必要な資源を内包することが特徴の一つである。
【0013】
図2はアプリケーションが印刷する際にXPSプリンタドライバが動作した場合におけるデータの流れを説明する為のブロック図の一例である。図2において、XPSプリンタドライバを構成するモジュールはユーザインタフェースモジュール217、レイアウトフィルター213、レンダーフィルター215である。
【0014】
アプリケーション201からOSの印刷サポート機能203を介してユーザインタフェースモジュール217を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。
【0015】
アプリケーション201からユーザ操作により印刷指示がなされると、その指示内容はOSの印刷サポート機能203に送られる。具体的にはOSの描画エンジンであるGDI(Graphic Device Interface)により、仮想化された印刷領域であるDC(Device Context)が作成され、アプリケーション201へ供給される。そして、アプリケーション201により文書の各ページの描画処理がDCに対して行われる。描画内容はMXDC(Microsoft XPS Document Converter)によりXPS形式に変換され、その結果、XPS形式の印刷データが生成される。XPS形式の印刷データは、OSの印刷サポート機能203によって、印刷ジョブ毎にスプールファイル205として一時的に記憶装置にスプールされる。
【0016】
ここでアプリケーション201はGDIに描画を行わせることを前提に説明した。一方、XPS形式の電子文書を作成することができるアプリケーションの場合は、GDIとMXDCに頼らずに、作成したXPS形式の印刷データをスプールすることも可能である。
【0017】
スプールファイル205に格納されたデータはOSの印刷パイプラインサービス207により呼び出されたフィルターパイプライン211に供給される。フィルターパイプライン211は、図示しないプリンタドライバのパイプライン構成ファイルに記述されている任意の数のフィルターによって構成される。印刷装置120が解釈可能な印刷コマンドがXPS形式では無い場合、少なくとも、スプールされたXPS形式のデータを印刷コマンドに変換する為のフィルターが必要となる。図2ではフィルターパイプライン211はレイアウトフィルター213とレンダーフィルター215で構成される。レイアウトフィルター213はスプールファイルからXPS形式の印刷データを取得し、印刷設定に基づき必要に応じ印刷データを編集し出力する。例えば印刷設定にスタンプが指定されている場合、レイアウトフィルター213は印刷データにスタンプを描画する為の命令とフォントや画像などの資源を埋め込むことが可能である。印刷データを加工する必要が無い場合は、取得した印刷データをそのまま出力する。レイアウトフィルター213の出力は、レンダーフィルター215に供給される。レンダーフィルター215は、供給されたXPS形式の印刷データの各ページのレンダリング処理を行い、必要な画像処理を行ったうえで、印刷コマンドに変換して出力する。印刷コマンド215が出力した印刷コマンドは印刷装置120に供給され、印刷装置120が印刷動作を実行する。
【特許文献1】特登録03897539
【特許文献2】特登録03962559
【特許文献3】特開2005−63052号公報
【発明の開示】
【発明が解決しようとする課題】
【0018】
しかしながら、XPSプリンタドライバにおいてスタンプ機能を実現する際には、下記のような問題があった。
【0019】
まず、従来のフォント埋め込みの手法では、電子文書ヘの埋め込みが禁止されているフォントが印刷設定のスタンプに指定されている場合、レイアウトフィルター213がXPS形式の印刷データにフォントを埋め込むことが出来ない問題がある。逆に埋め込みが禁止されているフォントを、印刷設定のスタンプで指定できないようなユーザインタフェースモジュール217を作成することも可能だが、フォントの選択肢が減ってしまう問題がある。
【0020】
次に、従来の画像埋め込みの手法では、レイアウトフィルター213がXPS形式の印刷データにスタンプの文字を描画した画像を埋め込んだ場合、本来文字として処理されるべきスタンプが一般的な画像として処理される問題がある。レンダーフィルター215が、供給されたXPS形式の印刷データから印刷コマンドを生成する際に、文字のスタンプは画像となっている。このため、本来文字に対して適用されるべき色処理やハーフトーン処理等が適用されず、文字以外の例えば図形用や写真用の処理が適用される。従って、印刷結果ではスタンプの文字の部分の品質が悪化する問題がある。
【0021】
最後に、従来の文字コード埋め込みに手法では、レイアウトフィルター213がXPS形式の印刷データにスタンプの文字の文字コードを埋め込んだ場合、XPS形式の印刷データにはフォントは埋め込まれていない。つまり、XPSの印刷データを描画するにあたり、必要なフォント資源を内包していない印刷データがレンダーフィルター215に供給される問題が有る。
【0022】
そこで、本発明は上記の問題に鑑み、ユーザに埋め込み禁止フォントを指定できる環境を提供し、かつ、印刷結果における文字の品質が低下することがない情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0023】
上記目的を達成するために本発明は次のような構成から成る。
【0024】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定手段と、
前記判定手段により埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定手段により埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込み手段と、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理手段とを有することを特徴とする。
【発明の効果】
【0025】
本願発明によれば、指定されているフォントが埋め込みフォント禁止フォントであっても最適な画像処理を行うことができる。
【発明を実施するための最良の形態】
【0026】
以下、図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0027】
<実施形態1>
まず、本実施形態のプリンタドライバの構成について図2を用いて説明する。
【0028】
(スタンプ印刷時のプリンタドライバの動作)
前述したように、図2はアプリケーションが印刷する際にXPSプリンタドライバが動作した場合におけるデータの流れを説明する為のブロック図の一例である。ここで本実施形態のXPSプリンタドライバを構成するモジュールはユーザインタフェースモジュール217、レイアウトフィルター213、レンダーフィルター215である。
【0029】
ユーザはーザインタフェースモジュール217が提供する印刷設定ダイアログを介して、印刷に関る各種設定を行うことができる。スタンプに関連する印刷設定ダイアログに関しては図3を用いて後述する。ユーザは印刷設定ダイアログを介して、スタンプに関る設定も行うことが可能で、例えばスタンプに用いられる文字列や、フォント、文字のサイズ等を設定することが可能である。ユーザの指示によりアプリケーション201が印刷処理を開始すると、スタンプに関する設定を含む各種設定値は、前述した様にPTとしてスプールファイル205に格納される。以下、印刷設定においてスタンプがONに設定され、スタンプのフォントには電子文書への埋め込みが禁止されているフォントが指定されているとして説明する。
【0030】
スプールファイル205に格納されたデータは、最初に、OSの印刷パイプラインサービス207により呼び出されたレイアウトフィルター213に供給される。レイアウトフィルター213はスプールファイル205からPTを読み取り、印刷設定のスタンプがONに設定されているか調べる。ここではスタンプがONであるので、レイアウトフィルター213はスプールされた印刷データの各ページにスタンプの文字列を付加する処理を行う。レイアウトフィルター213の処理の詳細は図6を用いて後述するため、ここでは動作の概要の説明にとどめる。スタンプに設定されたフォントは埋め込みが禁止されているので、レイアウトフィルター213はフォントは埋め込まず、スタンプの文字を描画した画像を作成し印刷データ(XPSの文書データと同一形式)に埋め込む。この際、スタンプの文字を描画した画像には、文字スタンプ用の画像である印を付加する。また、印刷データのページの描画命令の末尾に、埋め込んだ文字スタンプ用の画像を描画する命令を追加して出力する。レイアウトフィルター213が出力した印刷データは、次のフィルターであるレンダーフィルター215に供給される。
【0031】
レンダーフィルター215は、供給された印刷データの各ページをレンダリングし、ビットマップデータを生成し、図形、写真、文字等の各領域に対して適切な画像処理を行った後に、印刷装置120が解釈可能な印刷制御コマンドに変換して出力する。この際、スタンプの文字は画像として埋め込まれているが、文字スタンプ用の画像である印が付加されているため、文字の領域に対して文字用の画像処理を行う。レンダーフィルター215による、文字スタンプ用の画像の決定処理の詳細は図7を用いて後述する。また、レンダーフィルター215による、文字スタンプ用の画像に対する画像処理の切り替えは図12を用いて後述する。
印刷装置120は印刷コマンドを受信し、印刷媒体に対して像を形成する。
【0032】
なお、本実施形態のXPSプリンタドライバのレイアウトフィルター213とレンダーフィルター215の処理の詳細は後述するが、理解を容易にするためにフローチャートを用いる。そして、説明に用いられる各フローチャートはプログラムとして図1のハードディスク装置110に記憶されており、RAM109に読出され、CPU107によって実行される。図1は本実施形態における印刷システムの構成を示すブロック図の一例であり、詳細は後述する。
【0033】
(印刷設定ダイアログ)
次に、ユーザインタフェースモジュール217がユーザに提供する印刷設定ダイアログについて説明する。図3(A)、図3(B)は本実施形態におけるスタンプに関する設定をユーザが行う際に表示される印刷設定ダイアログの一例を示す図である。これらの印刷設定ダイアログは設定に関する内容を表示するとともに、同時にユーザーによる上記設定内容の変更指示や入力を受け付ける。
【0034】
図3(A)にスタンプダイアログの表示例を示す。スタンプダイアログでは印刷文書のページに対して重ね合わせるスタンプの設定を行うことができる。スタンプダイアログ361は表示エリア362〜375から構成される。スタンプ設定部371ではチェックボックスをONに設定することでスタンプ機能を有効にすることができる。スタンプ種別設定部372では事前に登録されたスタンプをドロップダウンリストにより選択することが可能である。スタンプ設定部373を押すと後述する図3(B)のスタンプ設定ダイアログが開き、登録されているスタンプの設定を変更したり、新たにスタンプを作成し登録することができる。
【0035】
透過スタンプ設定部374のチェックボックスをONに設定すると、スタンプの文字が透過になり、スタンプの文字の下に配置される文書のページの内容が確認しやすくなる。先頭スタンプ設定部375はアプリケーションの文書の第一ページにのみスタンプを合成するか、あるいは全てのページにスタンプの模様を合成するかを設定できる。
【0036】
ユーザーは各項目を選択した後にOKボタン362を押下することでスタンプダイアログ361を閉じ、選択した印刷設定を印刷に反映させることができる。キャンセルボタン353を押下するとスタンプダイアログ361が閉じ、選択した設定項目の内容は破棄され印刷に反映されることはない。標準に戻すボタン364が押下されるとスタンプダイアログ361上の各設定項目の設定値が標準状態に戻される。ただし、このとき登録されているスタンプの設定値には影響しない。ヘルプボタン365はスタンプダイアログ361の各設定項目に関する説明文を別ウィンドウで表示させることができる。
【0037】
図3(B)にスタンプ設定ダイアログの表示例を示す。スタンプ設定ダイアログでは登録されているスタンプの設定を変更したり、新たにスタンプを作成し登録することができる。スタンプ設定ダイアログ380は、表示エリア381〜398から構成される。本実施形態のスタンプ設定ダイアログでは表示する項目が非常に多いため、タブシートを使用して設定項目を内容ごとに分けて見やすい構成にしている。
【0038】
スタンプタブ385では、スタンプに使用する文字列やビットマップの設定に関する内容を表示する。配置タブ386ではスタンプを配置するページ中の位置やスタンプの回転角度等を表示する。登録設定タブ387では、新規に作成したスタンプや変更された既存のスタンプの設定を登録することができる。
【0039】
図3(B)は上記のタブのうち、スタンプタブ385が選択された場合の表示例を示している。簡易表示エリア391には、視覚に訴える形で、現在設定されている内容のスタンプに関する情報を表示する。スタンプ文字列入力部393により文字のスタンプで使用される任意の文字列を指定することができ、ここでは“Stamp”と入力されている。
【0040】
フォント名選択部394ではスタンプの文字の描画に使用されるフォントを選択することができる。後述する様にスタンプの文字の大きさは可変としているため、ここではTrueTypeに代表されるベクターフォントを選択することが可能である。図示されているArialの他にも、プリンタドライバが動作するOSにインストールされているフォントが列挙される。ここで、フォント作成者の意向により、電子文書への埋め込みが禁止されているフォントがあることに注意が必要である。前述したように、本実施形態では埋め込みが禁止されているフォントがスタンプに指定された場合は、文字列を描画したビットマップを電子文書に埋め込むため、埋め込み禁止フォントも選択することが可能である。
【0041】
スタイル選択部395は文字のスタイルを選択する。図示されている標準の他に、文字を太くする太字、文字を斜めにする斜体、文字を太くかつ斜めにする太字斜体を選択することが出来る。サイズ設定部396ではスタンプの文字の大きさを選択することができる。文字囲み設定部396ではスタンプの文字を囲む線の有無を選択することができる。文字囲み選択部397は、文字囲み設定部36のチェックボックスがONに設定されていると有効になり、スタンプの文字を囲む線の種類を選択することができる。図示されている枠囲みは簡易表示エリア391で示されている様にスタンプの文字の周囲を矩形の線で囲む。枠囲みの他に、円でスタンプの文字を囲む丸囲み、角が丸い矩形でスタンプの文字を囲む丸枠囲みを選択することができる。色選択部384を押下すると、図示しない色設定ダイアログが開き、ユーザはスタンプに使用する好みの色を作成することが出来る。標準設定部384が押されると、スタンプタブ385の設定が変更前に戻される。
【0042】
ユーザーは各項目を選択した後にOKボタン381を押下することでスタンプ設定ダイアログ380を閉じ、選択した印刷設定を印刷に反映させることができる。キャンセルボタン382を押下するとスタンプ設定ダイアログ380が閉じ、選択した設定項目の内容は破棄され印刷に反映されることはない。ヘルプボタン383はスタンプタブ385の各設定項目に関する説明文を別ウィンドウで表示させることができる。
【0043】
以上で説明したように、プリンタドライバのユーザインタフェースモジュール217が提供する印刷ダイアログを介して、ユーザはスタンプに関る設定を行うことが可能である。また、図示していないが、ユーザインタフェースモジュール217はスタンプに関する設定以外にも、使用される印刷用紙の種類や、印刷用紙の大きさ等の印刷設定に関しても、ユーザが設定出来るような印刷ダイアログを提供することは言うまでもない。
【0044】
(レイアウトフィルターのスタンプ用情報の埋め込み処理)
続いて図6を用いてレイアウトフィルター213のスタンプ用情報の埋め込み処理について説明する。図6はレイアウトフィルター213のスタンプ用情報の埋め込み処理を表すフローチャートの一例である。前述した様にOSのレイアウトフィルター213はOSの印刷パイプラインサービス207により起動される。
【0045】
S601で処理を開始し、S603でXPSパートを取得する。続いてS605でXPSパートを取得出来たかどうかを判定し、取得できればS609に移り、取得出来なければ全てのXPSパートを処理したことを意味するのでS607に移り終了する。S609で取得したXPSパートがFPかどうかを判定し、FPでなければS611に移り、FPであればS613に移る。S611では取得したXPSパートをそのまま次のフィルターに送信し、S603に移る。S613ではFPで使用するPTから、スタンプに関する印刷設定を取得する。続いてS615で、取得した印刷設定の文字スタンプがONかどうかを判定し、ONであればS619に移り、OFFであればS617に移る。S617ではスタンプをページに合成する必要がないため、取得したFPをそのまま次のフィルターに送信し、S603に移る。S619では取得した印刷設定の文字スタンプに指定されているフォントは電子文書への埋め込みが禁止されているかどうかを判定し、埋め込みが禁止されていなければS621に移り、埋め込みが禁止されていればS631に移る。
【0046】
S621からS627は埋め込みが禁止されていないフォントがスタンプに指定されていた際の処理となる。S621でスタンプに指定されたフォントは、既にXPSに埋め込み済みかどうか判定し、既に埋め込み済みであればS627に移り、まだ埋め込んでいなければS623に移る。S623ではスタンプで使用される文字を調べ、フォントのサブセットを作成し、フォントリソースとしてXPSに埋め込む。続いてS625では、埋め込んだフォントサブセットの情報を記憶し、S621で同一のフォントサブセットを繰り返し埋め込まないようにしておく。続いてS627ではFPのXAMLを読み取り、描画命令の末尾に、埋め込んだフォントを参照する文字列描画命令を追加し、S641に移る。
【0047】
S631からS637は埋め込みが禁止されているフォントがスタンプに指定されていた際の処理となる。この場合、フォントをXPSに埋め込むことが出来ないので、スタンプの文字列を描画した文字スタンプ用の画像を作成し、この画像をXPSに埋め込む。まず、S631で印刷設定から決定される文字スタンプ用の画像が既に埋め込み済みかどうかを判断し、埋め込み済みであればS637に移り、埋め込み済みでなければS633に移る。S633ではスタンプの文字を描画した画像を作成し、画像リソースとしてXPSに埋め込む。具体的には、PTからレンダーフィルター215がXPSをレンダリングする際に用いられる解像度と、ユーザが指定したスタンプのサイズと文字列を取得し、少なくとも文字列を指定されたサイズで描画できるだけの画像の大きさを計算する。そして、計算した大きさの透過画像を作成し、指定されたフォントとサイズ、色でスタンプの文字列を描画する。さらに、この文字スタンプ用の画像には、スタンプの文字を描画したことを意味する情報を付加する。例えば、文字スタンプ用の画像のフォーマットにPNG(Portable Network Graphic)を用いた場合、図8に示す補助チャンクを付加すればよい。例えばテキストデータのキーワード801を「TextStamp」とし、そのテキスト値803を「true」とすることで、PNGの中にスタンプ文字を描画したことを意味する情報を付加することが出来る。なお、さらに、文字スタンプ用の画像には、ユーザに指定された色を表現するために、色空間を定義するカラープロファイルを付加しても良い。文字スタンプ用の画像にカラープロファイルが追加されていれば、FPにプロファイルが指定されていても、ユーザに指定された色を表現することができる。
【0048】
S635では埋め込んだ文字スタンプ用の画像の情報を記憶し、S631で同一の文字スタンプ用の画像を繰り返し埋め込まないようにしておく。続いてS637ではFPのXAMLを読み取り、描画命令の末尾に、埋め込んだ文字スタンプ用の画像を参照する画像描画命令を追加しS641に移る。
【0049】
S641では、S627あるいはS637で編集されたXAMLを有するFPを次のフィルターに送信し、S603に移る。
【0050】
以上の様に、レイアウトフィルター213により、ユーザにより埋め込み可能なフォントが指定された場合はフォントをXPSに埋め込み、埋め込みが禁止されたフォントが指定された場合は文字を描画した文字スタンプ用の画像をXPSに埋め込む。文字スタンプ用の画像を作成する際は、レンダリング解像度を考慮するため、レンダリング時に拡大や縮小処理が行われず、スタンプの文字の品質を維持することができる。また、このようにすることでXPSをレンダリングする際に必要なリソースを全て埋め込むことが可能になる。
【0051】
なお、本実施形態では電子文書への埋め込みが禁止されているフォントが指定されている場合のみ文字スタンプ用の画像を埋め込むようにしているが、埋め込みが許可されているフォントに対しても文字スタンプ用の画像を埋め込んでも良いことは言うまでもない。
【0052】
(レンダーフィルターの文字スタンプ用の画像の判定処理)
次に、図7を用いてレンダーフィルター215による文字スタンプ用の画像の判定処理について説明する。図7はレンダーフィルター215が、供給されたXPSをレンダリングする際に、FPに参照される画像がレイアウトフィルター213により埋め込まれた文字スタンプ用の画像かどうかを判断する処理のフローチャートの一例である。
【0053】
S701で処理が開始され、S703でFPのXAMLを取得する。続いてS705からS713はXAMLに記述された全てImageBrushタグを検証するためのループである。S705ではImageBrushタグがあるかどうか判定し、無ければS721に移り処理を終了し、あればS707に移る。S707ではImageBrushタグのImageSource属性で示される画像がPNGかどうかを判定し、PNGでなければS705に移り、PNGであればS709に移る。S709ではImageSource属性で示されるリソースのパスを取得し、XPSに格納されている画像リソースを読み込む。続くS711では読み込んだPNGのチャンクにテキスト情報の補助チャンクが存在し、キーワードが「TextStamp」でテキスト値が「true」と成っているか判断する。この補助チャンクは図8を用いて前述したように、レイアウトフィルター213がPNGに付加した情報であり、文字スタンプ用の画像かどうかを示している。S711でPNGに文字スタンプ用の画像を示す補助チャンクが存在していればS713に移り、存在しなければS705に移る。S713ではImageBrushタグのImageSource属性で示される画像リソースは文字スタンプ用の画像であることを記憶し、S705に移る。
【0054】
以上のように処理することで、レンダーフィルター215は、供給されたXPSの各ページで使用される画像リソースが、文字スタンプ用の画像であるかどうかを判定することが可能である。この結果に従い、レンダーフィルター215は、XPSのページをレンダリングした後に、スタンプの文字の領域に対して、文字用の画像処理を行うことが可能になる。従って、スタンプの文字が画像として供給されたのにも関らず、スタンプの文字の領域に対して文字に適した処理を行える為、スタンプ以外の文字と同等の品質を維持することが出来る。
【0055】
(レンダーフィルターの画像処理)
次に、図12を用いてレンダーフィルター215による画像処理について説明する。図12はレンダーフィルター215が、供給されたXPSのFPをレンダリングした後に行う画像処理のフローチャートの一例である。
【0056】
なお、図12の処理が行われる前に、レンダーフィルター215が、供給されたXPSからFPのビットマップデータをレンダリングする。その際、文字コードをレンダリングした場合、属性プレーンの対応する領域に文字用の属性フラグを格納する。同様に、画像をレンダリングした場合、属性プレーンの対応する領域に画像の属性フラグを格納する。なお、文字スタンプの画像リソースについては、画像であるので本来であれば画像の属性プレーンの対応する領域に画像の属性フラグを格納するが、本願では、属性プレーンの対応する領域に文字用の属性フラグを格納する。また、更なる処理として、文字のパターンの部分には、文字用の属性フラグを格納するが、文字の背景部分には、文字用の属性フラグを格納しないよう(元の属性のまま)にすることもできる。
【0057】
次に図12の処理について説明する。
【0058】
まず、S1201で処理が開始され、S1203でレンダリング結果の先頭ラスターを処理対象とする。続いてS1205で処理対象のラスターが画像領域を含むかどうかを判定し、画像領域を含まなければS1241に移り、画像領域を含めばS1207に移る。
【0059】
S1207では、ラスターに含まれる画像領域が文字の領域、あるいは文字スタンプ用の画像の領域かどうかを属性プレーンの属性フラグで判定する。判定の結果、文字の領域、あるいは文字スタンプ用の画像の領域でなければS1211に移り、文字の領域、あるいは文字スタンプ用の画像領域であればS1221に移る。ここで文字スタンプ用の画像における画像領域とは、文字スタンプ用の画像の中で文字が描画された領域を指すことは言うまでもない。
【0060】
S1211とS1213は例えば写真等の画像の為の処理となる。S1211では画像用の色処理を行う。ここでは、例えば写真用に視覚的に好ましい結果が得られる色変換処理を行なえばよい。続くS1213では画像用の二値化処理を行う。ここでは、例えば誤差拡散法等により、先鋭性より階調性を重視した二値化処理を行えばよい。この後にS1241に移る。
【0061】
S1221とS1223は文字スタンプ用の画像の為の処理である。S1221では文字用の色処理を行う。ここでは、例えば彩度の維持を優先するような、文字用に視覚的に好ましい結果が得られる色変換処理を行えばよい。続くS1223では文字用の二値化処理を行う。ここでは例えばディザ法により、階調性より先鋭性を重視した二値化処理を行えばよい。この期にS1241に移る。
【0062】
S1241ではレンダリング結果に含まれる全てのラスターを処理したかどうかを判定し、全てのラスターを処理していればS1245に移り処理を終了し、未処理のラスターがあればS1243に移る。S1243では処理対象のラスターを次のラスターとしてから、S1205に移り処理を継続する。
【0063】
以上のようにレンダーフィルター215が、FPのレンダリング結果に対して画像処理を行う際に、文字スタンプ用の画像の画像領域に対しては文字用の処理を行うことができる。なお、上記のレンダリング結果はFP全体であっても、FPを矩形領域に分割したバンド領域であっても良いことは言うまでもない。
【0064】
(印刷システムの構成例)
次に図1を用いて本実施形態における印刷システムについて説明する。図1は本実施形態における印刷システムの構成を示すブロック図の一例である。本実施形態における印刷システムは大きく印刷装置120とデータ処理装置(コンピュータ)100により構成され、データ処理装置100はブロック101〜114から構成される。
【0065】
101は、CRT表示装置であり、プリンタドライバのユーザインタフェースモジュールが提供する印刷設定ダイアログ等を表示する。102はCRTCで表示装置用のコントローラである。103は、キーボードなどのデータ入力装置であり、104は、キーボードコントローラである。105は、ポインティングデバイス等の座標入力装置であり、106は、ポインティングデバイスコントローラである。
【0066】
107は、装置全体の制御を司るCPUである。108は、ブートプログラムなどを記憶しているROMである。109は、OS、各アプリケーションプログラム、本実施形態のフローチャートに関るプリンタドライバプログラムを格納したり、さらにはワークエリアとしても利用されるRAMである。
【0067】
110は、OS、各アプリケーションプログラム、本明細書で説明されるフローチャートに関るプログラムを含むプリンタドライバプログラム、フォントデータ、さらにはデータファイル等を記憶しているハードディスク装置である。111はハードディスクコントローラである。ハードディスク装置110には、スプールファイルも一時的に格納される。112は、可搬性記憶媒体の駆動装置であるフロッピー(登録商標)ディスク装置であり、113はフロッピー(登録商標)ディスクコントローラである。
【0068】
130はインタフェースであり、114はインターフェースコントローラである。データ処理装置100はインターフェースケーブルを介してインクジェットプリンタなどの印刷装置120に接続される。116は、各デバイスを接続するバスである。
【0069】
本装置に電源が投入されると、CPU107はROM108に格納されているブートプログラムに従って起動し、ハードディスク装置110からOSをロードし、操作者の操作待ち状態になる。そして、アプリケーションを介して印刷指示を受けた場合、ハードディスク装置110に格納されているプリンタドライバプログラムがRAM109にロードされCPU107により実行される。印刷指示の代わりに、プリンタドライバの印刷設定変更指示もしくは自動的に起動するように設定されている場合にもプリンタドライバプログラムがRAM109にロードされCPU107により実行される。
【0070】
(本実施形態の効果)
以上の様に、電子文書への埋め込みが禁止されているフォントが、ユーザによりスタンプのフォントに指定されている場合には、レイアウトフィルター213はスタンプの文字を描画した文字スタンプ用の画像をXPSに埋め込む。この文字スタンプ用の画像はレンダーフィルター215がXPSをレンダリングする際の解像度に合わせて作成されるので、レンダリング時に拡大や縮小処理が行われず、印刷結果においても品質が低下しない。また、レイアウトフィルター213が出力した電子文書には、レンダリングに必要な資源が全て含まれている為、レンダーフィルター215において、外部のフォントを読み込むなどの特殊な処理を行う必要が無い。また、電子文書に埋め込まれた文字スタンプ用の画像には、文字スタンプで使用される情報が含まれている為、レンダーフィルター215は文字スタンプ用の画像に対して、文字用の色変換処理や二値化処理等を適用することが可能になる。図形用や写真用の画像処理が文字スタンプ用の画像に適用されることが無いため、画像として電子文書に格納されているのにも関らず、文字としての品質を維持することが可能になる。
【0071】
<実施形態2>
上述した実施形態1においては、レイアウトフィルター213は、スタンプの文字を描画したことを意味する情報を文字スタンプ用の画像に付加し、文字スタンプ用の画像をXPSに埋め込んだ。そしてレンダーフィルター215が、FPで使用される画像に文字スタンプ用の情報が付加されているかを判断することで、画像が文字スタンプ用の画像かどうかを決定していた。すなわち、レンダーフィルター215は、FPで使用される全ての画像を取得し、内容を調査する必要が有った。そこで本実施形態では、レンダーフィルター215が全ての画像の内容を調査することなしに、画像が文字スタンプ用の画像かどうかを決定できるようにした。
【0072】
なお、本実施形態における印刷システムの構成と、ユーザインタフェースモジュール217が提供する印刷設定ダイアログとは、実施形態1と同一であるため説明を省く。
【0073】
(スタンプ印刷時のプリンタドライバの動作)
本実施形態におけるプリンタドライバの構成は実施形態1と同一であるため説明を省く。またプリンタドライバの動作についても共通である点が多いため、特徴を明確にする為差異のみ説明する。
【0074】
レイアウトフィルター213はスプールファイル205からPTを読み取り、印刷設定のスタンプがONに設定されているか調べる。スタンプがONで、埋め込みが禁止されているフォントが指定されている場合、レイアウトフィルター213はスタンプの文字を描画した画像を作成しXPSに埋め込む。そしてFPのXAMLの描画命令の末尾に、埋め込んだ文字スタンプ用の画像を描画する命令を追加して出力する。このとき、埋め込んだ文字スタンプ用の画像を描画する命令に、画像が文字スタンプ用の画像である情報を付加する。本実施形態におけるレイアウトフィルター213の処理の詳細は図9を用いて後述する。
【0075】
レンダーフィルター215は、読み込んだFPのXAMLに画像を描画する命令が存在すれば、文字スタンプ用の画像である情報の有無を判断し、描画命令で参照される画像が文字スタンプ用の画像かどうかを決定する。本実施形態におけるレンダーフィルター215による、文字スタンプ用の画像の決定処理の詳細は図10を用いて後述する。
【0076】
なお、本実施形態のXPSプリンタドライバのレイアウトフィルター213とレンダーフィルター215の処理の詳細は後述するが、理解を容易にするためにフローチャートを用いる。そして、説明に用いられる各フローチャートはプログラムとしてハードディスク装置110に記憶されており、RAM109に読出され、CPU107によって実行される。
【0077】
(レイアウトフィルターのスタンプ埋め込み処理)
次に図9を用いてレイアウトフィルター213のスタンプ用データの埋め込み処理について説明する。図9はレイアウトフィルター213のスタンプ用データの埋め込み処理を表すフローチャートの一例である。本図の処理の多くは図6と同一であり、差異はS933とS937のみであるため、差異のある部分に関連するS631〜S937の処理についてのみ説明を行う。
【0078】
S631からS937は埋め込みが禁止されているフォントがスタンプに指定されていた際の処理となる。この場合、フォントをXPSに埋め込むことが出来ないので、スタンプの文字列を描画した文字スタンプ用の画像を作成し、この画像をXPSに埋め込む。まず、S631で印刷設定から決定される文字スタンプ用の画像が既に埋め込み済みかどうかを判断し、埋め込み済みであればS937に移り、埋め込み済みでなければS933に移る。S933ではスタンプの文字を描画した画像を作成し、画像リソースとしてXPSに埋め込む。具体的には、PTからレンダーフィルター215がXPSをレンダリングする際に用いられる解像度と、ユーザが指定したスタンプのサイズと文字列を取得し、少なくとも文字列を指定されたサイズで描画できるだけの画像の大きさを計算する。そして、計算した大きさの透過画像を作成し、指定されたフォントとサイズ、色でスタンプの文字列を描画する。
【0079】
S635では埋め込んだ文字スタンプ用の画像の情報を記憶し、S631で同一の文字スタンプ用の画像を繰り返し埋め込まないようにしておく。続いてS637ではFPのXAMLを読み取り、各頁の描画命令の末尾に、文字スタンプ用の画像を参照する画像描画命令を追加しS641に移る。ここで文字スタンプ用の画像を参照する画像描画命令に、参照される画像が文字スタンプ用の画像であることを示す情報を付加する。例えば、XAMLのImageBrushタグに、図11(A)に示す文字スタンプ情報1103、図11(B)に示す文字スタンプ情報1107を追加すればよい。例えば属性の名称を「TextStamp」とし、その値を「true」とする。
【0080】
以上のように処理することで、レイアウトフィルター213はXAMLの中に文字スタンプ用の画像である情報を追加することができる。なお、取得したXAMLの描画命令1101(文書の第1ページの描画データ)、描画命令1105(文書の第2ページの描画データ)はコメントとして省略していることを明記しておく。
【0081】
(レンダーフィルターの文字スタンプ用の画像の判定処理)
次に、図10を用いてレンダーフィルター215による文字スタンプ用の画像の決定処理について説明する。図10はレンダーフィルター215が、供給されたXPSをレンダリングする際に、FPに参照される画像がレイアウトフィルター213により埋め込まれた文字スタンプ用の画像かどうかを判断する処理のフローチャートの一例である。
【0082】
S1001で処理が開始され、S1003でFPのXAMLを取得する。続いてS1005からS1009はXAMLに記述された全てImageBrushタグを検証するためのループである。S1005ではImageBrushタグがあるかどうか判定し、無ければS1021に移り処理を終了し、あればS1007に移る。S1107ではImageBrushタグのTextStamp属性の値が「ture」かどうかを判定し、「true」でなければS1005に移り、「true」であればS709に移る。S1009ではImageBrushタグのImageSource属性で示される画像リソースは文字スタンプ用の画像であることを記憶し、S1005に移る。
【0083】
以上のように処理することで、レンダーフィルター215は、供給されたXPSの各FPにより参照される画像リソースが、文字スタンプ用の画像であるかどうかを判定することが可能である。
【0084】
(本実施形態の効果)
本発明の実施形態により、次の効果がある。まず、スタンプの文字列を描画した画像を印刷データに埋め込むようにしたため、電子文書への埋め込みが禁止されているフォントであっても、ユーザがスタンプのフォントに指定することが出来るようになる。
【0085】
次に、印刷データにスタンプの文字列を描画した画像を埋め込むことで、外部のフォントを読み込むなどの特殊な処理を行う必要が無くなる。また、印刷データに付加した通信用情報をレンダリング時に参照することで、画像として埋め込まれたスタンプの文字領域に対して適切な画像処理を行うことが出来るようになる。また、スタンプの文字列を描画する画像のサイズは、印刷条件で指定されたスタンプの文字の大きさと、印刷条件で決定されるレンダリング時の解像度に基づいて決定されるので、拡大や縮小処理が行われず印刷結果においても品質が低下しない。
【0086】
また、レンダーフィルター215が各FPのXAMLで参照される全ての画像の内容を調査することなしに、画像が文字スタンプ用の画像かどうかを決定できるようなる。
【図面の簡単な説明】
【0087】
【図1】印刷システムの構成を示すブロック図の一例
【図2】XPSプリンタドライバに関するデータの流れを示すブロック図の一例
【図3】ユーザインタフェースモジュールが提供する印刷ダイアログの一例
【図4】スタンプ処理の概念図
【図5】XPS文書の論理構造を示したブロック図の一例
【図6】実施形態1におけるレイアウトフィルターのスタンプ用データの埋め込み処理を表すフローチャートの一例
【図7】実施形態1におけるレンダーフィルターの文字スタンプ用の画像の判定処理のフローチャートの一例
【図8】PNGに格納される文字スタンプ用補助チャンクの一例
【図9】実施形態2におけるレイアウトフィルターのスタンプ用データの埋め込み処理を表すフローチャートの一例
【図10】実施形態2におけるレンダーフィルターの文字スタンプ用の画像の判定処理のフローチャートの一例
【図11】文字テキスト画像情報を付加したXAMLの一例
【図12】レンダーフィルターの画像処理に関するフローチャートの一例
【技術分野】
【0001】
本発明は、アプリケーションが作成した文書を印刷するにあたり、フォントを用いた処理を行う情報処理装置、情報処理方法、及びプログラムに関するものである。
【背景技術】
【0002】
情報伝達用の印刷データと機能表示用の印刷データとを含む印刷を行なう一例として、例えば「社外秘」扱いの文書を配布する場合に、文書の各ページに「社外秘」という文字が現われる印を押す場合などがある。ところが、印刷後の印刷物の各ページに人手により印を押すという作業はコストがかかるため、一般に電子化された「社外秘」等のマークを文書と共に印刷する手法が取られる。この「社外秘」といったマークをスタンプと呼んでいる。
【0003】
スタンプ付きの文書印刷の場合には、アプリケーションはユーザが希望するスタンプの文字列やスタンプの文字列を描画する為に使用されるフォント等を受け付ける入力部分を持つ必要がある。そして、文書の印刷時において、アプリケーションは文書の各ページにユーザにより指定されたスタンプを合成し、合成結果の描画命令を発行する必要がある。すなわち、文書に重ね合わせるスタンプを変更するたびに、文書自体を編集する必要がある。これを改善するため、プリンタドライバによるスタンプ機能の実現手法がある。
【0004】
アプリケーションが発行した描画命令は印刷データとしてスプールファイルに格納される。すなわち、スプールファイルとはアプリケーションに依存しない電子文書の一形式である。プリンタドライバは、スプールファイルに格納された印刷データをプリンタが解釈可能な印刷コマンドに変換しプリンタに供給する機能を有する。プリンタドライバによりスタンプ機能を実現する場合、印刷データの各ページにスタンプの文字列を合成することになる。図4はスタンプの処理における、印刷データと合成する文字と合成結果の概念を示している。図4(A)のページ401の内容はアプリケーションにより作成され、印刷データとしてスプールされている。図4(B)の文字402はスタンプであり、文書の各ページの印刷データに合成される。図4(C)のページ403が印刷データとしてスプールされたページ401にスタンプの文字402を合成した結果のページである。
【0005】
プリンタドライバが印刷データにユーザが指定したフォントで文字を合成する手法としては、フォント埋め込み、画像埋め込み、文字コード埋め込みという三つの仕組みが知られている。以下、それぞれの仕組みについて説明する。
【0006】
フォント埋め込みとは、プリンタドライバが印刷データを編集することで、文字の描画命令と共にフォント形状情報を印刷データ内に埋め込む手法である。印刷データに埋め込まれたフォント形状情報は、印刷コマンドを生成する際に、合成する文字を描画するために用いられる。このため、印刷コマンドを生成する環境に指定されたフォントが存在しなくてもユーザが意図した出力を得られるという利点がある。しかし、フォント形状情報を印刷データに内に埋め込むため、印刷データ量が大きくなる傾向にある。特に日本語フォントのような文字種の多いフォントを埋め込む場合にこの問題が顕著である。
【0007】
画像埋め込みとは、プリンタドライバが印刷データを編集することで、文字を描画した画像と共に画像の描画命令を印刷データ内に埋め込む手法である。このため、印刷コマンドを生成する環境にユーザに指定されたフォントが存在しなくても、ユーザが意図したフォントで文字が出力される。しかし画像であるため、印刷コマンド生成時に画像が拡大された場合、文字品位が落ちる場合がある。
【0008】
文字コード埋め込みとは、プリンタドライバが印刷データを編集することで、フォントに依存しない文字コードと共に文字の描画命令ならびにフォント属性を印刷データ内に埋め込む手法である。印刷コマンドを生成する環境にユーザに指定されたフォントが存在する場合は、ユーザが意図した出力が得られる。また、印刷コマンドを生成する環境にユーザに指定されたフォントが存在しない場合は、一般にフォント置き換えと呼ばれる別のフォントを用いた描画が行われる。このフォント置き換えが行われた場合でも、フォントはユーザによる指定とは異なるものの、文字化け等が発生しない利点がある。
【0009】
上述した印刷データにユーザが指定したフォントで文字を合成する手法の中から、プリンタドライバやオペレーティングシステム(以下OSと略す)の種類、さらにプリンタの性能等に応じて適切なものが選択される。フォント埋め込み処理としては、プリンタドライバのユーザインタフェースモジュールがアプリケーションに成り代わり文字を描画したページを挿入する技術が提案されている(例えば、[特許文献1]参照)。また、埋め込みフォントが含まれている場合、埋め込みフォントを取得し、取得した埋め込みフォントを中間データと共に記憶する技術が提案されている(例えば、[特許文献2]参照)。また、電子文書で文字を表現するにあたり、フォント埋め込み処理を行うか、あるいは、画像埋め込み処理を行うかを切替る技術が提案されている(例えば、[特許文献3]参照)。
【0010】
プリンタドライバの種類には様々なものがあるが、ここではマイクロソフト社のOSであるWindows(登録商標)で動作する、XPSプリンタドライバと呼ばれるプリンタドライバについて説明する。XPSプリンタドライバの特徴の一つに、スプールファイルに格納されるデバイス非依存の印刷データの形式がXPSの文書データと同一形式であることが挙げられる。
【0011】
XPSとはXML Paper Specificationの略で、マイクロソフト社が提案しているオープン規格の電子文書フォーマットの一つである。XPS文書はFixedDocumentSequence(以下FDSと略す)をルートとするツリー構造になっている。FDSは複数のFixedDocument(以下FDと略す)を持ち、FDは複数のFixedPage(以下FPと略す)を持つ。FDSとFDとFPのそれぞれは、XPSパートと呼ばれることがある。FPは文書のページの内容をExtensible Application Markup Language(以下XAMLと略す)と呼ばれるXML形式の言語で記述しており、実際に表示または印刷される際に用いられる描画命令を含んでいる。FPの描画で使用されるフォントや画像等の資源は複数のFPで共有することができる。また、FDSとFDとFPはそれぞれ印刷設定をPrintTicket(以下PTと略す)で持つことができる。PTはXPS文書を印刷する際の印刷設定をXML形式で記述したものである。ここで各FPを印刷する際に使用する印刷設定は、FDSのPTと、印刷対象FPの親FDのPTと、印刷対象FPのPTをマージしたPTとなる。
【0012】
図5はXPS文書の論理構造を示したブロック図の一例である。XPS文書501の論理構造はFDS503がルートとなるツリー構造となっている。FDS503は子としてFD511とFD513を有する。FD511は子としてFP521とFP523を有する。FD513は子としてFP525を有する。印刷設定を記述したPTについては、FDS503がPT531を、FD511がPT533を、FP521がPT535を、FD513がPT537をそれぞれ保持している。FP523とFP525はPTを保持していない。また、FP521とFP523がフォントや画像等の資源541を共有しており、FP525はフォントや画像等の資源543を利用している。ここで例えばFP521を印刷する際に使用するPTは、PT531とPT533とPT535をマージしたPTとなる。以上のようにXPSは表示や印刷において必要な資源を内包することが特徴の一つである。
【0013】
図2はアプリケーションが印刷する際にXPSプリンタドライバが動作した場合におけるデータの流れを説明する為のブロック図の一例である。図2において、XPSプリンタドライバを構成するモジュールはユーザインタフェースモジュール217、レイアウトフィルター213、レンダーフィルター215である。
【0014】
アプリケーション201からOSの印刷サポート機能203を介してユーザインタフェースモジュール217を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。
【0015】
アプリケーション201からユーザ操作により印刷指示がなされると、その指示内容はOSの印刷サポート機能203に送られる。具体的にはOSの描画エンジンであるGDI(Graphic Device Interface)により、仮想化された印刷領域であるDC(Device Context)が作成され、アプリケーション201へ供給される。そして、アプリケーション201により文書の各ページの描画処理がDCに対して行われる。描画内容はMXDC(Microsoft XPS Document Converter)によりXPS形式に変換され、その結果、XPS形式の印刷データが生成される。XPS形式の印刷データは、OSの印刷サポート機能203によって、印刷ジョブ毎にスプールファイル205として一時的に記憶装置にスプールされる。
【0016】
ここでアプリケーション201はGDIに描画を行わせることを前提に説明した。一方、XPS形式の電子文書を作成することができるアプリケーションの場合は、GDIとMXDCに頼らずに、作成したXPS形式の印刷データをスプールすることも可能である。
【0017】
スプールファイル205に格納されたデータはOSの印刷パイプラインサービス207により呼び出されたフィルターパイプライン211に供給される。フィルターパイプライン211は、図示しないプリンタドライバのパイプライン構成ファイルに記述されている任意の数のフィルターによって構成される。印刷装置120が解釈可能な印刷コマンドがXPS形式では無い場合、少なくとも、スプールされたXPS形式のデータを印刷コマンドに変換する為のフィルターが必要となる。図2ではフィルターパイプライン211はレイアウトフィルター213とレンダーフィルター215で構成される。レイアウトフィルター213はスプールファイルからXPS形式の印刷データを取得し、印刷設定に基づき必要に応じ印刷データを編集し出力する。例えば印刷設定にスタンプが指定されている場合、レイアウトフィルター213は印刷データにスタンプを描画する為の命令とフォントや画像などの資源を埋め込むことが可能である。印刷データを加工する必要が無い場合は、取得した印刷データをそのまま出力する。レイアウトフィルター213の出力は、レンダーフィルター215に供給される。レンダーフィルター215は、供給されたXPS形式の印刷データの各ページのレンダリング処理を行い、必要な画像処理を行ったうえで、印刷コマンドに変換して出力する。印刷コマンド215が出力した印刷コマンドは印刷装置120に供給され、印刷装置120が印刷動作を実行する。
【特許文献1】特登録03897539
【特許文献2】特登録03962559
【特許文献3】特開2005−63052号公報
【発明の開示】
【発明が解決しようとする課題】
【0018】
しかしながら、XPSプリンタドライバにおいてスタンプ機能を実現する際には、下記のような問題があった。
【0019】
まず、従来のフォント埋め込みの手法では、電子文書ヘの埋め込みが禁止されているフォントが印刷設定のスタンプに指定されている場合、レイアウトフィルター213がXPS形式の印刷データにフォントを埋め込むことが出来ない問題がある。逆に埋め込みが禁止されているフォントを、印刷設定のスタンプで指定できないようなユーザインタフェースモジュール217を作成することも可能だが、フォントの選択肢が減ってしまう問題がある。
【0020】
次に、従来の画像埋め込みの手法では、レイアウトフィルター213がXPS形式の印刷データにスタンプの文字を描画した画像を埋め込んだ場合、本来文字として処理されるべきスタンプが一般的な画像として処理される問題がある。レンダーフィルター215が、供給されたXPS形式の印刷データから印刷コマンドを生成する際に、文字のスタンプは画像となっている。このため、本来文字に対して適用されるべき色処理やハーフトーン処理等が適用されず、文字以外の例えば図形用や写真用の処理が適用される。従って、印刷結果ではスタンプの文字の部分の品質が悪化する問題がある。
【0021】
最後に、従来の文字コード埋め込みに手法では、レイアウトフィルター213がXPS形式の印刷データにスタンプの文字の文字コードを埋め込んだ場合、XPS形式の印刷データにはフォントは埋め込まれていない。つまり、XPSの印刷データを描画するにあたり、必要なフォント資源を内包していない印刷データがレンダーフィルター215に供給される問題が有る。
【0022】
そこで、本発明は上記の問題に鑑み、ユーザに埋め込み禁止フォントを指定できる環境を提供し、かつ、印刷結果における文字の品質が低下することがない情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0023】
上記目的を達成するために本発明は次のような構成から成る。
【0024】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定手段と、
前記判定手段により埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定手段により埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込み手段と、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理手段とを有することを特徴とする。
【発明の効果】
【0025】
本願発明によれば、指定されているフォントが埋め込みフォント禁止フォントであっても最適な画像処理を行うことができる。
【発明を実施するための最良の形態】
【0026】
以下、図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0027】
<実施形態1>
まず、本実施形態のプリンタドライバの構成について図2を用いて説明する。
【0028】
(スタンプ印刷時のプリンタドライバの動作)
前述したように、図2はアプリケーションが印刷する際にXPSプリンタドライバが動作した場合におけるデータの流れを説明する為のブロック図の一例である。ここで本実施形態のXPSプリンタドライバを構成するモジュールはユーザインタフェースモジュール217、レイアウトフィルター213、レンダーフィルター215である。
【0029】
ユーザはーザインタフェースモジュール217が提供する印刷設定ダイアログを介して、印刷に関る各種設定を行うことができる。スタンプに関連する印刷設定ダイアログに関しては図3を用いて後述する。ユーザは印刷設定ダイアログを介して、スタンプに関る設定も行うことが可能で、例えばスタンプに用いられる文字列や、フォント、文字のサイズ等を設定することが可能である。ユーザの指示によりアプリケーション201が印刷処理を開始すると、スタンプに関する設定を含む各種設定値は、前述した様にPTとしてスプールファイル205に格納される。以下、印刷設定においてスタンプがONに設定され、スタンプのフォントには電子文書への埋め込みが禁止されているフォントが指定されているとして説明する。
【0030】
スプールファイル205に格納されたデータは、最初に、OSの印刷パイプラインサービス207により呼び出されたレイアウトフィルター213に供給される。レイアウトフィルター213はスプールファイル205からPTを読み取り、印刷設定のスタンプがONに設定されているか調べる。ここではスタンプがONであるので、レイアウトフィルター213はスプールされた印刷データの各ページにスタンプの文字列を付加する処理を行う。レイアウトフィルター213の処理の詳細は図6を用いて後述するため、ここでは動作の概要の説明にとどめる。スタンプに設定されたフォントは埋め込みが禁止されているので、レイアウトフィルター213はフォントは埋め込まず、スタンプの文字を描画した画像を作成し印刷データ(XPSの文書データと同一形式)に埋め込む。この際、スタンプの文字を描画した画像には、文字スタンプ用の画像である印を付加する。また、印刷データのページの描画命令の末尾に、埋め込んだ文字スタンプ用の画像を描画する命令を追加して出力する。レイアウトフィルター213が出力した印刷データは、次のフィルターであるレンダーフィルター215に供給される。
【0031】
レンダーフィルター215は、供給された印刷データの各ページをレンダリングし、ビットマップデータを生成し、図形、写真、文字等の各領域に対して適切な画像処理を行った後に、印刷装置120が解釈可能な印刷制御コマンドに変換して出力する。この際、スタンプの文字は画像として埋め込まれているが、文字スタンプ用の画像である印が付加されているため、文字の領域に対して文字用の画像処理を行う。レンダーフィルター215による、文字スタンプ用の画像の決定処理の詳細は図7を用いて後述する。また、レンダーフィルター215による、文字スタンプ用の画像に対する画像処理の切り替えは図12を用いて後述する。
印刷装置120は印刷コマンドを受信し、印刷媒体に対して像を形成する。
【0032】
なお、本実施形態のXPSプリンタドライバのレイアウトフィルター213とレンダーフィルター215の処理の詳細は後述するが、理解を容易にするためにフローチャートを用いる。そして、説明に用いられる各フローチャートはプログラムとして図1のハードディスク装置110に記憶されており、RAM109に読出され、CPU107によって実行される。図1は本実施形態における印刷システムの構成を示すブロック図の一例であり、詳細は後述する。
【0033】
(印刷設定ダイアログ)
次に、ユーザインタフェースモジュール217がユーザに提供する印刷設定ダイアログについて説明する。図3(A)、図3(B)は本実施形態におけるスタンプに関する設定をユーザが行う際に表示される印刷設定ダイアログの一例を示す図である。これらの印刷設定ダイアログは設定に関する内容を表示するとともに、同時にユーザーによる上記設定内容の変更指示や入力を受け付ける。
【0034】
図3(A)にスタンプダイアログの表示例を示す。スタンプダイアログでは印刷文書のページに対して重ね合わせるスタンプの設定を行うことができる。スタンプダイアログ361は表示エリア362〜375から構成される。スタンプ設定部371ではチェックボックスをONに設定することでスタンプ機能を有効にすることができる。スタンプ種別設定部372では事前に登録されたスタンプをドロップダウンリストにより選択することが可能である。スタンプ設定部373を押すと後述する図3(B)のスタンプ設定ダイアログが開き、登録されているスタンプの設定を変更したり、新たにスタンプを作成し登録することができる。
【0035】
透過スタンプ設定部374のチェックボックスをONに設定すると、スタンプの文字が透過になり、スタンプの文字の下に配置される文書のページの内容が確認しやすくなる。先頭スタンプ設定部375はアプリケーションの文書の第一ページにのみスタンプを合成するか、あるいは全てのページにスタンプの模様を合成するかを設定できる。
【0036】
ユーザーは各項目を選択した後にOKボタン362を押下することでスタンプダイアログ361を閉じ、選択した印刷設定を印刷に反映させることができる。キャンセルボタン353を押下するとスタンプダイアログ361が閉じ、選択した設定項目の内容は破棄され印刷に反映されることはない。標準に戻すボタン364が押下されるとスタンプダイアログ361上の各設定項目の設定値が標準状態に戻される。ただし、このとき登録されているスタンプの設定値には影響しない。ヘルプボタン365はスタンプダイアログ361の各設定項目に関する説明文を別ウィンドウで表示させることができる。
【0037】
図3(B)にスタンプ設定ダイアログの表示例を示す。スタンプ設定ダイアログでは登録されているスタンプの設定を変更したり、新たにスタンプを作成し登録することができる。スタンプ設定ダイアログ380は、表示エリア381〜398から構成される。本実施形態のスタンプ設定ダイアログでは表示する項目が非常に多いため、タブシートを使用して設定項目を内容ごとに分けて見やすい構成にしている。
【0038】
スタンプタブ385では、スタンプに使用する文字列やビットマップの設定に関する内容を表示する。配置タブ386ではスタンプを配置するページ中の位置やスタンプの回転角度等を表示する。登録設定タブ387では、新規に作成したスタンプや変更された既存のスタンプの設定を登録することができる。
【0039】
図3(B)は上記のタブのうち、スタンプタブ385が選択された場合の表示例を示している。簡易表示エリア391には、視覚に訴える形で、現在設定されている内容のスタンプに関する情報を表示する。スタンプ文字列入力部393により文字のスタンプで使用される任意の文字列を指定することができ、ここでは“Stamp”と入力されている。
【0040】
フォント名選択部394ではスタンプの文字の描画に使用されるフォントを選択することができる。後述する様にスタンプの文字の大きさは可変としているため、ここではTrueTypeに代表されるベクターフォントを選択することが可能である。図示されているArialの他にも、プリンタドライバが動作するOSにインストールされているフォントが列挙される。ここで、フォント作成者の意向により、電子文書への埋め込みが禁止されているフォントがあることに注意が必要である。前述したように、本実施形態では埋め込みが禁止されているフォントがスタンプに指定された場合は、文字列を描画したビットマップを電子文書に埋め込むため、埋め込み禁止フォントも選択することが可能である。
【0041】
スタイル選択部395は文字のスタイルを選択する。図示されている標準の他に、文字を太くする太字、文字を斜めにする斜体、文字を太くかつ斜めにする太字斜体を選択することが出来る。サイズ設定部396ではスタンプの文字の大きさを選択することができる。文字囲み設定部396ではスタンプの文字を囲む線の有無を選択することができる。文字囲み選択部397は、文字囲み設定部36のチェックボックスがONに設定されていると有効になり、スタンプの文字を囲む線の種類を選択することができる。図示されている枠囲みは簡易表示エリア391で示されている様にスタンプの文字の周囲を矩形の線で囲む。枠囲みの他に、円でスタンプの文字を囲む丸囲み、角が丸い矩形でスタンプの文字を囲む丸枠囲みを選択することができる。色選択部384を押下すると、図示しない色設定ダイアログが開き、ユーザはスタンプに使用する好みの色を作成することが出来る。標準設定部384が押されると、スタンプタブ385の設定が変更前に戻される。
【0042】
ユーザーは各項目を選択した後にOKボタン381を押下することでスタンプ設定ダイアログ380を閉じ、選択した印刷設定を印刷に反映させることができる。キャンセルボタン382を押下するとスタンプ設定ダイアログ380が閉じ、選択した設定項目の内容は破棄され印刷に反映されることはない。ヘルプボタン383はスタンプタブ385の各設定項目に関する説明文を別ウィンドウで表示させることができる。
【0043】
以上で説明したように、プリンタドライバのユーザインタフェースモジュール217が提供する印刷ダイアログを介して、ユーザはスタンプに関る設定を行うことが可能である。また、図示していないが、ユーザインタフェースモジュール217はスタンプに関する設定以外にも、使用される印刷用紙の種類や、印刷用紙の大きさ等の印刷設定に関しても、ユーザが設定出来るような印刷ダイアログを提供することは言うまでもない。
【0044】
(レイアウトフィルターのスタンプ用情報の埋め込み処理)
続いて図6を用いてレイアウトフィルター213のスタンプ用情報の埋め込み処理について説明する。図6はレイアウトフィルター213のスタンプ用情報の埋め込み処理を表すフローチャートの一例である。前述した様にOSのレイアウトフィルター213はOSの印刷パイプラインサービス207により起動される。
【0045】
S601で処理を開始し、S603でXPSパートを取得する。続いてS605でXPSパートを取得出来たかどうかを判定し、取得できればS609に移り、取得出来なければ全てのXPSパートを処理したことを意味するのでS607に移り終了する。S609で取得したXPSパートがFPかどうかを判定し、FPでなければS611に移り、FPであればS613に移る。S611では取得したXPSパートをそのまま次のフィルターに送信し、S603に移る。S613ではFPで使用するPTから、スタンプに関する印刷設定を取得する。続いてS615で、取得した印刷設定の文字スタンプがONかどうかを判定し、ONであればS619に移り、OFFであればS617に移る。S617ではスタンプをページに合成する必要がないため、取得したFPをそのまま次のフィルターに送信し、S603に移る。S619では取得した印刷設定の文字スタンプに指定されているフォントは電子文書への埋め込みが禁止されているかどうかを判定し、埋め込みが禁止されていなければS621に移り、埋め込みが禁止されていればS631に移る。
【0046】
S621からS627は埋め込みが禁止されていないフォントがスタンプに指定されていた際の処理となる。S621でスタンプに指定されたフォントは、既にXPSに埋め込み済みかどうか判定し、既に埋め込み済みであればS627に移り、まだ埋め込んでいなければS623に移る。S623ではスタンプで使用される文字を調べ、フォントのサブセットを作成し、フォントリソースとしてXPSに埋め込む。続いてS625では、埋め込んだフォントサブセットの情報を記憶し、S621で同一のフォントサブセットを繰り返し埋め込まないようにしておく。続いてS627ではFPのXAMLを読み取り、描画命令の末尾に、埋め込んだフォントを参照する文字列描画命令を追加し、S641に移る。
【0047】
S631からS637は埋め込みが禁止されているフォントがスタンプに指定されていた際の処理となる。この場合、フォントをXPSに埋め込むことが出来ないので、スタンプの文字列を描画した文字スタンプ用の画像を作成し、この画像をXPSに埋め込む。まず、S631で印刷設定から決定される文字スタンプ用の画像が既に埋め込み済みかどうかを判断し、埋め込み済みであればS637に移り、埋め込み済みでなければS633に移る。S633ではスタンプの文字を描画した画像を作成し、画像リソースとしてXPSに埋め込む。具体的には、PTからレンダーフィルター215がXPSをレンダリングする際に用いられる解像度と、ユーザが指定したスタンプのサイズと文字列を取得し、少なくとも文字列を指定されたサイズで描画できるだけの画像の大きさを計算する。そして、計算した大きさの透過画像を作成し、指定されたフォントとサイズ、色でスタンプの文字列を描画する。さらに、この文字スタンプ用の画像には、スタンプの文字を描画したことを意味する情報を付加する。例えば、文字スタンプ用の画像のフォーマットにPNG(Portable Network Graphic)を用いた場合、図8に示す補助チャンクを付加すればよい。例えばテキストデータのキーワード801を「TextStamp」とし、そのテキスト値803を「true」とすることで、PNGの中にスタンプ文字を描画したことを意味する情報を付加することが出来る。なお、さらに、文字スタンプ用の画像には、ユーザに指定された色を表現するために、色空間を定義するカラープロファイルを付加しても良い。文字スタンプ用の画像にカラープロファイルが追加されていれば、FPにプロファイルが指定されていても、ユーザに指定された色を表現することができる。
【0048】
S635では埋め込んだ文字スタンプ用の画像の情報を記憶し、S631で同一の文字スタンプ用の画像を繰り返し埋め込まないようにしておく。続いてS637ではFPのXAMLを読み取り、描画命令の末尾に、埋め込んだ文字スタンプ用の画像を参照する画像描画命令を追加しS641に移る。
【0049】
S641では、S627あるいはS637で編集されたXAMLを有するFPを次のフィルターに送信し、S603に移る。
【0050】
以上の様に、レイアウトフィルター213により、ユーザにより埋め込み可能なフォントが指定された場合はフォントをXPSに埋め込み、埋め込みが禁止されたフォントが指定された場合は文字を描画した文字スタンプ用の画像をXPSに埋め込む。文字スタンプ用の画像を作成する際は、レンダリング解像度を考慮するため、レンダリング時に拡大や縮小処理が行われず、スタンプの文字の品質を維持することができる。また、このようにすることでXPSをレンダリングする際に必要なリソースを全て埋め込むことが可能になる。
【0051】
なお、本実施形態では電子文書への埋め込みが禁止されているフォントが指定されている場合のみ文字スタンプ用の画像を埋め込むようにしているが、埋め込みが許可されているフォントに対しても文字スタンプ用の画像を埋め込んでも良いことは言うまでもない。
【0052】
(レンダーフィルターの文字スタンプ用の画像の判定処理)
次に、図7を用いてレンダーフィルター215による文字スタンプ用の画像の判定処理について説明する。図7はレンダーフィルター215が、供給されたXPSをレンダリングする際に、FPに参照される画像がレイアウトフィルター213により埋め込まれた文字スタンプ用の画像かどうかを判断する処理のフローチャートの一例である。
【0053】
S701で処理が開始され、S703でFPのXAMLを取得する。続いてS705からS713はXAMLに記述された全てImageBrushタグを検証するためのループである。S705ではImageBrushタグがあるかどうか判定し、無ければS721に移り処理を終了し、あればS707に移る。S707ではImageBrushタグのImageSource属性で示される画像がPNGかどうかを判定し、PNGでなければS705に移り、PNGであればS709に移る。S709ではImageSource属性で示されるリソースのパスを取得し、XPSに格納されている画像リソースを読み込む。続くS711では読み込んだPNGのチャンクにテキスト情報の補助チャンクが存在し、キーワードが「TextStamp」でテキスト値が「true」と成っているか判断する。この補助チャンクは図8を用いて前述したように、レイアウトフィルター213がPNGに付加した情報であり、文字スタンプ用の画像かどうかを示している。S711でPNGに文字スタンプ用の画像を示す補助チャンクが存在していればS713に移り、存在しなければS705に移る。S713ではImageBrushタグのImageSource属性で示される画像リソースは文字スタンプ用の画像であることを記憶し、S705に移る。
【0054】
以上のように処理することで、レンダーフィルター215は、供給されたXPSの各ページで使用される画像リソースが、文字スタンプ用の画像であるかどうかを判定することが可能である。この結果に従い、レンダーフィルター215は、XPSのページをレンダリングした後に、スタンプの文字の領域に対して、文字用の画像処理を行うことが可能になる。従って、スタンプの文字が画像として供給されたのにも関らず、スタンプの文字の領域に対して文字に適した処理を行える為、スタンプ以外の文字と同等の品質を維持することが出来る。
【0055】
(レンダーフィルターの画像処理)
次に、図12を用いてレンダーフィルター215による画像処理について説明する。図12はレンダーフィルター215が、供給されたXPSのFPをレンダリングした後に行う画像処理のフローチャートの一例である。
【0056】
なお、図12の処理が行われる前に、レンダーフィルター215が、供給されたXPSからFPのビットマップデータをレンダリングする。その際、文字コードをレンダリングした場合、属性プレーンの対応する領域に文字用の属性フラグを格納する。同様に、画像をレンダリングした場合、属性プレーンの対応する領域に画像の属性フラグを格納する。なお、文字スタンプの画像リソースについては、画像であるので本来であれば画像の属性プレーンの対応する領域に画像の属性フラグを格納するが、本願では、属性プレーンの対応する領域に文字用の属性フラグを格納する。また、更なる処理として、文字のパターンの部分には、文字用の属性フラグを格納するが、文字の背景部分には、文字用の属性フラグを格納しないよう(元の属性のまま)にすることもできる。
【0057】
次に図12の処理について説明する。
【0058】
まず、S1201で処理が開始され、S1203でレンダリング結果の先頭ラスターを処理対象とする。続いてS1205で処理対象のラスターが画像領域を含むかどうかを判定し、画像領域を含まなければS1241に移り、画像領域を含めばS1207に移る。
【0059】
S1207では、ラスターに含まれる画像領域が文字の領域、あるいは文字スタンプ用の画像の領域かどうかを属性プレーンの属性フラグで判定する。判定の結果、文字の領域、あるいは文字スタンプ用の画像の領域でなければS1211に移り、文字の領域、あるいは文字スタンプ用の画像領域であればS1221に移る。ここで文字スタンプ用の画像における画像領域とは、文字スタンプ用の画像の中で文字が描画された領域を指すことは言うまでもない。
【0060】
S1211とS1213は例えば写真等の画像の為の処理となる。S1211では画像用の色処理を行う。ここでは、例えば写真用に視覚的に好ましい結果が得られる色変換処理を行なえばよい。続くS1213では画像用の二値化処理を行う。ここでは、例えば誤差拡散法等により、先鋭性より階調性を重視した二値化処理を行えばよい。この後にS1241に移る。
【0061】
S1221とS1223は文字スタンプ用の画像の為の処理である。S1221では文字用の色処理を行う。ここでは、例えば彩度の維持を優先するような、文字用に視覚的に好ましい結果が得られる色変換処理を行えばよい。続くS1223では文字用の二値化処理を行う。ここでは例えばディザ法により、階調性より先鋭性を重視した二値化処理を行えばよい。この期にS1241に移る。
【0062】
S1241ではレンダリング結果に含まれる全てのラスターを処理したかどうかを判定し、全てのラスターを処理していればS1245に移り処理を終了し、未処理のラスターがあればS1243に移る。S1243では処理対象のラスターを次のラスターとしてから、S1205に移り処理を継続する。
【0063】
以上のようにレンダーフィルター215が、FPのレンダリング結果に対して画像処理を行う際に、文字スタンプ用の画像の画像領域に対しては文字用の処理を行うことができる。なお、上記のレンダリング結果はFP全体であっても、FPを矩形領域に分割したバンド領域であっても良いことは言うまでもない。
【0064】
(印刷システムの構成例)
次に図1を用いて本実施形態における印刷システムについて説明する。図1は本実施形態における印刷システムの構成を示すブロック図の一例である。本実施形態における印刷システムは大きく印刷装置120とデータ処理装置(コンピュータ)100により構成され、データ処理装置100はブロック101〜114から構成される。
【0065】
101は、CRT表示装置であり、プリンタドライバのユーザインタフェースモジュールが提供する印刷設定ダイアログ等を表示する。102はCRTCで表示装置用のコントローラである。103は、キーボードなどのデータ入力装置であり、104は、キーボードコントローラである。105は、ポインティングデバイス等の座標入力装置であり、106は、ポインティングデバイスコントローラである。
【0066】
107は、装置全体の制御を司るCPUである。108は、ブートプログラムなどを記憶しているROMである。109は、OS、各アプリケーションプログラム、本実施形態のフローチャートに関るプリンタドライバプログラムを格納したり、さらにはワークエリアとしても利用されるRAMである。
【0067】
110は、OS、各アプリケーションプログラム、本明細書で説明されるフローチャートに関るプログラムを含むプリンタドライバプログラム、フォントデータ、さらにはデータファイル等を記憶しているハードディスク装置である。111はハードディスクコントローラである。ハードディスク装置110には、スプールファイルも一時的に格納される。112は、可搬性記憶媒体の駆動装置であるフロッピー(登録商標)ディスク装置であり、113はフロッピー(登録商標)ディスクコントローラである。
【0068】
130はインタフェースであり、114はインターフェースコントローラである。データ処理装置100はインターフェースケーブルを介してインクジェットプリンタなどの印刷装置120に接続される。116は、各デバイスを接続するバスである。
【0069】
本装置に電源が投入されると、CPU107はROM108に格納されているブートプログラムに従って起動し、ハードディスク装置110からOSをロードし、操作者の操作待ち状態になる。そして、アプリケーションを介して印刷指示を受けた場合、ハードディスク装置110に格納されているプリンタドライバプログラムがRAM109にロードされCPU107により実行される。印刷指示の代わりに、プリンタドライバの印刷設定変更指示もしくは自動的に起動するように設定されている場合にもプリンタドライバプログラムがRAM109にロードされCPU107により実行される。
【0070】
(本実施形態の効果)
以上の様に、電子文書への埋め込みが禁止されているフォントが、ユーザによりスタンプのフォントに指定されている場合には、レイアウトフィルター213はスタンプの文字を描画した文字スタンプ用の画像をXPSに埋め込む。この文字スタンプ用の画像はレンダーフィルター215がXPSをレンダリングする際の解像度に合わせて作成されるので、レンダリング時に拡大や縮小処理が行われず、印刷結果においても品質が低下しない。また、レイアウトフィルター213が出力した電子文書には、レンダリングに必要な資源が全て含まれている為、レンダーフィルター215において、外部のフォントを読み込むなどの特殊な処理を行う必要が無い。また、電子文書に埋め込まれた文字スタンプ用の画像には、文字スタンプで使用される情報が含まれている為、レンダーフィルター215は文字スタンプ用の画像に対して、文字用の色変換処理や二値化処理等を適用することが可能になる。図形用や写真用の画像処理が文字スタンプ用の画像に適用されることが無いため、画像として電子文書に格納されているのにも関らず、文字としての品質を維持することが可能になる。
【0071】
<実施形態2>
上述した実施形態1においては、レイアウトフィルター213は、スタンプの文字を描画したことを意味する情報を文字スタンプ用の画像に付加し、文字スタンプ用の画像をXPSに埋め込んだ。そしてレンダーフィルター215が、FPで使用される画像に文字スタンプ用の情報が付加されているかを判断することで、画像が文字スタンプ用の画像かどうかを決定していた。すなわち、レンダーフィルター215は、FPで使用される全ての画像を取得し、内容を調査する必要が有った。そこで本実施形態では、レンダーフィルター215が全ての画像の内容を調査することなしに、画像が文字スタンプ用の画像かどうかを決定できるようにした。
【0072】
なお、本実施形態における印刷システムの構成と、ユーザインタフェースモジュール217が提供する印刷設定ダイアログとは、実施形態1と同一であるため説明を省く。
【0073】
(スタンプ印刷時のプリンタドライバの動作)
本実施形態におけるプリンタドライバの構成は実施形態1と同一であるため説明を省く。またプリンタドライバの動作についても共通である点が多いため、特徴を明確にする為差異のみ説明する。
【0074】
レイアウトフィルター213はスプールファイル205からPTを読み取り、印刷設定のスタンプがONに設定されているか調べる。スタンプがONで、埋め込みが禁止されているフォントが指定されている場合、レイアウトフィルター213はスタンプの文字を描画した画像を作成しXPSに埋め込む。そしてFPのXAMLの描画命令の末尾に、埋め込んだ文字スタンプ用の画像を描画する命令を追加して出力する。このとき、埋め込んだ文字スタンプ用の画像を描画する命令に、画像が文字スタンプ用の画像である情報を付加する。本実施形態におけるレイアウトフィルター213の処理の詳細は図9を用いて後述する。
【0075】
レンダーフィルター215は、読み込んだFPのXAMLに画像を描画する命令が存在すれば、文字スタンプ用の画像である情報の有無を判断し、描画命令で参照される画像が文字スタンプ用の画像かどうかを決定する。本実施形態におけるレンダーフィルター215による、文字スタンプ用の画像の決定処理の詳細は図10を用いて後述する。
【0076】
なお、本実施形態のXPSプリンタドライバのレイアウトフィルター213とレンダーフィルター215の処理の詳細は後述するが、理解を容易にするためにフローチャートを用いる。そして、説明に用いられる各フローチャートはプログラムとしてハードディスク装置110に記憶されており、RAM109に読出され、CPU107によって実行される。
【0077】
(レイアウトフィルターのスタンプ埋め込み処理)
次に図9を用いてレイアウトフィルター213のスタンプ用データの埋め込み処理について説明する。図9はレイアウトフィルター213のスタンプ用データの埋め込み処理を表すフローチャートの一例である。本図の処理の多くは図6と同一であり、差異はS933とS937のみであるため、差異のある部分に関連するS631〜S937の処理についてのみ説明を行う。
【0078】
S631からS937は埋め込みが禁止されているフォントがスタンプに指定されていた際の処理となる。この場合、フォントをXPSに埋め込むことが出来ないので、スタンプの文字列を描画した文字スタンプ用の画像を作成し、この画像をXPSに埋め込む。まず、S631で印刷設定から決定される文字スタンプ用の画像が既に埋め込み済みかどうかを判断し、埋め込み済みであればS937に移り、埋め込み済みでなければS933に移る。S933ではスタンプの文字を描画した画像を作成し、画像リソースとしてXPSに埋め込む。具体的には、PTからレンダーフィルター215がXPSをレンダリングする際に用いられる解像度と、ユーザが指定したスタンプのサイズと文字列を取得し、少なくとも文字列を指定されたサイズで描画できるだけの画像の大きさを計算する。そして、計算した大きさの透過画像を作成し、指定されたフォントとサイズ、色でスタンプの文字列を描画する。
【0079】
S635では埋め込んだ文字スタンプ用の画像の情報を記憶し、S631で同一の文字スタンプ用の画像を繰り返し埋め込まないようにしておく。続いてS637ではFPのXAMLを読み取り、各頁の描画命令の末尾に、文字スタンプ用の画像を参照する画像描画命令を追加しS641に移る。ここで文字スタンプ用の画像を参照する画像描画命令に、参照される画像が文字スタンプ用の画像であることを示す情報を付加する。例えば、XAMLのImageBrushタグに、図11(A)に示す文字スタンプ情報1103、図11(B)に示す文字スタンプ情報1107を追加すればよい。例えば属性の名称を「TextStamp」とし、その値を「true」とする。
【0080】
以上のように処理することで、レイアウトフィルター213はXAMLの中に文字スタンプ用の画像である情報を追加することができる。なお、取得したXAMLの描画命令1101(文書の第1ページの描画データ)、描画命令1105(文書の第2ページの描画データ)はコメントとして省略していることを明記しておく。
【0081】
(レンダーフィルターの文字スタンプ用の画像の判定処理)
次に、図10を用いてレンダーフィルター215による文字スタンプ用の画像の決定処理について説明する。図10はレンダーフィルター215が、供給されたXPSをレンダリングする際に、FPに参照される画像がレイアウトフィルター213により埋め込まれた文字スタンプ用の画像かどうかを判断する処理のフローチャートの一例である。
【0082】
S1001で処理が開始され、S1003でFPのXAMLを取得する。続いてS1005からS1009はXAMLに記述された全てImageBrushタグを検証するためのループである。S1005ではImageBrushタグがあるかどうか判定し、無ければS1021に移り処理を終了し、あればS1007に移る。S1107ではImageBrushタグのTextStamp属性の値が「ture」かどうかを判定し、「true」でなければS1005に移り、「true」であればS709に移る。S1009ではImageBrushタグのImageSource属性で示される画像リソースは文字スタンプ用の画像であることを記憶し、S1005に移る。
【0083】
以上のように処理することで、レンダーフィルター215は、供給されたXPSの各FPにより参照される画像リソースが、文字スタンプ用の画像であるかどうかを判定することが可能である。
【0084】
(本実施形態の効果)
本発明の実施形態により、次の効果がある。まず、スタンプの文字列を描画した画像を印刷データに埋め込むようにしたため、電子文書への埋め込みが禁止されているフォントであっても、ユーザがスタンプのフォントに指定することが出来るようになる。
【0085】
次に、印刷データにスタンプの文字列を描画した画像を埋め込むことで、外部のフォントを読み込むなどの特殊な処理を行う必要が無くなる。また、印刷データに付加した通信用情報をレンダリング時に参照することで、画像として埋め込まれたスタンプの文字領域に対して適切な画像処理を行うことが出来るようになる。また、スタンプの文字列を描画する画像のサイズは、印刷条件で指定されたスタンプの文字の大きさと、印刷条件で決定されるレンダリング時の解像度に基づいて決定されるので、拡大や縮小処理が行われず印刷結果においても品質が低下しない。
【0086】
また、レンダーフィルター215が各FPのXAMLで参照される全ての画像の内容を調査することなしに、画像が文字スタンプ用の画像かどうかを決定できるようなる。
【図面の簡単な説明】
【0087】
【図1】印刷システムの構成を示すブロック図の一例
【図2】XPSプリンタドライバに関するデータの流れを示すブロック図の一例
【図3】ユーザインタフェースモジュールが提供する印刷ダイアログの一例
【図4】スタンプ処理の概念図
【図5】XPS文書の論理構造を示したブロック図の一例
【図6】実施形態1におけるレイアウトフィルターのスタンプ用データの埋め込み処理を表すフローチャートの一例
【図7】実施形態1におけるレンダーフィルターの文字スタンプ用の画像の判定処理のフローチャートの一例
【図8】PNGに格納される文字スタンプ用補助チャンクの一例
【図9】実施形態2におけるレイアウトフィルターのスタンプ用データの埋め込み処理を表すフローチャートの一例
【図10】実施形態2におけるレンダーフィルターの文字スタンプ用の画像の判定処理のフローチャートの一例
【図11】文字テキスト画像情報を付加したXAMLの一例
【図12】レンダーフィルターの画像処理に関するフローチャートの一例
【特許請求の範囲】
【請求項1】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定手段と、
前記判定手段により埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定手段により埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込み手段と、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理手段とを有することを特徴とする情報処理装置。
【請求項2】
前記指定されているフォントは、スタンプ文字列で指定されているフォントを含むことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記文書データに基づきビットマップデータを生成する生成手段と、
前記生成手段により生成されたビットマップデータをプリンタに送信する送信手段とを有し、
前記画像処理手段は、前記生成手段により生成されたビットマップデータに対して画像処理を行うことを特徴とする請求項1乃至2の何れかに記載の情報処理装置。
【請求項4】
前記画像処理は、色処理、または二値化処理を含むことを特徴とする請求項1乃至3の何れかに記載の情報処理装置。
【請求項5】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定ステップと、
前記判定ステップにより埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定ステップにより埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込みステップと、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理ステップとを有することを特徴とする情報処理方法。
【請求項6】
前記指定されているフォントは、スタンプ文字列で指定されているフォントを含むことを特徴とする請求項5に記載の情報処理方法。
【請求項7】
前記文書データに基づきビットマップデータを生成する生成ステップと、
前記生成ステップにより生成されたビットマップデータをプリンタに送信する送信ステップとを有し、
前記画像処理ステップは、前記生成ステップにより生成されたビットマップデータに対して画像処理を行うことを特徴とする請求項5乃至6の何れかに記載の情報処理方法。
【請求項8】
前記画像処理は、色処理、または二値化処理を含むことを特徴とする請求項5乃至7の何れかに記載の情報処理方法。
【請求項9】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定ステップと、
前記判定ステップにより埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定ステップにより埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込みステップと、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項10】
前記指定されているフォントは、スタンプ文字列で指定されているフォントを含むことを特徴とする請求項9に記載のプログラム。
【請求項11】
前記文書データに基づきビットマップデータを生成する生成ステップと、
前記生成ステップにより生成されたビットマップデータをプリンタに送信する送信ステップとを有し、
前記画像処理ステップは、前記生成ステップにより生成されたビットマップデータに対して画像処理を行うことを特徴とする請求項9乃至10の何れかに記載のプログラム。
【請求項12】
前記画像処理は、色処理、または二値化処理を含むことを特徴とする請求項9乃至11の何れかに記載のプログラム。
【請求項1】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定手段と、
前記判定手段により埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定手段により埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込み手段と、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理手段とを有することを特徴とする情報処理装置。
【請求項2】
前記指定されているフォントは、スタンプ文字列で指定されているフォントを含むことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記文書データに基づきビットマップデータを生成する生成手段と、
前記生成手段により生成されたビットマップデータをプリンタに送信する送信手段とを有し、
前記画像処理手段は、前記生成手段により生成されたビットマップデータに対して画像処理を行うことを特徴とする請求項1乃至2の何れかに記載の情報処理装置。
【請求項4】
前記画像処理は、色処理、または二値化処理を含むことを特徴とする請求項1乃至3の何れかに記載の情報処理装置。
【請求項5】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定ステップと、
前記判定ステップにより埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定ステップにより埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込みステップと、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理ステップとを有することを特徴とする情報処理方法。
【請求項6】
前記指定されているフォントは、スタンプ文字列で指定されているフォントを含むことを特徴とする請求項5に記載の情報処理方法。
【請求項7】
前記文書データに基づきビットマップデータを生成する生成ステップと、
前記生成ステップにより生成されたビットマップデータをプリンタに送信する送信ステップとを有し、
前記画像処理ステップは、前記生成ステップにより生成されたビットマップデータに対して画像処理を行うことを特徴とする請求項5乃至6の何れかに記載の情報処理方法。
【請求項8】
前記画像処理は、色処理、または二値化処理を含むことを特徴とする請求項5乃至7の何れかに記載の情報処理方法。
【請求項9】
指定されているフォントが埋め込みが禁止されているフォントであるか否かを判定する判定ステップと、
前記判定ステップにより埋め込みが禁止されているフォントでないと判定された場合、指定されているフォントをフォントリソースとして文書データに埋め込み、前記判定ステップにより埋め込みが禁止されているフォントであると判定された場合、指定されているフォントを文字であることを示す情報を含む画像リソースとして文書データに埋め込む埋め込みステップと、
文字であることを示す情報を含む画像リソースに対して文字用の画像処理を行い、文字であることを示す情報を含まない画像リソースに対して画像用の画像処理を行う画像処理ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項10】
前記指定されているフォントは、スタンプ文字列で指定されているフォントを含むことを特徴とする請求項9に記載のプログラム。
【請求項11】
前記文書データに基づきビットマップデータを生成する生成ステップと、
前記生成ステップにより生成されたビットマップデータをプリンタに送信する送信ステップとを有し、
前記画像処理ステップは、前記生成ステップにより生成されたビットマップデータに対して画像処理を行うことを特徴とする請求項9乃至10の何れかに記載のプログラム。
【請求項12】
前記画像処理は、色処理、または二値化処理を含むことを特徴とする請求項9乃至11の何れかに記載のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2009−276897(P2009−276897A)
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2008−125879(P2008−125879)
【出願日】平成20年5月13日(2008.5.13)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願日】平成20年5月13日(2008.5.13)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]