(57)【要約】【課題】  従来不可能であった暗号化された電子文書を解読し、さらに内部で設定された許可属性に従って印刷等の所定の動作を行うことができるようにする。【解決手段】  電子文書が暗号化されていた場合、所定のロジックを用いて上位アプリケーションが指定したパスワードを使用して当該暗号化を解除し（ステップＳ２００５）、解除後の許可属性を判定（ステップＳ２００６）した後、許可されている属性内での動作を行う工程と、許可判定を行う属性が印刷であって、電子文書内で印刷の動作が禁止されていた場合（ステップＳ２００８）、印刷指示を行った上位アプリケーションにエラーコードを返す（ステップＳ２０１１）、あるいは、前記電子文書の印刷の際、画面表示解像度にダウンサンプリングして印刷する（ステップＳ２０１０）かを予め選択する工程とを有するようにする。【選択図】  図２０
2005242802.tif 000002
【特許請求の範囲】
【請求項１】
電子文書に必要な情報を備え、当該情報が適当な方式で圧縮された電子文書フォーマットで作成されたファイルを解析して各々の構成ページ情報を抽出し、少なくとも画面表示又は印刷を行うためにデバイスコンテキスト描画を行うソフトウエアにおける暗号化された電子文書の処理方法であって、
前記電子文書が暗号化されていた場合、所定のロジックを用いて上位アプリケーションが指定したパスワードを使用して前記暗号化を解除し、解除後の許可属性を判定した後、許可されている属性内での動作を行う工程と、
許可判定を行う属性が印刷であって、前記電子文書内で当該印刷の動作が禁止されていた場合、印刷指示を行った上位アプリケーションにエラーコードを返す、あるいは、前記電子文書の印刷の際、画面表示解像度にダウンサンプリングして印刷するかを予め選択する工程と
を有することを特徴とする電子文書の処理方法。
【請求項２】
前記電子文書内で設定されている当該電子文書を開くためのパスワードと、前記上位アプリケーションから指定されたパスワードとを照合し、照合の結果、一致した場合に前記電子文書の解読動作を行うことを特徴とする請求項１に記載の電子文書の処理方法。
【請求項３】
前記電子文書における文書の変更が禁止されている場合、当該文書の変更の指示を行った上位アプリケーションに対してエラーコードを返し、当該上位アプリケーションで指定された文書所有のパスワードと、前記電子文書内で設定されているパスワードとを照合し、照合の結果、一致した場合に前記文書の変更の動作を行うことを特徴とする請求項１に記載の電子文書の処理方法。
【請求項４】
前記電子文書におけるテキストの抽出が禁止されている場合、当該テキストの抽出の指示を行った上位アプリケーションに対してエラーコードを返し、当該上位アプリケーションで指定された文書所有のパスワードと、前記電子文書内で設定されているパスワードとを照合し、照合の結果、一致した場合に前記テキストの抽出の動作を行うことを特徴とする請求項１に記載の電子文書の処理方法。
【請求項５】
前記電子文書におけるフォームフィールドの追加と変更が禁止されている場合、当該フォームフィールドの追加と変更の指示を行った上位アプリケーションに対してエラーコードを返し、当該上位アプリケーションで指定された文書所有のパスワードと、前記電子文書内で設定されているパスワードとを照合し、照合の結果、一致した場合に前記フォームフィールドの追加と変更の動作を行うことを特徴とする請求項１に記載の電子文書の処理方法。
【請求項６】
前記電子文書がＰＤＦ（Portable Document Format）であることを特徴とする請求項１〜５のいずれか１項に記載の電子文書の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、独自に開発した電子文書（ＩＷＰ文書フォーマットに従う電子文書）、または、ＰＤＦ（Portable Document Format）を使用した電子文書において、描画を行うソフトウエアの暗号化された電子文書の処理方法に関するものである。
【背景技術】
【０００２】
従来、上位アプリケーションから暗号化された電子文書に関する各種指示を受けた場合、解読に必要なＲＣ４、ＭＤ５を扱う機能が無かった。これにより、上位アプリケーションに対してエラーを返信していた。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は上述の問題点にかんがみてなされたものであり、従来では不可能であった暗号化された電子文書を解読し、さらに内部で設定された許可属性に従って印刷等の所定の処理を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００４】
本発明は上記課題を解決するために、電子文書に必要な情報を備え、当該情報が適当な方式で圧縮された電子文書フォーマットで作成されたファイルを解析して各々の構成ページ情報を抽出し、少なくとも画面表示又は印刷を行うためにデバイスコンテキスト描画を行うソフトウエアにおける暗号化された電子文書の処理方法であって、前記電子文書が暗号化されていた場合、所定のロジックを用いて上位アプリケーションが指定したパスワードを使用して前記暗号化を解除し、解除後の許可属性を判定した後、許可されている属性内での動作を行う工程と、許可判定を行う属性が印刷であって、前記電子文書内で当該印刷の動作が禁止されていた場合、印刷指示を行った上位アプリケーションにエラーコードを返す、あるいは、前記電子文書の印刷の際、画面表示解像度にダウンサンプリングして印刷するかを予め選択する工程とを有することを特徴とする電子文書の処理方法当を提供する。
【発明の効果】
【０００５】
本発明によれば、従来では不可能であった暗号化された電子文書を解読し、さらに内部で設定された許可属性に従って印刷等の所定の処理を行うことができる。
【０００６】
また、例えば、プリンタドライバーの動作速度が遅いなどのシステム条件により、描画ソフトウエアによってＧＤＩ、ＤＤＩに描画されたフォント情報がプリンタドライバーまでとどかないという問題を回避することができる。さらに、同一のフォントは複数のページにまたがって使用されているケースが多く、この様な場合に面付け時のページをまたいだ場合のフォントの削除、登録という処理を削減することができる。これにより、結果としてパフォーマンスの向上を図ることができる。
【発明を実施するための最良の形態】
【０００７】
まずはじめに、図１８の「ＩＷＰファイルの暗号化データの構成」について説明する。
図１８に示すように、ファイルヘッダの先頭行には、「％ＩＷＰ−」という特定の文字列があり、データがこの文字列から始まる場合、本実施形態におけるソフトウエアで描画可能である（１８０１）。このＩＷＰファイルには、複数ページの描画に必要な情報を確認することができる。
【０００８】
１８０５には、このＩＷＰファイルが暗号化されているかどうかを示す記載が含まれる。暗号化されたＩＷＰの場合、「Encrypt」エントリが設定される。これが設定された場合、ＩＷＰファイル内の描画オブジェクト、イメージデータ、パスデータはＲＣ４、ＭＤ５によって暗号化されていることを示している。
【０００９】
１８０２，１８０３，１８０４には、各々、描画データ、イメージデータ、パスなどの描画データが格納されている。これらのデータは、同一ページ内で任意の個数記載することができ、順所も特定されていない。
【００１０】
次に、図１の「各ページで使用するフォントが同じ場合」において、３ページの電子文書のそれぞれにフォントが組み込まれている場合について説明する。
【００１１】
図１の１ページ目には、Font００１とFont００３の組み込みフォントを使用したテキスト描画が示されている（１００）。図１の２ページ目には、Font００２の組み込みフォントを使用したテキスト描画が示されている（１０１）。図１の３ページ目には、Font００３とFont００１の組み込みフォントを使用したテキスト描画が示されている（１０２）。
【００１２】
次に、図２の「ＩＷＰファイルのページ描画データと組み込み（以降、エンベットと記載する）フォントデータ」において、ＩＷＰ（またはＰＤＦ）データ内のフォントの描画情報と、描画に必要なエンベットフォント情報の関係について説明する。
【００１３】
図２に示すように、ファイルヘッダの先頭行には、「％ＩＷＰ−」という特定の文字列があり、データがこの文字列から始まる場合には、本実施形態におけるソフトウエアで描画可能である（２０１）。このＩＷＰファイルには、複数ページの描画に必要な情報を確認することができる。
【００１４】
２０６は、テキスト描画１００におけるページデータのＩＷＰファイル内の格納位置を示したものである。このページでは、Font００１と、Font００３の２つのフォントをエンベットしている。これらのフォントを描画する場合には、Font００１（２０２）のフォント情報を参照し、さらに、Font００３（２０４）のフォント情報を参照する。
【００１５】
２０７は、テキスト描画１０１におけるページデータのＩＷＰファイル内の格納位置を示したものである。このページでは、Font００２をエンベットしている。このフォントを描画する場合には、Font２（２０３）のフォント情報を参照する。
【００１６】
２０８は、テキスト描画１０２におけるページデータのＩＷＰファイル内の格納位置を示したものである。このページではFont００３と、Font００１の２つのフォントをエンベットしている。これらのフォントを描画する場合Font１（２０２）のフォント情報を参照し、さらに、Font３（２０４）のフォント情報を参照する。
【００１７】
このように、複数のページで同じフォントを描画する場合、参照するフォントファイルを共通化している。本実施形態におけるアプリケーションでは、エンベットされたフォントを描画する際、図２に示すようなフォント情報からフォントファイルを作成し、このフォントファイルをＯＳに登録後に描画を行う。一方、Ｗｉｎｄｏｕｗｓ（Ｒ）は多くのＯＳの種類を持っているが、各ＯＳによって登録できるフォント数の上限が異なる。このため、ＯＳに登録できるフォントの上限を管理し、また、フォントファイルの重複作成、無駄なＯＳへのフォント登録を回避し、描画速度を向上させるためにフォント管理テーブルを作成する。
【００１８】
図３は、「各フォントが使用されているページ」と「ＯＳ登録するファイル名称」、「ＯＳに登録するフォント名称」との関係を示した図である。
各ＯＳでは、最大Ｎ個（プログラム作成時に変更可能）のフォントを同時に登録することが可能である。例えば、テーブル番号１のフォントは１ページ目でのみ使用され、ＯＳに登録するフォントファイル名称は「NewDTXDEF＋Century１１２５０４０１００.ttf」、ＯＳに登録するフォント名称は「NewDTXDEF＋Century１１２５０４０１００」のようになる。
【００１９】
ここで、１ページを描画し、続いて２ページを描画する場合を考える。
Page１では８個のフォントファイルを作成し、８種類のフォントを描画する。次に２ページ目を描画する場合には１１個のフォントファイルが必要であるが、図３の場合には１ページ目で作成されていない６個のフォントファイルを作成すればよく、５個分のファイル作成時間を省くことができる。
【００２０】
図４は、ＯＳに登録するファイルが１の場合のフォント管理テーブルを示した図である。また、図５は、ＯＳに登録するファイルが１の場合のフォントファイル管理テーブルを示した図である。
図４に示したように、フォント管理テーブルは、図５に示すフォンファイル管理テーブルへのポインター５０１と、作成済みフォントファイル数５０２と、登録済みのフォントファイル数５０３とを含み構成されている。
【００２１】
最初のページの最初のフォントを描画する場合、図４のフォント管理テーブルをまず参照し、続いて、フォントファイル管理テーブルへのポインタ５０１からフォントファイル管理テーブル（図５）を参照する。
【００２２】
図５のフォントファイル管理テーブルには、「ＩＷＰ内部のフォント名称」、「ＯＳに登録するフォントファイル名称」、「ＯＳに登録するフォント名称」の３つの項目がある。ＩＷＰファイルにエンベットされたフォントは、ＩＷＰファイル作成時に使用したオリジナルのフォントと異なるフォント名称がつけられている。これは、ＩＷＰファイルがページ毎に他のＩＷＰファイルと入れ替えなどの編集を行うことが可能であるが、エンベットフォントに関しては使用ページ毎に分割や結合ができないため、ページ編集の時に他のページで使用している同一のフォントと重複しない措置である。
【００２３】
また、本実施形態におけるアプリケーションは、同一のＰＣ内で複数起動されることがあり、その際同じＩＷＰファイルを描画することがある。この時、ＩＷＰファイルで使用されているフォントをそのままＯＳに登録すると、同じフォントを同時にＯＳに登録する。このような状況ではアプリケーションの不正処理やＯＳのクラッシュなどの問題を引き起こす可能性がある。このため、ＯＳに登録するフォント名称とＩＷＰファイル内のフォント名称とが変異するように変更している。新規にＯＳに登録するフォントについては、図５のフォントファイル管理テーブルに必ず登録する必要がある。
【００２４】
図６は、ＯＳに登録するファイルがＮ（最大値）の場合のフォント管理テーブルを示した図である。図７は、ＯＳに登録するファイルがＮ（最大値）の場合のフォントファイル管理テーブルを示した図である。このとき、図８に示すように、１ページあたり２０１種類のエンベットフォントを使用している場合、登録テーブルの最大値を超えるので２０１個目のフォントが描画できないことになる。
【００２５】
図９は、２０１個目のエンベットフォントの描画を実行するためのフォント管理テーブルを示した図である。図１０は、２０１個目のエンベットフォントの描画を実行するためのフォントファイル管理テーブルを示した図である。
図９に示したフォント管理テーブルの登録済みのフォントファイル数８０３がＮ（最大値）の場合、図１０のフォントファイル管理テーブルのＮ＋１番目（２０１番目）に新しいエンベットフォント情報を登録する。続いて、一番古いフォントについてＯＳへのフォント登録を解除し、図１０のフォントファイル管理テーブルのＯＳに登録するフォント名称を削除する。この時点では、登録済みのフォントファイル数は１９９となる。最後に、図１０のフォントファイル管理テーブルの２０１番目に登録したフォントをＯＳに登録し、ＯＳに登録するフォント名称にフォント名称を書き込む。
【００２６】
図１１は、ＩＷＰファイルの描画処理のフローチャートである。
本実施形態におけるソフトウエアは、上位アプリケーションにより指定されたＩＷＰファイルを描画するアプリケーションである。上位アプリケーションによりＩＷＰファイルの描画指示がされると当該アプリケーションが起動される。このフローチャートでは、全体の流れを記載し、各項目の細かな処理については図１２以降で説明する。
【００２７】
まず、図１１において、ステップＳ９０１では、指定されたＩＷＰファイルをオープンする。この時、オープンできない場合については別途エラー処理が必要であり、上位アプリケーションに対してエラーを返し、その際エラー種別を通知する。
【００２８】
ＩＷＰファイルがオープンできた場合、続いて、ステップＳ９０２では、ＩＷＰファイルが暗号化されているかどうかの判定を行う。このステップＳ９０２の処理について、図１９を用いて説明する。
【００２９】
まず、図１９において、ステップＳ１９０１では、ＩＷＰファイルのTrailerデータエリアからEncyipt文字列の取り出しを行う。続いて、ステップＳ１９０２では、「Encrypt」設定（暗号化）がされているかどうか判定する。この判定の結果、「Encrypt」設定がされていると判定された場合には、ステップＳ１９０３に進む。一方、ステップＳ１９０２での判定の結果、「Encrypt」設定がされていないと判定された場合には、当該処理を終了し、そのまま次のページ描画処理に進む。
【００３０】
ここで、ＩＷＰファイルには、ファイルオープンの許可を設定するためにユーザーパスワード「Ｕ」を予め設定できる。この「Ｕ」が設定されている場合は、ＩＷＰファイルに格納されているユーザーパスワードと同等なパスワードを作成し、復号化を行う必要がある。一方、設定されていない場合は、予め指定された文字列により暗号化キーを作成し、この暗号キーを使ってＩＷＰファイルの復号化処理を行うことができる。
【００３１】
続いて、ステップＳ１９０３では、パスワード「Ｕ」が設定されているかどうか判定する。この判定の結果、パスワード「Ｕ」が設定されている場合には、ステップＳ１９０４に進んで、当該パスワードから文字列（ＲＣ４，ＭＤ５）を使って暗号化キーを作成する。この際、上位アプリケーションが指定したパスワードが３２バイトより短い場合、前述した文字列の先頭から不足バイト分だけパスワードに追加する。その後、ステップＳ１９０５に進む。一方、ステップＳ１９０２の判定の結果、パスワード「Ｕ」が設定されていない場合には、ステップＳ１９１０に進んで、予め決められた文字列を使って暗号化キーを作成する。その後、ステップＳ１９０５に進む。
【００３２】
続いて、ステップＳ１９０５では、ＩＷＰファイル内に設定された「Ｕ」をＲＣ４によって復号化する（１９０５）。続いて、ステップＳ１９０６では、ＩＷＰから取り出して復号化したパスワードと、前述した予め決められた文字列とを比較する。
【００３３】
続いて、ステップＳ１９０７では、ステップＳ１９０６での比較において、ＩＷＰから取り出して復号化したパスワードと、前述した予め決められた文字列とが一致するか否かを判定する。この判定の結果、ＩＷＰから取り出して復号化したパスワードと、前述した予め決められた文字列とが一致すると判定された場合には、正しいパスワードが設定されたと判断してステップＳ１９０９に進んで、文書全体の文字列について、上述の様にＭＤ５，ＲＣ４を用いて復号化を行う。一方、ステップＳ１９０７での判定の結果、ＩＷＰから取り出して復号化したパスワードと、前述した予め決められた文字列とが不一致であると判定された場合には、ステップＳ１９０９に進んで、上位アプリケションに対してその旨を通知する処理を行うためにファイルのオープンエラーと、エラーコードを通知する。
【００３４】
以上の処理により、図１１のステップＳ９０２の処理が終了する。
続いて、図１１のステップＳ９０３では、フォント管理テーブルの初期設定を行う。ここで、フォント管理テーブルの最大値の決定については、図１５を用いて別途説明する。
【００３５】
続いて、ステップＳ９０４では、フォントファイル管理テーブルの初期設定を行う。続いて、ステップＳ９０５では、１ページ目の描画処理を行う。このステップＳ９０５の処理は、図２１の処理で行われる。
【００３６】
ＩＷＰファイルには、フォント，イメージ，パスなどの描画処理がある。これらは、図２１で示すように、ステップＳ２１０２，ステップＳ２１０３，ステップＳ２１０４の順で行われる。また、ステップＳ２１０１では、暗号化されていて、かつ印刷が不許可の場合、画面解像度で印刷するかどうかを選択することができる。
【００３７】
次に、図２１のステップＳ２１０１で暗号化されていた場合の印刷処理について、図２０を用いて説明する。
まず、ステップＳ２００２では、図１９のステップＳ１９０２と同様に、ＩＷＰファイルが「Encrypt」設定（暗号化）されているかどうかを判定する。この判定の結果、「Encrypt」設定がされていると判定された場合には、ステップＳ２００３に進む。一方、ステップＳ２００２での判定の結果、「Encrypt」設定がされていないと判定された場合には、当該処理を終了し、そのまま次のページ描画処理に進む。
【００３８】
ここで、ＩＷＰファイルには、ファイル印刷、編集などの許可を設定するためにオーナーパスワード「Ｏ」を予め設定できる。この「Ｏ」が設定されている場合は、IＷＰファイルに格納されているオーナーパスワードの復号化を行う必要がある。
【００３９】
続いて、ステップＳ２００３では、パスワード「Ｏ」がＩＷＰに設定されているかどうか判定する。この判定の結果、パスワード「Ｏ」が設定されている場合には、ステップＳ２００４に進んで、予め上位アプリケーションによってパスワードが指定されているか、または、「Ｕ」ユーザーパスワードが指定されていれば、これを使って暗号化キーの作成を行う。この際、パスワードが３２バイトより短い場合、前記の文字列の先頭から不足バイト分だけパスワードに追加する。上位アプリケーションが指定したオーナーパスワードがある場合、この文字列を使用してステップＳ２００４の暗号化キーの作成を行う。一方、ＩＷＰに「Ｏ」が設定されていないと判定された場合には、通常の印刷処理を行う。
【００４０】
続いて、ステップＳ２００５では、ＩＷＰファイル内に設定されたオーナーパスワード「Ｏ」をＲＣ４によって復号化する。続いて、ステップＳ２００６では、ＩＷＰから取り出して復号化したパスワードと、前述した予め決められた文字列を比較する。
【００４１】
続いて、ステップＳ２００７では、ステップＳ２００６の比較の結果、パスワードが一致したかそうかを判定する。この判定の結果、パスワードが一致したと判定された場合には、正しいパスワードが設定されたと判断し、通常の印刷処理を行う。これは、オーナーパスワード所有者は全ての動作が許可されるからである。一方、ステップＳ２００７での判定の結果、パスワードが不一致である場合には、ステップＳ２００８に進む。
【００４２】
続いて、ステップＳ２００８では、ＩＷＰで印刷禁止設定の指定がされているかどうか判定する。この判定の結果、印刷禁止設定の指定がされていないと判定された場合には、通常の印刷処理を行う。一方、ステップＳ２００８での判定の結果、印刷禁止設定が指定されていると判定された場合には、ステップＳ２００９に進む。
【００４３】
続いて、ステップＳ２００９では、ユーザーによってダウンサンプリングでの印刷が指定されているかどうか判定する。この判定の結果、ダウンサンプリング設定されていると判定された場合には、ステップＳ２０１０に進む。一方、ステップＳ２００９での判定の結果、ダウンサンプリング設定されていないと判定された場合には、ステップＳ２０１１に進み、上位アプリケションに対してファイルのオープンエラーと、エラーコードを通知する。
【００４４】
続いて、ステップＳ２０１０では、印刷する全てのデータの解像度を画面解像度（ウィンドウズ（Ｒ）では９６dpi）に設定する処理を行う。この方法は各システムによって異なるが、画面用に取得したＤＣ（デバイスコンテキスト）に描画を行って解像度を落す方法が一般的である。この処理が終了すると、図２１のＳ２１０２以降の描画処理が行われる。
【００４５】
以上の処理により、図１１のステップＳ９０５の１ページ目の描画処理が終了する。
同様に、ステップＳ９０５では、２ページ目の描画処理を行い、続いて、ステップＳ９０６では、３ページ目の描画処理を行い、続いて、ステップＳ９０７では、最後のＸページ目の描画処理を行う。各ページの描画処理については、図１２以降で説明する。
【００４６】
本ソフトウエアはエンベットフォンとの描画のためにＩＷＰファイルから取り出したフォントをＯＳに登録するが、描画処理が終了した時点でこの登録を削除する必要がある（ステップＳ９０９）。この際、面付けで使用するためにＯＳに登録されたフォントについてもすべて登録削除する。
【００４７】
フォントのＯＳへの登録を削除完了した後、続いて、ステップＳ９１０では、Font管理テーブルの初期化を行う。続いて、ステップＳ９１１では、一時作業エリアに作成した面付けに使用した全てのフォントファイルを削除する。続いて、ステップＳ９１２では、フォントファイル管理テーブルの初期化を行う。続いて、ステップＳ９１３では、ＩＷＰファイルをクローズする。
【００４８】
次に、図１２の「ページ毎の描画処理のフローチャート」を用いて、各ページの処理の流れを説明する。
ページ描画処理が起動されると、まず、ステップＳ１００１では、指定されたページをメモリーにロードする。続いて、ステップＳ１００２では、メモリーにロードされたＩＷＰファイルを描画するために、ＩＷＰファイル仕様に従いオペレーターの解析を行う。続いて、ステップＳ１００４では、１ページ分のフォントファイルを作成する。続いて、ステップＳ１００５では、指定されたページで使用するエンベットフォントを確認し、作成したフォントファイルを管理テーブルに登録する。この時、図３で説明したように、既に作成済みのフォントについては再作成は行わない。
【００４９】
続いて、ステップＳ１００６では、１ページ分の描画が終了したかどうかを判定する。この判定の結果、１ページ分の描画が終了したと判定された場合には、ステップＳ１０１６に進む。一方、ステップＳ１００６での判定の結果、１ページ分の描画が終了していないと判定された場合には、ステップＳ１００７に進む。
【００５０】
ここで、次の処理を説明する前に、面付け印刷について説明しておく。
図１７では、アプリケーションから面付け印刷を行う場合の印刷例を示している。本実施形態において、上位アプリケーションでは製本機能を充実するため、複数のページを１ページに印刷するような処理をプリンタドライバーに任せずに独自に処理を行う。具体的には、上位アプリケーションで印刷のための描画データを貯えるデバイスコンテキストを作成し、このデバイスコンテキストへの描画指示を描画アプリケーションに対して行う。
【００５１】
この時、４面付けであれば、１ページづつ４回の描画指示を行う。描画アプリケーションは指示された場所に指示された大きさ（実際には縮小される）で描画を行うことにより、最終的にデバイスコンテキスト上に４面付けのデータを作成することができる。この時、上位アプリケーションが面付け印刷の全ての印刷を終了し、ＯＳの登録済みのフォントの登録削除を要求されている場合、専用のＡＰＩを通して上位アプリケーションからの削除指示が描画アプリケーションに届く。
【００５２】
図１２において、ステップＳ１０１６では、フォントの削除指示があるかどうかを判定する。この判定の結果、フォントの削除指示があると判定された場合には、ステップＳ１０１７に進んで、描画アプリケーションがＯＳに登録した全てのフォントをＯＳから登録を解除し、その後、終了処理を行う。一方、ステップＳ１０１６の判定の結果、フォントの削除指示がないと判定された場合には、そのまま終了処理を行う。このケースでは、上位アプリケーションは面付け印刷の途中であり、ＯＳに登録したフォントを削除しない。
アプリケーションが一ページのみの印刷を行う場合、一ページ終了時に必ずフォントの削除指示を描画アプリケーションに対して行う予め仕様を決定しておく必要がある。
【００５３】
また、ステップＳ１００７では、テキスト描画コマンドを取り出す。続いて、ステップＳ１００８では、取り出したテキスト描画コマンドについてエンベットフォントかどうか判定する。この判定の結果、エンベットフォントであると判定された場合には、ステップＳ１００９に進む。一方、Ｓ１００８での判定の結果、エンベットフォントでないと判定された場合には、ステップＳ１０１３に進む。
【００５４】
ステップ１００９では、フォントがTrueTypeであるかどうかの判定を行う。この判定の結果、フォントがTrueTypeであると判定された場合には、ステップＳ１０１５に進む。一方、ステップ１００９での判定の結果、フォントがTrueTypeでないと判定された場合には、ステップＳ１０１０に進む。
【００５５】
なお、ユーザーによっては、ＯＳにより代替えする／しない条件が異なることによって、描画されるType１フォントのフォントフェースが異なってしまうことを避けるため、Type１のエンベットフォントを固定的にTrueTypeに代替え設定する場合がある。この際、代替えを行うフォントを一意的に指定するためのフォント代替えテーブルにより代替えフォントを予め指定することができる。
【００５６】
続いて、ステップＳ１０１０では、このType１の代替え指定があるかどうかを判定する。この判定の結果、Type１の代替え指定があると判定された場合には、ステップＳ１０１３に進む。一方、ステップ１０１０での判定の結果、Type１の代替え指定がないと判定された場合には、ステップＳ１０１１に進む。
【００５７】
続いて、ステップＳ１０１１では、ＯＳがType１フォントを描画可能かどうか判定する。この判定の結果、ＯＳがType１フォントを描画可能であると判定された場合には、ステップＳ１０１５に進む。一方、ステップ１０１１での判定の結果、ＯＳがType１フォントを描画可能でないと判定された場合には、ステップＳ１０１２に進む。
【００５８】
続いて、ステップＳ１０１２では、フォントのラスタライザを使用するかどうかを判定する。この判定の結果、フォントのラスタライザを使用すると判定された場合には、ステップ１０１４に進む。一方、ステップＳ１０１２での判定の結果、フォントのラスタライザを使用しないと判定された場合には、ステップＳ１０１３に進む。
【００５９】
続いて、ステップＳ１０１３では、通常のフォント描画処理を起動し、終了後にステップ１００６に戻る。
【００６０】
また、ステップＳ１０１４では、フォントのラスタライザ処理を起動し、終了後にステップ１００６に戻る。
【００６１】
また、ステップＳ１０１５では、エンベットフォントの描画処理を起動し、終了後にステップ１００６に戻る。
【００６２】
ステップＳ１０１４のフォントラスタライズ処理について、以下に説明する。
フォントのラスタライズ処理を行う場合、描画するフォントの解像度、フォントのサイズ等、フォントの描画のために必要な情報を収集する。フォントの描画のために必要な様々な情報のあるヘッダ領域と、フォントの描画情報のあるグリフ領域、描画解像度にあわせて線の太さや位置を調整するHint情報がある。Fontのラスタライズのためには、これらの情報を使用して、オリジナルのフォントを忠実にBitmap化しなければならない。このようにして作成されたBitmap（フォント）を原稿の指定された位置に描画を行うが、この際、背景にすでに色があった場合、背景色とフォントの色がスムーズにつながるように特に境界領域では表示色を計算する必要がある。
【００６３】
ステップＳ１０１５のエンベットフォンと描画処理について、図１３を用いて説明する。
まず、エンベットフォントの描画処理が起動されると、ステップＳ１１０１では、TEXTオペレータを解析する。続いて、ステップＳ１１０２では、描画するフォント名を収集する。複数のページを描画する場合、前に描画したページで同一のフォントを描画していた場合、このフォントがＯＳに登録されている場合がある。このような場合はＯＳへのフォント登録は行ってはいけない。
【００６４】
続いて、ステップＳ１１０３では、フォントが既にＯＳに登録されているかどうかを判定する。この判定の結果、フォントが既にＯＳに登録されていると判定された場合には、ステップＳ１１０４に進む。一方、ステップＳ１１０３での判定の結果、フォントがＯＳに登録されていないと判定された場合には、ステップＳ１１０５に進む。
【００６５】
続いて、ステップＳ１１０５では、ＯＳに登録されているフォントの数がＮ（最大値）個以下であるかどうかを判定する。この判定の結果、ＯＳに登録されているフォントの数がＮ（最大値）個以下であると判定された場合には、ステップＳ１１０７に進む。一方、ステップＳ１１０５での判定の結果、ＯＳに登録されているフォントの数がＮ（最大値）個を超えると判定された場合には、ステップＳ１１０６に進む。
【００６６】
続いて、ステップＳ１１０７では、一番古いＯＳに登録したフォントをＯＳの登録から削除し、ステップＳ１１０６に進む。続いて、ステップＳ１１０６では、エンベットフォントをＯＳに登録し、ステップＳ１１０４に進む。
【００６７】
続いて、ステップＳ１１０７では、フォントの描画処理を行い、その後、この処理を終了する。
【００６８】
次に、図１２のステップＳ１０１３のフォント描画処理について、図１４で説明する。
図１２でフォントの描画処理が起動されると、まず、ステップＳ１２０１では、ステップＳ１００２で解析されたＩＷＰオペレータから、TEXT描画オペレータ情報を収集し解析する。続いて、ステップＳ１２０２では、描画するフォント名を収集する。
【００６９】
続いて、ステップＳ１２０３では、ステップＳ１２０１、ステップＳ１２０２の情報から、描画を行うフォントがType１フォントであるかどうかを判定する。この判定の結果、Type１フォントであると判定された場合には、ステップＳ１２０５に進む。
【００７０】
続いて、ステップＳ１２０５では、Type１フォントがＯＳに登録されているかどうかを判定する。この判定の結果、Type１フォントがＯＳに登録されていると判定された場合には、ステップＳ１２０６に進んで、ＯＳのTEXT描画コマンドを作成して代替えフォントを描画し、ステップＳ１２０４に進む。
【００７１】
ここで、ステップＳ１２０５において、ステップＳ１０１２で説明した、予め指定されたフォントの代替え指定テーブル（図１６のフォントの代替え指定テーブル）があり、かつ、代替えするフォントが設定されている場合にステップＳ１２０４に進み、フォント代替え指定テーブルが指定されていなければ、ステップ１２０４に進むことになる。
【００７２】
続いて、ステップＳ１２０４では、ステップＳ１２０６による描画フォントが指定されていれば、このフォントで描画し、指定されていない場合、Type１フォント名を使ってＯＳへフォントの描画を行う。
【００７３】
図１５は、フォント管理テーブルの初期設定の処理のフローチャートである。
フォント管理テーブルの初期設定が起動されると、まず、ステップＳ１３０１では、外部から本ソフトウエアが起動された時、フォント管理テーブルの上限値を収集する。
【００７４】
続いて、ステップＳ１３０２では、外部設定値があるかどうかを判定する。この判定の結果、外部設定値があると判定された場合には、ステップＳ１３０３に進んで、当該外部設定値を「フォント管理テーブルの上限値」として設定する。その後、処理を終了する。一方、ステップＳ１３０２の判定の結果、外部設定値が無いと判定された場合には、ステップＳ１３０４に進んで、現在のＯＳに登録されているフォントの登録数を調査する。
【００７５】
続いて、ステップＳ１３０５では、ステップＳ１３０４で調査した登録数が予め設定されていた閾値（本ソフトウエアを開発する際に固定的に決めた上限値で、本クレームではページ印刷時までＯＳへのフォントの登録を保持するため閾値を「６５５３５」とする。これにより、実際の使用状況では（１３０６）の処理を行うケースが無くなる。）よりも大きいかどうかを判定する。この判定の結果、ステップＳ１３０４で調査した登録数が予め設定されていた閾値よりも大きいと判定された場合には、ステップＳ１３０７に進んで、フォント管理テーブルの上限値を「６５５３５」とし、その後、処理を終了する。一方、ステップＳ１３０５での判定の結果、ステップＳ１３０４で調査した登録数が予め設定されていた閾値以下であると判定された場合には、ステップＳ１３０６に進んで、フォント管理テーブルの上限値を「２」とし、その後、処理を終了する。
【００７６】
また、これらのフォント管理テーブルの上限値の最大値の「６５５３５」、「２」は本ソフトウエアを開発する際に変更することができる。
【図面の簡単な説明】
【００７７】
【図１】複数ページを描画する際に複数のフォントを使用した例を示した図である。
【図２】ＩＷＰファイルフォーマットにおけるページデータとエンベットフォンとデータの格納例を示した図である。
【図３】複数ページで多数のエンベットフォントを使用した場合のフォント作成状況を説明した図である。
【図４】フォント管理テーブルへの最初のエンベットフォントの登録を説明した図である。
【図５】フォント管理テーブルへの最初のエンベットフォントの登録を説明した図である。
【図６】フォント管理テーブルが最大値まで登録された場合を説明した図である。
【図７】フォント管理テーブルが最大値まで登録された場合を説明した図である。
【図８】1ページにＮ＋１個のフォント描画がある場合の例を示した図である。
【図９】フォント管理テーブルにＮ＋１個（最大値＋１）目のフォントを登録した場合を説明した図である。
【図１０】フォント管理テーブルにＮ＋１個（最大値＋１）目のフォントを登録した場合を説明した図である。
【図１１】ＩＷＰファイルの描画を説明したフローチャートである。
【図１２】ページ毎の描画手順を説明したフローチャートである。
【図１３】エンベットフォントの描画手順を説明したフローチャートである。
【図１４】通常のフォントの描画手順を説明したフローチャートである。
【図１５】フォントファイル管理テーブル初期設定のフローチャートである。
【図１６】フォントの代替え指定テーブルを示した図である。
【図１７】アプリケーションから４面付け印刷を指定する場合の描画方法を示す図である。
【図１８】ＩＷＰファイルの暗号化データの構成を示す図である。
【図１９】ＩＷＰファイルが暗号化されていた場合のファイルオープン処理を示したフローチャートである。
【図２０】ＩＷＰファイルが暗号化されていた場合の印刷解像度変換処理を示したフローチャートである。
【図２１】ＩＷＰファイルの描画処理を示したフローチャートである。
【符号の説明】
【００７８】
１００，１０１，１０２  テキスト描画
２０１  ファイルヘッダの先頭行のデータ
２０２  Font００１のデータ
２０３  Font００２のデータ
２０４  Font００３のデータ
２０６  １ページの描画データ
２０７  ２ページの描画データ
２０８  ３ページの描画データ
【図１】
2005242802.tif 000003
【図２】
2005242802.tif 000004
【図３】
2005242802.tif 000005
【図４】
2005242802.tif 000006
【図５】
2005242802.tif 000007
【図６】
2005242802.tif 000008
【図７】
2005242802.tif 000009
【図８】
2005242802.tif 000010
【図９】
2005242802.tif 000011
【図１０】
2005242802.tif 000012
【図１１】
2005242802.tif 000013
【図１２】
2005242802.tif 000014
【図１３】
2005242802.tif 000015
【図１４】
2005242802.tif 000016
【図１５】
2005242802.tif 000017
【図１６】
2005242802.tif 000018
【図１７】
2005242802.tif 000019
【図１８】
2005242802.tif 000020
【図１９】
2005242802.tif 000021
【図２０】
2005242802.tif 000022
【図２１】
2005242802.tif 000023