(57)【要約】【課題】  記憶されている電子文書に対して行う編集や操作を、目的に合わせて適応的に制限できるようにする。【解決手段】  目的に応じた適切なフィルタ３０１〜３０５をＭＦＰ１００毎に設定しておくようにした。したがって、使用する編集アプリケーションプログラム１２１〜１２４の機能に影響されることなく、編集アプリケーションプログラム１２１〜１２４の機能を、ＭＦＰ毎の目的に合わせて、制限することができる。また、一台のＭＦＰに、複数のフィルタをインストールしておき、ユーザの目的に合わせてどのフィルタを使用するかを設定しておくようにした。したがって、編集アプリケーションプログラム１２１〜１２４の機能に影響されることなく、編集アプリケーションプログラム１２１〜１２４の機能を、ユーザ毎に制限することができる。【選択図】  図３
2008201093.tif 000002
【特許請求の範囲】
【請求項１】
電子文書を記憶する電子文書記憶手段と、
前記電子文書を編集するためのアプリケーションプログラムであって、アプリケーションプラットフォーム上で動作するアプリケーションプログラムを記憶するアプリケーションプログラム記憶手段と、
前記アプリケーションプログラムによって実行される機能を制限するためのフィルタプログラムを記憶するフィルタプログラム記憶手段と、
前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であるかを判定する機能判定手段と、
前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であることが前記判定手段により判定されると、前記フィルタプログラムに基づいて、その機能を制限する機能制限手段とを有することを特徴とする電子文書処理装置。
【請求項２】
前記アプリケーションプログラムを利用するユーザの認証を行うユーザ認証手段と、
前記ユーザ認証手段により認証されたユーザに対応するフィルタプログラムを、前記フィルタプログラム記憶手段により記憶されている複数種類のフィルタプログラムの中から選択するフィルタプログラム選択手段とを有し、
前記機能判定手段は、前記アプリケーションプログラムで実行される機能が、前記フィルタプログラム選択手段により選択されたフィルタプログラムで制限される機能であるか否かを判定することを特徴とする請求項１に記載の電子文書処理装置。
【請求項３】
前記フィルタプログラム記憶手段は、記憶しているフィルタプログラムの削除と、記憶するフィルタプログラムの追加と自在に行うことを特徴とする請求項１又は２に記載の電子文書処理装置。
【請求項４】
前記電子文書の編集及び操作を行う編集操作手段を提供する編集操作機能ライブラリと、
前記アプリケーションプログラムからの呼び出しに応じて、前記編集操作手段を前記アプリケーションプログラムに対して公開する編集操作機能インタフェースと、
前記フィルタプログラムに従って、前記編集操作手段を呼び出すフィルタプラグインとを有し、
前記フィルタプログラムは、前記アプリケーションから呼び出し指示があった前記編集操作手段を変更するためのルールを記憶したマッピングテーブルを有し、
前記フィルタプラグインは、前記マッピングテーブルを用いて、前記アプリケーションから呼び出し指示があった前記編集操作手段を変更することにより、前記機能判定手段と前記機能制限手段とを実行することを特徴とする請求項１〜３の何れか１項に記載の電子文書処理装置。
【請求項５】
前記フィルタプログラムは、前記マッピングテーブルを複数有し、
前記フィルタプラグインは、アプリケーションプログラムから呼び出しのあった編集操作手段に応じて、マッピングテーブルを別のマッピングテーブルに切り換えることを特徴とする請求項４に記載の電子文書処理装置。
【請求項６】
前記電子文書の編集及び操作を行う編集操作手段と、
前記アプリケーションプログラムによる前記編集操作手段へのアクセスを制御するアクセス制御手段とを有し、
前記アクセス制御手段が、前記機能判定手段と前記機能制限手段とを有することを特徴とする請求項１〜３の何れか１項に記載の電子文書処理装置。
【請求項７】
前記編集操作手段が有する機能のうち、前記フィルタプログラムにより制限される機能を記憶したテーブルを記憶するテーブル記憶手段を有し、
前記アクセス制御手段は、前記アプリケーションプログラムによる前記編集操作手段へのアクセスを、前記テーブル記憶手段により記憶されたテーブルを用いて制御することを特徴とする請求項６に記載の電子文書処理装置。
【請求項８】
前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であるかを前記アプリケーションプラットフォームにおいて判定し、前記アプリケーションプラットフォームの指示により、前記フィルタプログラムの適用を行うことを特徴とする請求項１〜７の何れか１項に記載の電子文書処理装置。
【請求項９】
電子文書を記憶媒体に記憶する電子文書記憶ステップと、
前記電子文書を編集するためのアプリケーションプログラムであって、アプリケーションプラットフォーム上で動作するアプリケーションプログラムを記憶媒体に記憶するアプリケーションプログラム記憶ステップと、
前記アプリケーションプログラムによって実行される機能を制限するためのフィルタプログラムを記憶媒体に記憶するフィルタプログラム記憶ステップと、
前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であるかを機能判定手段により判定する機能判定ステップと、
前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であることを示す信号が、前記機能判定手段から入力されると、前記フィルタプログラムに基づいて、その機能を制限する機能制限ステップとを有することを特徴とする電子文書処理方法。
【請求項１０】
前記アプリケーションプログラムを利用するユーザの認証を行うユーザ認証ステップと、
前記ユーザ認証ステップにより認証されたユーザに対応するフィルタプログラムを、前記フィルタプログラム記憶ステップにより記憶されている複数種類のフィルタプログラムの中から選択するフィルタプログラム選択ステップとを有し、
前記機能判定ステップは、前記アプリケーションプログラムで実行される機能が、前記フィルタプログラム選択ステップにより選択されたフィルタプログラムで制限される機能であるか否かを判定することを特徴とする請求項９に記載の電子文書処理方法。
【請求項１１】
前記フィルタプログラム記憶ステップは、記憶しているフィルタプログラムの削除と、記憶するフィルタプログラムの追加と自在に行うことを特徴とする請求項９又は１０に記載の電子文書処理方法。
【請求項１２】
前記電子文書の編集及び操作を行う編集操作手段を、編集操作機能ライブラリを用いて提供する提供ステップと、
前記アプリケーションプログラムからの呼び出しに応じて、前記編集操作手段を前記アプリケーションプログラムに対して公開することを、編集操作機能インタフェースを用いて行う公開ステップと、
前記フィルタプログラムに従って、前記編集操作手段を呼び出すことを、フィルタプラグインにより行う呼び出しステップとを有し、
前記フィルタプログラムは、前記アプリケーションから呼び出し指示があった前記編集操作手段を変更するためのルールを記憶したマッピングテーブルを有し、
前記フィルタプラグインは、前記マッピングテーブルを用いて、前記アプリケーションから呼び出し指示があった前記編集操作手段を変更することにより、前記機能判定ステップと前記機能制限ステップとを実行することを特徴とする請求項９〜１１の何れか１項に記載の電子文書処理方法。
【請求項１３】
前記フィルタプログラムは、前記マッピングテーブルを複数有し、
前記フィルタプラグインは、アプリケーションプログラムから呼び出しのあった編集操作手段に応じて、マッピングテーブルを別のマッピングテーブルに切り換えることを特徴とする請求項１２に記載の電子文書処理方法。
【請求項１４】
前記アプリケーションプログラムによる、前記電子文書の編集及び操作を行う編集操作手段へのアクセスを制御するアクセス制御ステップを有し、
前記アクセス制御ステップが、前記機能判定ステップと前記機能制限ステップとを行うことを特徴とする請求項９〜１１の何れか１項に記載の電子文書処理方法。
【請求項１５】
前記編集操作手段が有する機能のうち、前記フィルタプログラムにより制限される機能を記憶したテーブルを記憶媒体に記憶するテーブル記憶ステップを有し、
前記アクセス制御ステップは、前記アプリケーションプログラムによる前記編集操作手段へのアクセスを、前記テーブル記憶ステップにより記憶されたテーブルを用いて制御することを特徴とする請求項１４に記載の電子文書処理方法。
【請求項１６】
前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であるかを前記アプリケーションプラットフォームにおいて判定し、前記アプリケーションプラットフォームの指示により、前記フィルタプログラムの適用を行うことを特徴とする請求項９〜１５の何れか１項に記載の電子文書処理方法。
【請求項１７】
請求項９〜１６の何れか１項に記載の電子文書処理方法の各ステップをコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子文書処理装置、電子文書処理方法、及びコンピュータプログラムに関し、特に、記憶されている電子文書を処理するために用いて好適なものである。
【背景技術】
【０００２】
近年、マルチファンクションプリンタ（ＭＦＰ）と呼ばれる複合機では、コピーや、ページ記述言語（ＰＤＬ）で記述された印刷データのプリントを行うだけでなく、電子文書として文書を内部に保存できるものがある。電子文書として保存される文書には、例えば、スキャナで読み込まれた文書や、ホストコンピュータからＰＤＬデータで送信された文書等がある。更に、ＭＦＰには、ページ記述言語を解析してページデータを画像部品に分離し、電子文書を画像部品単位で保存することで、後から画像部品単位で電子文書を編集して再利用することが可能なものもある（特許文献１を参照）。
【０００３】
また、ＭＦＰ内の機能プログラムをユーザがダウンロードして入れ替えられるものもある。ＭＦＰの機能を使用するプログラムを開発するためのソフトウェアデベロップメントキット（ＳＤＫ）が提供されており、メーカ、販売会社及びサードパーティは、このＳＤＫを用いて独自のアプリケーションプログラムを作成できる。ユーザはこれらのアプリケーションプログラムを購入し、ＭＦＰにダウンロードすることで、元のＭＦＰでは使えなかった機能を新たに使えたり使い勝手を向上させたりすることができる（特許文献２を参照）
【０００４】
これらの技術を用いることで、ＭＦＰ内に保存した電子文書を編集及び操作するアプリケーションプログラムを作成することができる。このような機能を持つＭＦＰを使用するユーザは、自分の好みの編集アプリケーションプログラムを購入し、購入した編集アプリケーションプログラムをＭＦＰにダウンロードして使用することになる。
【０００５】
一方、文書や画像の中には、編集して自由に使用してよいものと、著作権の問題から自由に使用すべきでないものとが存在する。したがって、自由に使用すべきでない文書や画像に対しては、編集を行えないように制限をかける必要がある。そこで、ユーザが、画像単位で一つ一つを確認しなくても、編集を行う際に自動的に編集操作の機能が制限され、ユーザが不用意に文書や画像を編集してしまうことを防止する技術が知られている。更に、編集に対する制限のレベルを示す編集機能レベル情報を、各画像に付与することで、より詳細な制御を行う技術も知られている（特許文献３を参照）。
【０００６】
【特許文献１】特開平１０−２０８０２０号公報
【特許文献２】特開２００３−２５６２１６号公報
【特許文献３】特開２００１−１１７６８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
背景技術に挙げた「電子文書を部品単位で編集できるようにした技術」と「機能プログラムをダウンロードして入れ替えられるようにした技術」を用いたＭＦＰでは、ユーザは、自分の好みの編集アプリケーションプログラムを購入して使用することが可能である。そうすると、それまでにインストールされていた編集アプリケーションプログラムの機能によって制限され、自由に編集できなかったことが、新たにインストールされた編集アプリケーションプログラムによって、自由に編集できるようになってしまう可能性がある。もともと自由な環境で自由に編集する目的で使用されている機器であればこのような問題はない。これに対し、同じ部署内で使用されているあるＭＦＰ内の文書については、一部だけを編集して再利用させたいが、別のＭＦＰ内の文書については、電子記録として保存しているので改竄されないようにしておきたい場合には問題がある。
【０００８】
そこで、背景技術に挙げた「画像単位で編集操作を制限する技術」により、文書夫々若しくは文書内部の部品夫々に、編集機能レベル情報を付与することで、編集制限をかけることが可能ではある。しかしながら、既に大量の文書をＭＦＰ内に保存してある場合には、ＭＦＰ内にある全ての文書若しくは全ての部品に編集制限レベル情報を付与することになり、かなりの作業が必要となってしまう。
更に一つのＭＦＰで、使用するユーザによって、編集できる操作や編集内容の制限を変えることが困難であるといった問題がある。
【０００９】
本発明は、このような問題点に鑑みてなされたものであり、記憶されている電子文書に対して行う編集や操作を、目的に合わせて適応的に制限できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の電子文書処理装置は、電子文書を記憶する電子文書記憶手段と、前記電子文書を編集するためのアプリケーションプログラムであって、アプリケーションプラットフォーム上で動作するアプリケーションプログラムを記憶するアプリケーションプログラム記憶手段と、前記アプリケーションプログラムによって実行される機能を制限するためのフィルタプログラムを記憶するフィルタプログラム記憶手段と、前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であるかを判定する機能判定手段と、前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であることが前記判定手段により判定されると、前記フィルタプログラムに基づいて、その機能を制限する機能制限手段とを有することを特徴とする。
【００１１】
本発明の電子文書処理方法は、電子文書を記憶媒体に記憶する電子文書記憶ステップと、前記電子文書を編集するためのアプリケーションプログラムであって、アプリケーションプラットフォーム上で動作するアプリケーションプログラムを記憶媒体に記憶するアプリケーションプログラム記憶ステップと、前記アプリケーションプログラムによって実行される機能を制限するためのフィルタプログラムを記憶媒体に記憶するフィルタプログラム記憶ステップと、前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であるかを機能判定手段により判定する機能判定ステップと、前記アプリケーションプログラムで実行される機能が、前記フィルタプログラムで制限される機能であることを示す信号が、前記機能判定手段から入力されると、前記フィルタプログラムに基づいて、その機能を制限する機能制限ステップとを有することを特徴とする。
【００１２】
本発明のコンピュータプログラムは、前記電子文書処理方法の各ステップをコンピュータに実行することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、アプリケーションプラットフォーム上で動作するアプリケーションプログラムによって実行される機能を制限するためのフィルタプログラムを記憶させておく。そして、アプリケーションプログラムによって実行される機能が、フィルタプログラムで制限される機能である場合に、その機能を、前記フィルタプログラムに基づいて制限する。したがって、記憶されている電子文書に対して行う編集や操作を、目的に合わせて適応的に制限することができる。例えば、記憶されている電子文書に対して行う編集や操作を、機器単位で制限したり、ユーザ単位で制限したりすることが可能になる。
【発明を実施するための最良の形態】
【００１４】
（第１の実施形態）
次に、図面を参照しながら、本発明の第１の実施形態について説明する。
図１は、印刷システムの概略構成の一例を示す図である。
図１において、ユーザ１は、文書をＭＦＰ１００に保存させるユーザである。ユーザ２は、ＭＦＰ１００に保存されている電子文書１０００を編集するユーザである。紙ドキュメント１０は、ユーザ１によるユーザインターフェース１０１の操作に基づいて、ＭＦＰ１００が有するスキャナで読み込まれ、電子文書１０００としてＭＦＰ１００に保存される。また、ユーザ１によるユーザインターフェース１０１の操作に基づいて、ＭＦＰ１００が有するプリンタによって紙ドキュメント２０が印刷される。
【００１５】
ＰＣ（Personal Computer）５０１は、ネットワークを介してＭＦＰ１００と相互に接続され、ＰＤＬで記述された画像データをＭＦＰ１００に送信する。ＰＣ５０２は、ネットワークを介してＭＦＰ１００と相互に接続され、ＭＦＰ１００に保存されている電子文書１０００を操作する。ユーザ２は、ユーザインターフェース１０１若しくはＰＣ５０２を用いることによって、電子文書１０００を編集・操作することができる。
【００１６】
図２は、電子文書処理装置の一例であるＭＦＰ１００に内蔵されるコントローラにおけるハードウェアの概略構成の一例を示す図である。
図２において、コントローラ１０２は、ＭＦＰ１００全体を制御するためのものである。ネットワーク制御部４０１は、ネットワークを介して相互に接続されたＰＣ５０１、５０２等との通信を制御するためのものである。ＣＰＵ４０２は、ハードディスク（ＨＤＤ）４０３やＲＯＭ４０５に記憶されたプログラムを、ＲＡＭ４０４をワークエリアとして用いる等して実行して、コントローラ１０２を統括制御するためのものである。ＲＯＭ４０５及びハードディスク４０３は、プログラムやデータを記憶する。ＲＡＭ４０４は、ワークエリアとして機能したり、データの一時的な記憶領域として機能したりする。
【００１７】
Ｉ／Ｏ４０６は、ユーザインターフェース１０１を制御する。スキャナ制御部４０７は、スキャナとしての機能を実行するスキャナエンジン４２０の動作を制御する。プリンタ制御部４０８は、プリンタとしての機能を実行するプリンタエンジン４３０の動作を制御する。尚、コントローラ１０２内の各装置４０１〜４０８は、バス４１０を介して相互に接続されている。
【００１８】
図３は、ＭＦＰ１００に内蔵されるコントローラ１０２におけるソフトウェアの概略構成の一例を示す図である。尚、図３に示す各ブロック間で信号の送受信を行うことにより、以下に述べる各種の機能が実現される。
図３において、機器内のアプリケーションプログラム群１１０には、再印刷アプリケーションプログラム（再印刷）１１１と、外部からアプリケーションプログラムをダウンロードできるアプリケーションフレームワーク１２０とが含まれている。編集アプリケーションプログラム（アプリＡ〜Ｄ）１２１〜１２４は、夫々アプリケーションフレームワーク１２０上で動作する。本実施形態では、編集アプリケーションプログラム１２１〜１２４は、アプリケーションフレームワーク１２０上で動作する。また、本実施形態では、アプリケーションフレームワーク１２０を用いてアプリケーションプログラム記憶手段が実現される。
【００１９】
ネットワークモジュール１３０は、ネットワークを介して相互に接続されたＰＣ５０２等の機器との通信を司る。ユーザ認証モジュール１４０は、ユーザインターフェース１０１から入力した情報に基づいて、アプリケーションプログラム群１１０を使用するユーザを認証する。また、ユーザ認証モジュール１４０は、ＰＣ５０２からネットワークモジュール１３０を介して入力した情報に基づいて、コントローラ１０２の機能を使用するユーザを認証したりする。
【００２０】
文書管理モジュール１５０は、電子文書１０００を保存するためのものである。電子文書１０００には、複数の部品１００１〜１００５が含まれている。このように本実施形態では、例えば、文書管理モジュール１５０を用いて電子文書記憶手段が実現される。
プラグイン用フィルタ制御モジュール１６０は、アプリケーションプログラム群１１０、若しくはネットワークモジュール１３０が起動する際に、フィルタ３０１〜３０５の何れかをフィルタプラグイン２１０に接続（設定）する。対ユ―ザフィルタ情報モジュール１７０は、プラグイン用フィルタ制御モジュール１６０が、アプリケーションプログラム群１１０を使用するユーザに対して設定すべきフィルタを、フィルタ３０１〜３０５の中から決定するための情報を記憶する。
【００２１】
図３では、一般編集フィルタ３０１、操作履歴付き一般編集フィルタ３０２、原本性確保フィルタ（原本性確保フィルタＡ）３０３、原本性確保フィルタ（原本性確保フィルタＢ）３０４、及び部分編集フィルタ３０５の何れかが設定される。このように本実施形態では、複数種類のフィルタ３０１〜３０５がコントローラ１０２にインストールされており、コントローラ１０２は、フィルタ３０１〜３０５を複数有している。尚、これら複数のフィルタ３０１〜３０５は、プログラムと、後述するマッピングテーブルとを備えている。このように本実施形態では、例えば、フィルタ３０１〜３０５を用いてフィルタプログラムが実現される。そして、これらフィルタ３０１〜３０５は、コントローラ１０２に設けられているＨＤＤ４０３等の記憶媒体に記憶されている。よって、本実施形態では、例えば、フィルタ３０１〜３０５を記憶するＨＤＤ４０３等の記憶媒体を用いてフィルタプログラム記憶手段が実現される。
【００２２】
文書操作ＡＰＩ２０１は、アプリケーションプログラム群１１０に対して、文書操作機能を個別に提供するインタフェースである。文書編集ＡＰＩ２０２は、アプリケーションプログラム群１１０に対して文書編集機能を個別に提供するインタフェースである。このように本実施形態では、例えば、文書操作ＡＰＩ２０１及び文書編集ＡＰＩ２０２を用いて、編集操作機能インタフェースが実現される。フィルタプラグイン２１０は、フィルタ３０１〜３０５の中から、フィルタをプラグインする。
文書操作ライブラリ２２１は、文書管理モジュール１５０に記憶されている電子文書を操作する機能を持つ。文書編集ライブラリ２２２は、文書管理モジュール１５０に記憶されている電子文書を編集する機能を持つ。このように本実施形態では、例えば、文書操作ライブラリ２２１及び文書編集ライブラリ２２２を用いて、編集操作機能ライブラリが実現される。また、文書操作ライブラリ２２１及び文書編集ライブラリ２２２にライブラリ化されて記憶されている後述の関数を用いて編集操作手段が実現される。
【００２３】
以上の各ブロック（ソフトウェア）は、ハードディスク４０３及びＲＯＭ４０５の何れかに格納されており、ＣＰＵ４０２により呼び出されて実行されることで、ＭＦＰ１００全体の制御が行われる。
【００２４】
具体的に本実施形態では、図３において、Java（登録商標）の仮想機械としてのインタプリタ、サービスマネージャ、及び機器制御クラスライブラリが、コントローラ１０２のプラットフォームに存在する。
サービスマネージャは、編集アプリケーションプログラム１２１〜１２４の追加・削除・起動・停止等、編集アプリケーションプログラム１２１〜１２４の実行を管理する。仮想機械としてのインタプリタは、アプリケーションプログラムや、ライブラリのコードを実現するJava（登録商標）のバイトコードを解釈して実行するソフトウェアである。本実施形態では、サービスマネージャが管理するアプリケーションフレームワーク１２０が、アプリケーションプラットフォームの一例として設けられる。
【００２５】
機器制御クラスライブラリは、Java（登録商標）クラスのネイティブメソッドを実現した機器制御ＡＰＩ（Application Program Interface）をライブラリ化したものである。この機器制御クラスライブラリにより、機種に依存している部分をアプリケーションプログラムに対して隠蔽することができる。アプリケーションプログラムが、機器制御ＡＰＩや機器制御を伴わないＡＰＩを含むJava（登録商標）の層のＡＰＩ群を呼び出すことにより、コピー処理、スキャン処理、及び記憶領域に対するドキュメント格納処理が可能になる。図３に示す文書操作ＡＰＩ２０１や文書編集ＡＰＩ２０２は、このJava（登録商標）の層のＡＰＩ群に該当する。
尚、プラットフォームの機能としては、アプリケーションプラットフォームの他に、機器制御用のプラットフォームがある。
【００２６】
図４は、一般編集フィルタ３０１に含まれるマッピングテーブルの内容の一例を示す図である。図５は、操作履歴付き一般編集フィルタ３０２に含まれるマッピングテーブルの内容の一例を示す図である。図６は、原本性確保フィルタ３０３に含まれるマッピングテーブルの内容の一例を示す図である。図７は、原本性確保フィルタ３０４に含まれるマッピングテーブルの内容の一例を示す図である。図８は、部分編集フィルタ３０５に含まれるマッピングテーブルの内容の一例を示す図である。これらマッピングテーブルは、編集アプリケーションプログラム１２１〜１２４から呼び出し指示があった関数を変更するためのルールを記憶したテーブルである。
【００２７】
図９は、編集アプリケーションプログラム（アプリＡ）１２１が実行する処理動作の一例を説明するフローチャートである。この編集アプリケーションプログラム１２１は、一般的な機能を持つアプリケーションプログラムであり、デフォルトで製品に搭載されている。
図９において、編集アプリケーションプログラム１２１は、ユーザ２が、ＭＦＰ１００のユ―ザインタフェース１０１を操作して、編集アプリケーションプログラム１２１を使用した電子文書１０００の編集開始を指示するまで待機する（ステップＳ１）。編集アプリケーションプログラム１２１を使用した電子文書１０００の編集の開始が指示されると、編集アプリケーションプログラム１２１は、文書操作ＡＰＩ２０１を用いて、編集対象の電子文書１０００を開く処理を実行する（ステップＳ２）。次に、編集アプリケーションプログラム１２１は、編集対象の電子文書１０００がなく、その編集対象の電子文書１０００を開けない等のエラーが生じたか否かを判定する（ステップＳ３）。この判定の結果、エラーが生じた場合、編集アプリケーションプログラム１２１は、そのことを示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ４）、処理を終了する。
【００２８】
一方、エラーが生じていない場合、編集アプリケーションプログラム１２１は、ユーザインターフェース１０１から更なる入力があるまで待機する（ステップＳ５）。ユーザインターフェース１０１から入力があると、編集アプリケーションプログラム１２１は、その入力が文書編集に関わるものか、それとも文書操作に関わるものかを判定する（ステップＳ６）。
【００２９】
この判定の結果、入力が文書編集に関わるものである場合、編集アプリケーションプログラム１２１は、文書編集ＡＰＩ２０２を用いて文書の編集処理を行った後（ステップＳ７）、ステップＳ４へ戻り、次の入力を待つ。
一方、入力が文書操作に関わるものである場合、編集アプリケーションプログラム１２１は、その入力が処理の終了を指示するものか否かを判定する（ステップＳ８）。この判定の結果、入力が処理の終了を指示するものである場合、編集アプリケーションプログラム１２１は、処理が正常に終了したことを示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ４）、処理を終了する。
【００３０】
一方、入力が処理の終了を指示するものでない場合、編集アプリケーションプログラム１２１は、その入力が、文書のセーブ（保存）を指示するものか否かを判定する（ステップＳ９）。この判定の結果、入力が、文書のセーブを指示するものである場合、編集アプリケーションプログラム１２１は、その文書のプロパティにおける更新者の名前としてユーザ２の名前を書き込む（ステップＳ１０）。
次に、編集アプリケーションプログラム１２１は、その文書のプロパティの更新日時に、現在の日時を書き込んで（ステップＳ１１）、その文書をセーブ（保存）し（ステップＳ１２）、ステップＳ４に戻る。
【００３１】
ステップＳ９において、入力が、文書のセーブを指示するものでないと判定された場合、編集アプリケーションプログラム１２１は、その入力が、プロパティの編集を指示するものであるか否かを判定する（ステップＳ１３）。この判定の結果、入力が、プロパティの編集を指示するものである場合、編集アプリケーションプログラム１２１は、プロパティの編集対象が、作者、更新者、作成日時、及び更新日時の何れかであるか否かを判定する（ステップＳ１４）。この判定の結果、プロパティの編集対象が、作者、更新者、作成日時、及び更新日時の何れかである場合、編集アプリケーションプログラム１２１は、編集できない旨を示すメッセージをユーザインターフェース１０１等に表示する（ステップＳ１５）。そして、ステップＳ４に戻る。
ステップＳ１３において、入力が、プロパティの編集を指示するものでないと判定された場合と、ステップＳ１４において、プロパティの編集対象が、作者、更新者、作成日時、及び更新日時の何れでもないと判定された場合、ステップＳ１６に進む。そして、編集アプリケーションプログラム１２１は、入力された内容に従って、編集対象の電子文書１０００の操作を、文書操作ＡＰＩ２０１を用いて実行して（ステップＳ１６）、ステップＳ４に戻る。
【００３２】
図１０は、編集アプリケーションプログラム（アプリＢ）１２２が実行する処理動作の一例を説明するフローチャートである。この編集アプリケーションプログラム１２２は、指定した部品を探索して別の部品に置換し、更に指定された色に部品の少なくとも一部を着色するアプリケーションプログラムである。この編集アプリケーションプログラム１２２は、大量のページからなる文書内のロゴ等を一括で変換する等の目的で用いられるものである。
図１０において、編集アプリケーションプログラム１２２は、ユーザ２が、ＭＦＰ１００のユ―ザインタフェース１０１を操作して、編集アプリケーションプログラム１２２を使用した電子文書１０００の編集開始を指示するまで待機する（ステップＳ２１）。編集アプリケーションプログラム１２２を使用した電子文書１０００の編集の開始が指示されると、編集アプリケーションプログラム１２１は、文書操作ＡＰＩ２０１を用いて、編集対象の電子文書１０００を開く処理を実行する（ステップＳ２２）。
【００３３】
次に、編集アプリケーションプログラム１２２は、編集対象の電子文書１０００がなく、その編集対象の電子文書１０００を開けない等のエラーが生じたか否かを判定する（ステップＳ２３）。この判定の結果、エラーが生じた場合、編集アプリケーションプログラム１２２は、そのことを示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ２４）、処理を終了する。
【００３４】
一方、エラーが生じていない場合、編集アプリケーションプログラム１２２は、編集対象の電子文書１０００を構成する部品１００１〜１００５の全てをチェックする。すなわち、編集アプリケーションプログラム１２２は、文書編集ＡＰＩ２０２を用いて、部品をピックアップする（ステップＳ２５）。次に、編集アプリケーションプログラム１２２は、部品をピックアップできたか否かを判定することによって、編集対象の電子文書１０００を構成する全ての部品１００１〜１００５について処理を行ったか否かを判定する（ステップＳ２６）。
【００３５】
この判定の結果、部品をピックアップでき、編集対象の電子文書１０００を構成する全ての部品１００１〜１００５について処理を行っていない場合、ステップＳ２７に進む。そして、編集アプリケーションプログラム１２２は、その部品が置換対象として指定された部品か否かを判定する（ステップＳ２７）。この判定の結果、ピックアップした部品が置換対象として指定された部品である場合、編集アプリケーションプログラム１２２は、文書編集ＡＰＩ２０２を介して得られる文書編集ライブラリ２２２の機能を用いて、部品の置換処理を行う（ステップＳ２８）。
次に、編集アプリケーションプログラム１２２は、文書編集ＡＰＩ２０２を介して得られる文書編集ライブラリ２２２の機能を用いて、置換処理を行った部品を、指定された色に着色する（ステップＳ２９）。そして、ステップＳ２４に戻り、次の部品に対して同様の処理を繰り返す。
【００３６】
ステップＳ２７において、ピックアップした部品が置換対象として指定された部品でないと判定された場合には、ステップＳ２８、Ｓ２９を省略して、ステップＳ２４に戻り、次の部品に対して同様の処理を繰り返す。
ステップＳ２６において、編集対象の電子文書１０００を構成する全ての部品１００１〜１００５について処理を行ったと判定された場合、ステップＳ３０に進む。そして、編集アプリケーションプログラム１２２は、文書操作ＡＰＩ２０１を用いて、編集対象の文書をセーブ（保存）する（ステップＳ３０）。そして、編集アプリケーションプログラム１２２は、エラーが生じたか否かを判定する（ステップＳ３１）。
【００３７】
この判定の結果、エラーが生じた場合、編集アプリケーションプログラム１２２は、編集対象の電子文書１０００を破棄し（ステップＳ３２）、その旨を示すメッセージをユーザインターフェース１０１等に表示し（ステップＳ３３）、処理を終了する。
一方、エラーが生じていない場合、編集アプリケーションプログラム１２２は、正常に編集が終了したと判定して、編集対象の電子文書１０００を閉じる（ステップＳ３４）。そして、編集アプリケーションプログラム１２２は、正しく編集できた旨を示すメッセージをユーザインターフェース１０１等に表示し（ステップＳ３５）、処理を終了する。
【００３８】
図１１は、編集アプリケーションプログラム（アプリＣ）１２３が実行する処理動作の一例を説明するフローチャートである。この編集アプリケーションプログラム１２３は、文書の作者を、指定した名前に書き換えたり、更新日時を、指定した日時に書き換えたりするアプリケーションプログラムであり、主に文書の管理者がメンテナンス等の目的で用いられるものである。
図１１において、編集アプリケーションプログラム１２３は、ユーザ２が、ＭＦＰ１００のユ―ザインタフェース１０１を操作して、編集アプリケーションプログラム１２２を使用した電子文書１０００の編集開始を指示するまで待機する（ステップＳ４１）。編集アプリケーションプログラム１２３を使用した電子文書１０００の編集の開始が指示されると、編集アプリケーションプログラム１２１は、文書操作ＡＰＩ２０１を用いて、編集対象の電子文書１０００を開く処理を実行する（ステップＳ４２）。
【００３９】
次に、編集アプリケーションプログラム１２３は、編集対象の電子文書１０００がなく、その編集対象の電子文書１０００を開けない等のエラーが生じたか否かを判定する（ステップＳ４３）。この判定の結果、エラーが生じた場合、編集アプリケーションプログラム１２３は、そのことを示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ４４）、処理を終了する。
【００４０】
一方、エラーが生じていない場合、編集アプリケーションプログラム１２２は、文書操作ＡＰＩ２０１を用いて、編集対象の電子文書１０００のプロパティにある作者の名前を、指定されたものへ書き換える処理を試みる（ステップＳ４５）。更に、編集アプリケーションプログラム１２３は、文書操作ＡＰＩ２０１を再度用いて、更新日を、指定された日へ書き換える処理を試みる（ステップＳ４６）。
【００４１】
次に、編集アプリケーションプログラム１２３は、文書操作ＡＰＩ２０１を用いて、編集対象の電子文書１０００をセーブ（保存）する（ステップＳ４７）。そして、編集アプリケーションプログラム１２３は、エラーが生じたか否かを判定する（ステップＳ４８）。この判定の結果、エラーが生じた場合、編集アプリケーションプログラム１２３は、編集対象の電子文書１０００の修正を破棄し（ステップＳ４９）、その旨を示すメッセージをユーザインターフェース１０１等に表示し（ステップＳ５０）、処理を終了する。
一方、エラーが生じていない場合、編集アプリケーションプログラム１２３は、正常に編集が終了したと判定して、編集対象の電子文書１０００を閉じる（ステップＳ５１）。そして、編集アプリケーションプログラム１２３は、正しく編集できた旨を示すメッセージをユーザインターフェース１０１等に表示し（ステップＳ５２）、処理を終了する。
【００４２】
図１２は、編集アプリケーションプログラム（アプリＤ）１２４が実行する処理動作の一例を説明するフローチャートである。この編集アプリケーションプログラム１２４は、ＭＦＰ１００が持つ編集操作機能を自由に使用できるオールマイティなアプリケーションプログラムである。
図１２において、編集アプリケーションプログラム１２４は、ユーザ２が、ＭＦＰ１００のユ―ザインタフェース１０１を操作して、編集アプリケーションプログラム１２４を使用した電子文書１０００の編集開始を指示するまで待機する（ステップＳ６１）。編集アプリケーションプログラム１２４を使用した電子文書１０００の編集の開始が指示されると、編集アプリケーションプログラム１２１は、文書操作ＡＰＩ２０１を用いて、編集対象の電子文書１０００を開く処理を実行する（ステップＳ６２）。
次に、編集アプリケーションプログラム１２４は、編集対象の文書がなく、その編集対象の文書を開けない等のエラーが生じたか否かを判定する（ステップＳ６３）。この判定の結果、エラーが生じた場合、編集アプリケーションプログラム１２４は、そのことを示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ６４）、処理を終了する。
【００４３】
一方、エラーが生じていない場合、編集アプリケーションプログラム１２４は、ユーザインターフェース１０１から更なる入力があるまで待機する（ステップＳ６５）。ユーザインターフェース１０１から入力があると、編集アプリケーションプログラム１２４は、その入力が文書編集に関わるものか、それとも文書操作に関わるものかを判定する（ステップＳ６６）。
【００４４】
この判定の結果、入力が文書編集に関わるものである場合、編集アプリケーションプログラム１２４は、文書編集ＡＰＩ２０２を用いて電子文書１０００の編集処理を行った後（ステップＳ６７）、ステップＳ６４へ戻り、次の入力を待つ。
一方、入力が文書操作に関わるものである場合、編集アプリケーションプログラム１２４は、文書操作ＡＰＩ２０１を用いて、電子文書１０００を操作する（ステップＳ６８）。次に、編集アプリケーションプログラム１２４は、エラーが発生したか否かを判定する（ステップＳ６９）。この判定の結果、エラーが発生した場合、編集アプリケーションプログラム１２４は、その旨を示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ６４）、処理を終了する。
一方、エラーが発生していない場合、編集アプリケーションプログラム１２４は、処理が終了したか否かを判定する（ステップＳ７０）この判定の結果、処理が終了していない場合には、ステップＳ６４に戻り、処理を継続する。一方、処理が終了した場合、編集アプリケーションプログラム１２４は、正常に処理が終了したことを示すメッセージをユーザインターフェース１０１等に表示して（ステップＳ６４）、処理を終了する。
【００４５】
図１３は、プラグイン用フィルタ制御モジュール１６０が実行する処理動作の一例を説明するフローチャートである。
ユーザ２が、アプリケーションプログラム群１１０の１つの起動を指示する際、若しくはネットワークを経由して電子文書１０００に対する処理を行う際に、ユーザ認証モジュール１４０は、ユーザの認証処理を行い使用しているユーザを特定する。このように本実施形態では、例えば、ユーザ認証モジュール１４０が行う処理によって、ユーザ認証手段が実現される。
【００４６】
図１３において、プラグイン用フィルタ制御モジュール１６０は、ユーザ２が使用するアプリケーションプログラム、若しくはネットワークモジュール１３０を経由して、ＭＦＰ１００を使用しているユーザの認証情報を取得する（ステップＳ８１）。
次に、プラグイン用フィルタ制御モジュール１６０は、対ユーザフィルタ情報モジュール１７０に、ステップＳ８１で取得したユーザの認証情報を渡し、そのユーザに対応するフィルタの情報の取得を依頼する（ステップＳ８２）。前述したように、対ユーザフィルタ情報モジュール１７０には、管理ユーザによって、どのユーザにどのフィルタを用いるかを示す情報が予め入力されている。
【００４７】
次に、プラグイン用フィルタ制御モジュール１６０は、該当するユーザに対応するフィルタの情報がないかどうかを判定する（ステップＳ８３）。この判定の結果、該当するユーザに対応するフィルタの情報がない場合、プラグイン用フィルタ制御モジュール１６０は、デフォルトのフィルタを選択してフィルタプラグイン２１０に接続する（ステップＳ８４）。
一方、該当するユーザに対応するフィルタの情報がある場合、プラグイン用フィルタ制御モジュール１６０は、ＭＦＰ１００内にその情報に合致するフィルタがインストールされていないかどうかを判定する（ステップＳ８５）。この判定の結果、フィルタの情報に合致するフィルタが、ＭＦＰ１００内にインストールされていない場合、プラグイン用フィルタ制御モジュール１６０は、デフォルトのフィルタを選択してフィルタプラグイン２１０に接続する（ステップＳ８４）。
【００４８】
一方、フィルタの情報に合致するフィルタが、ＭＦＰ１００内にインストールされている場合、プラグイン用フィルタ制御モジュール１６０は、そのフィルタを選択してフィルタプラグイン２１０に接続し（ステップＳ８６）、処理を終了する。
以上のように本実施形態では、例えば、ステップＳ８４、Ｓ８６の処理を行うことによってフィルタプログラム選択手段が実現される。
【００４９】
尚、本実施形態では、アプリケーションプログラムと文書編集の処理は、ユーザのセッション毎に独立していることを前提としている。よって、複数のユーザが同時に別のアプリケーションプログラムを使用しても、それぞれに別のフィルタがセットされて処理が行われ、各アプリケーションプログラムの動作に影響はない。
【００５０】
図１４は、フィルタプラグイン２１０が実行する処理動作の一例を説明するフローチャートである。
アプリケーションプログラム群１１０若しくはネットワークモジュール１３０から、文書操作ＡＰＩ２０１若しくは文書編集ＡＰＩ２０２が呼ばれたら、フィルタプラグイン２１０は、ＡＰＩのどの関数が呼ばれたのかを示す情報を取得する（ステップＳ１０１）。
【００５１】
次に、フィルタプラグイン２１０は、自身に接続されているフィルタが持つマッピングテーブルを見て、呼ばれた関数の前処理の項目に何らかの関数が定義されているか否かを判定する（ステップＳ１０２）。この判定の結果、前処理の項目に何らかの関数が定義されている場合、フィルタプラグイン２１０は、その関数を前処理として実行する（ステップＳ１０３）。更に、フィルタプラグイン２１０は、前処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（前処理）がなされたことをユーザに報知することができる。そして、ステップＳ１０４に進む。一方、前処理の項目に関数が定義されていない場合には、ステップＳ１０３を省略してステップＳ１０４に進む。
【００５２】
そして、フィルタプラグイン２１０は、自身に接続されているフィルタが持つマッピングテーブルを見て、呼ばれた関数の実処理の項目に何らかの関数が定義されているか否かを判定する（ステップＳ１０４）。この判定の結果、実処理の項目に何らかの関数が定義されている場合、フィルタプラブイン２１０は、その関数を実処理として実行する（ステップＳ１０５）。更に、フィルタプラグイン２１０は、実処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（実処理）がなされたことをユーザに報知することができる。そして、ステップＳ１０６に進む。一方、実処理の項目に関数が定義されていない場合には、ステップＳ１０５を省略してステップＳ１０６に進む。
【００５３】
そして、フィルタプラグイン２１０は、自身に接続されているフィルタが持つマッピングテーブルを見て、呼ばれた関数の後処理の項目に何らかの関数が定義されているか否かを判定する（ステップＳ１０６）。この判定の結果、後処理の項目に何らかの関数が定義されている場合、フィルタプラブイン２１０は、その関数を後処理として実行する（ステップＳ１０７）。更に、フィルタプラグイン２１０は、後処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（後処理）がなされたことをユーザに報知することができる。そして、処理を終了する。一方、後処理の項目に関数が定義されていない場合には、ステップＳ１０７を行わずに処理を終了する。
尚、マッピングテーブルに何も定義されていなければ、図１４に示す処理を何も行わないケースもある。
以上のように本実施形態では、例えば、ステップＳ１０２、Ｓ１０４、Ｓ１０６の処理を行うことにより、機能判定手段が実現され、ステップＳ１０３、Ｓ１０５、Ｓ１０７の処理を行うことにより、機能制限手段が実現される。
【００５４】
仮に、フィルタプラグイン２１０に一般編集フィルタ３０１が接続されているとする。そうすると、図４に示したように、前処理の項目には何も定義されていないため、文書操作ＡＰＩ２０１及び文書編集ＡＰＩ２０２の何れの関数が呼ばれても、ステップＳ１０３の処理が行われることはない。
これに対し、実処理の項目には、文書操作ライブラリ２２１と文書編集ライブラリ２２２とに用意されている関数が定義されているため、文書操作ＡＰＩ２０１及び文書編集ＡＰＩ２０２の何れの関数が呼ばれても、ステップＳ１０５で該当する実処理が行われる。
また、後処理の項目には何も定義されていないため、文書操作ＡＰＩ２０１及び文書編集ＡＰＩ２０２の何れの関数が呼ばれても、ステップＳ１０７の処理が行われることはない。
【００５５】
仮に、フィルタプラグイン２１０に履歴付き一般編集フィルタ３０２が接続されているとする。図５に示したように、前処理の項目には何も定義されていないため、文書操作ＡＰＩ２０１及び文書編集ＡＰＩ２０２の何れの関数が呼ばれても、ステップＳ１０３の処理が行われることはない。
これに対し、実処理の項目には、文書操作ライブラリ２２１と文書編集ライブラリ２２２とに用意されている関数が定義されているため、文書操作ＡＰＩ２０１及び文書編集ＡＰＩ２０２の何れの関数が呼ばれても、ステップＳ１０５で該当する実処理が行われる。
そして、後処理の項目には、文書操作ライブラリ２２１と文書編集ライブラリ２２２とにX＿Log（）という関数が定義されているため、後処理として、このX＿Log（）が呼ばれ、実行された処理の全ての履歴が記憶領域に保存される。
【００５６】
仮に、フィルタプラグイン２１０に原本性確保フィルタ３０３が接続されているとする。図６に示したように、OpenDocument（）が呼ばれた際には、前処理で一時的な文書を複製する。そして、実処理では、複製した一時的な文書を開く（オープンする）。そして、後処理では、X＿CallBackMessage（）という関数が呼ばれ、原本ではなく一時的な文書を複製してオープンしたことをアプリケーションプログラムに対して通知する。
また、SaveDocument（）が呼ばれた際には、前処理で、X＿CallBackMessage（）という関数が呼ばれ、原本ではなく一時的な文書が保存される旨をアプリケーションプログラムに対して通知する。そして、実処理では、X＿SaveDocument（）という関数が呼ばれ、一時的な文書を保存する。
【００５７】
仮に、フィルタプラグイン２１０に原本性確保フィルタ３０４が接続されているとする。図７に示したように、OpenDocument（）が呼ばれた際には、前処理で、X＿Duplicateという関数が呼ばれ、対象となる文書をバックアップとして別名で複製する。そして、実処理では、X＿OpenDocument（）という関数が呼ばれ、対象となる文書を開き（オープンし）、以降の処理は、対象となる文書そのものに対して行う。
【００５８】
CloseDocument（）が呼ばれた際には、実処理で、X＿CloseDocumentという関数が呼ばれ、対象となる文書を閉じる（クローズする）。そして、後処理で、X＿CheckModという関数が呼ばれ、対象となる文書が、バックアップと比較して更新されているか否かを判定（チェック）し、更新されていなければ、バックアップアップとして複製された文書を削除する。一方、更新されていれば、バックアップアップとして複製された文書を残す。
【００５９】
仮に、フィルタプラグイン２１０に部分編集フィルタ３０５が接続されているとする。図８に示したように、addObject（）が呼ばれた際には、前処理で、X＿CallBackMessage（）という関数が呼ばれ、その呼び出しが無効であることをアプリケーションプログラムに対して通知する。そして、実処理では何も行われない。
deleteObject（）が呼ばれた際にも、前処理で、X＿CallBackMessage（）という関数が呼ばれ、その呼び出しが無効であることをアプリケーションプログラムに対して通知する。そして、実処理では何も行われない。
尚、その他の呼び出しは、操作履歴付き一般編集フィルタ３０２に含まれるマッピングテーブルと同様である（図５を参照）。
【００６０】
次に、前述した本実施形態のプラグイン用フィルタ制御モジュール１６０、フィルタプラグイン２１０、及びフィルタ３０１〜３０５によって、実際にどのような効果が得られるのかを説明する。
（第１の適用例）
あるオフィスに２台のＭＦＰ＿Ａ、ＭＦＰ＿Ｂが設置されており、各ユーザはどちらにも自由に編集アプリケーションをインストールして使用していた。その後、ある時からＭＦＰ＿Ａに既に保存されている電子文書１０００は、改変してはならず、ＭＦＰ＿Ｂに保存されている電子文書１０００は、自由に編集してよいが、どのような使い方をしているかを調査することになったとする。
このようにする場合、ＭＦＰの管理ユーザは、ＭＦＰ＿Ａに原本性確保フィルタ３０３のみをデフォルトのフィルタとしてインストールし、ＭＦＰ＿Ｂに操作履歴付き一般編集フィルタ３０２のみをデフォルトのフィルタとしてインストールすればよい。
【００６１】
ここで、一般のユーザが、ＭＦＰ＿Ａにおいて、文書の作者名と更新日時とを書き換えられる編集アプリケーションプログラム１２３を間違って実行した場合に、どのような処理が行なわれるかを説明する。
図１１のステップＳ４２で、編集対象となる電子文書１０００を開こう（オープンしよう）とすると、図１４のステップＳ１０１で、OpenDocument（）という関数が取得される。そして、図６に示した原本性確保フィルタ３０３のマッピングテーブルにおいて、OpenDocument（）の項目には前処理が定義されているため、ステップＳ１０３で、文書操作ライブラリ２２１の機能であるX＿Duplicate（）が呼び出される。そうすると、文書操作ライブラリ２２１は、原本から別名の文書を複製する。
【００６２】
そして、OpenDocument（）の項目には実処理が定義されているので、ステップＳ１０５で、文書操作ライブラリ２２１の機能であるX＿OpenDocument（）が呼び出される。そうすると、文書操作ライブラリ２２１は、複製した別名の文書を開く（オープンする）。
更に、OpenDocument（）の項目には後処理が定義されているので、ステップＳ１０７で、文書操作ライブラリ２２１の機能であるX＿CallBackMessage（）が呼び出される。そうすると、文書操作ライブラリ２２１は、「編集できません。別文書としてオープンします」といったメッセ―ジを、編集アプリケーションプログラム１２３を経由して一般のユーザに伝える。
【００６３】
図１１に説明を戻し、ステップＳ４３では、エラーが生じていないと判定されるため、ステップＳ４５の処理へ進む。ステップＳ４５に進むと、図６に示したWriteAuthorName（）が呼ばれ、複製した別名の文書に対してX＿WriteAuthorName（）に基づく処理（作者名の書き換え）が実行される。
同様に、ステップＳ４６では、図６に示したWriteModifiedDate（）が呼ばれ、複製した別名の文書に対して、X＿WriteModifiedDate（）に基づく処理（更新日時の書き換え）が行われる。
ステップＳ４７で、SaveDocument（）が呼ばれると、前処理で、X＿CallBackMessage（）が呼ばれ、「別名で保存する」といったメッセージをユーザに伝える。そして、実処理で、X＿SaveDocumnt（）が呼ばれ、複製した別名の文書を保存する。この処理自体もエラーではないので、ステップＳ５１で、別名の文書を閉じ（クローズし）、ステップＳ５２で、正常に処理が終了したことを示すメッセージを表示する。
【００６４】
以上の説明と対比して、ＭＦＰ＿Ｂにおいて、文書の作者名と更新日時とを書き換えられる編集アプリケーションプログラム１２３を実行した場合に、どのような処理が行われるかを説明する。
図１１のステップＳ４２で、編集対象となる文書を開こう（オープンしよう）とすると、図１４のステップＳ１０１でOpenDocument（）という関数が取得される。そして、図５に示した原本性確保フィルタ３０３のマッピングテーブルにおいて、OpenDocument（）の項目には前処理が定義されていないため、ステップＳ１０３を行わない。そして、OpenDocument（）の項目には実処理が定義されているので、ステップＳ１０５で、文書操作ライブラリ２２１の機能であるX＿OpenDocument（）が読み出される。そうすると、文書操作ライブラリ２２１は、編集対象となる文書を開く（オープンする）。
更に、OpenDocument（）の項目には後処理が定義されているので、ステップＳ１０７で、X＿Log（）が呼び出され、処理内容がログに記憶される。
【００６５】
図１１に説明を戻し、ステップＳ４３では、エラーが生じていないと判定されるため、ステップＳ４５の処理へ進む。ステップＳ４５に進むと、図５に示したWriteAuthorName（）を呼ばれ、実処理で、編集対象となる文書に対して、X＿WriteAuthorName（）に基づく処理（作者名の書き換え）が実行される。そして、後処理で、X＿Log（）が呼ばれ、作者名の書き換えが行われたことがログに記憶される。
【００６６】
同様に、ステップＳ４６では、図５に示したWriteModifiedDate（）が呼ばれ、実処理で、編集対象となる文書に対して、X＿WriteModifiedDate（）に基づく処理（更新日時の書き換え）が行われる。そして、後処理で、X＿Log（）が呼ばれ、更新日時の書き換えが行われたことがログに記憶される。
【００６７】
ステップＳ４７で、SaveDocument（）が呼ばれると、実処理で、X＿SaveDocumnt（）が呼ばれ、編集対象となる文書を保存し、後処理で、X＿Log（）が呼ばれ、編集対象となる文書を保存たことがログに記憶される。この処理自体もエラーではないので、ステップＳ５１で編集対象となる文書を閉じ（クローズし）、ステップＳ５２で、正常に処理が終了したことを示すメッセージを表示する。尚、これらの処理についても後処理でX＿Log（）が呼ばれ、ログに記憶される。
【００６８】
以上のように本実施形態では、目的に応じた適切なフィルタ３０１〜３０５をＭＦＰ１００毎に設定しておくようにした。したがって、使用する編集アプリケーションプログラム１２１〜１２４の機能に影響されることなく、編集アプリケーションプログラム１２１〜１２４の機能を、ＭＦＰ毎の目的に合わせて、制限することができる。
【００６９】
（第２の適用例）
あるオフィスに１台のＭＦＰ＿Ｃが設置されている。ユーザＣは文書全般を管理する立場にあり、場合によっては、ＭＦＰ＿Ｃに保存してある文書の作者名や更新日時等を編集することがある。ユーザＤは、ＭＦＰ＿Ｃに保存してある文書の一部の色を変更する等して、文書の体裁を変更して印刷する業務を行っているが、まだ不慣れなためミスオペレーションする可能性がある。
このような場合、ＭＦＰ＿Ｃの管理ユーザは、一般編集フィルタ３０１と、部分編集フィルタ３０５とをＭＦＰ＿Ｃにインストールさせておく。更に、ユーザＣが使用する場合には一般編集フィルタ３０１を接続することを示す情報と、ユーザＤが使用する場合には部分編集フィルタ３０５を接続することを示す情報とを、対ユーザフィルタ情報モジュール１７０に設定しておく。
【００７０】
ここで、ユーザＤが、ＭＦＰ＿Ｃにおいて、編集アプリケーションプログラム１２４を使用して、ＭＦＰ＿Ｃに保存してある電子文書１０００の体裁の変更以外に、部品の消去や追加をしてしまった場合、どのような処理が行なわれるかを説明する。
【００７１】
ユーザＤが、ＭＦＰ＿Ｃの編集アプリケーションプログラム１２４を使用しようとしてログインすると、コントローラ１０２は、ユーザ認証モジュール１４０を使用してユーザの認証処理を行う。
編集アプリケーションプログラム１２４が起動すると、図１３のステップＳ８１で、プラグイン用フィルタ制御モジュール１６０は、ユーザＤの認証情報を、編集アプリケーションプログラム１２４を経由して取得する。そして、ステップＳ８２で、対ユーザフィルタ情報モジュール１７０に、ユーザＤの認証情報を渡すと、フィルタの情報として部分編集フィルタ３０５が返ってくる。このフィルタはＭＦＰ＿Ｃにインストールされているので、ステップＳ８６に進み、プラグイン用フィルタ制御モジュール１６０は、部分編集フィルタ３０５をフィルタプラグイン２１０に接続する。
【００７２】
その後、図１２のステップＳ６２において、ユーザＤが、編集アプリケーションプログラム１２４を使用して、電子文書１０００を開く（オープンする）指示を行う。そうすると、図８に示した部分編集フィルタ３０５内のマッピングテーブルのOpenDocument（）が呼ばれる。そうすると、実処理で、X＿OpenDocument（）が呼ばれ、編集対象となる文書を開く（オープンする）処理が行われる。次に、ユーザＤが、この文書内にある部品、例えばロゴの色を変更しようとすると、ステップＳ６７で、文書編集ＡＰＩ２０２のPathFillColor（）が呼ばれる。そうすると、実処理で、X＿PathFilColor（）が呼ばれ、ユーザＤは、色を変更することができる。
もし、ユーザＤが、ロゴそのものを削除しようとすると、ステップＳ６７で、文書編集ＡＰＩ２０２のdeleteObject（）が呼ばれる。そうすると、前処理で、X＿CallBackMessage（）が呼ばれ、部品の削除ができない旨を示すメッセージが、編集アプリケーションプログラム１２４を経由して、ユーザＤに通知される。この場合、実処理では何も行なわれない。
【００７３】
同様に、もし、ユーザＤが、新たなロゴを追加しようとすると、ステップＳ６７で、文書編集ＡＰＩ２０２のaddObject（）が呼ばれる。そうすると、前処理で、X＿CallBackMessage（）が呼ばれ、部品の追加ができない旨を示すメッセージが、編集アプリケーションプログラム１２４を経由して、ユーザＤに通知される。尚、文書の保存（セーブ）と終了処理は、そのまま実行される。
【００７４】
次に、ユーザＣが、ＭＦＰ＿Ｃにおいて、編集アプリケーションプログラム１２４を使用した場合、どのような処理が行なわれるかを説明する。
ユーザＣが、ＭＦＰ＿Ｃの編集アプリケーションプログラム１２４を使用しようとしてログインすると、コントローラ１０２は、ユーザ認証モジュール１４０を使用してユーザの認証処理を行う。
編集アプリケーションプログラム１２４が起動すると、図１３のステップＳ８１で、プラグイン用フィルタ制御モジュール１６０は、ユーザＣの認証情報を、編集アプリケーションプログラム１２４を経由して取得する。そして、ステップＳ８２で、対ユーザフィルタ情報モジュール１７０に、ユーザＣの認証情報を渡すと、フィルタの情報として一般編集フィルタ３０１が返ってくる。このフィルタはＭＦＰ＿Ｃにインストールされているので、ステップＳ８６に進み、プラグイン用フィルタ制御モジュール１６０は、一般編集フィルタ３０１をフィルタプラグイン２１０に接続する。
以降、一般編集フィルタ３０１は、文書編集と、文書操作とをユーザＣからの指示に従ってそのまま実行する。
【００７５】
以上のように本実施形態では、一台のＭＦＰに、複数のフィルタをインストールしておき、ユーザの目的に合わせてどのフィルタを使用するかを設定しておくようにした。したがって、編集アプリケーションプログラム１２１〜１２４の機能に影響されることなく、編集アプリケーションプログラム１２１〜１２４の機能を、ユーザ毎に制限することができる。
【００７６】
尚、本実施形態では、フィルタプラグイン２１０内に固定の処理ロジックを持ち、フィルタ３０１〜３０５がマッピングテーブルを持つことを前提として説明した。しかしながら、フィルタ３０１〜３０５内に処理ロジックとマッピングテーブルとの両方を持ち、フィルタ３０１〜３０５毎に異なる処理ロジックを持たせるようにしてもよい。
また、本実施形態では、フィルタ３０１〜３０５の処理を前処理、実処理、後処理の３段階で実行できる構成にしたが、より少ない段階であっても、より多数に列挙できても構わない。また、一つの処理において、複数の関数を呼び出しせるようにしてもよい。
【００７７】
また、フィルタは、図３に示したものに限定されず、目的に応じた内容のフィルタを、ＭＦＰ１００に対して自在に着脱（インストール（追加）、アンインストール（削除））することができる。
また、地紋を用紙上に形成して処理を実行したことを示すようにしたが、処理を実行したことを示す情報を用紙上に付加するようにしていれば、必ずしも地紋を用紙上に形成する必要はない。
また、編集アプリケーションプログラム１２１〜１２４で実行される機能が、フィルタで制限される機能であるかをアプリケーションフレームワーク１２０（アプリケーションプラットフォーム）において判定してもよい。このようにした場合、アプリケーションフレームワーク１２０の指示により、フィルタの適用（選択）を行うことになる。
【００７８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。前述した第１の実施形態では、電子文書１０００の操作の機能と編集の機能とを公開するためのＡＰＩ２０１、２０２と、実際の機能を持つライブラリ２２１、２２２とを構造的に明確に分け、フィルタ３０１〜３０５をその間にプラグインするようにした。ＭＦＰ１００のコントローラ１０２のプラットフォームを一から構築する場合には、最初からこのように設計すればよいが、実際にはなかなかそういう機会は少ない。そこで、本実施形態では、既に存在するプラットフォームを流用した場合について説明する。このように本実施形態と前述した第１の実施形態とは、コントローラ１０２が有する機能の一部が異なる。したがって、本実施形態の説明において、前述した第１の実施形態と同一の部分については、図１〜図１４に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００７９】
以下、添付図面を参照して第２の発明の好適な実施例を詳細に説明する。
図１５は、ＭＦＰに内蔵されるコントローラ１０２におけるソフトウェアの概略構成の一例を示す図である。
フック用フィルタ制御モジュール１６１は、アプリケーションプログラム群１１０、若しくはネットワークモジュール１３０が起動する際に、フィルタ３０１〜３０５の何れかをフック制御モジュール２３２に渡す（設定する）。
【００８０】
文書操作編集機能モジュール２３０は、各アプリケーションプログラム群１１０及びネットワークモジュール１３０から、電子文書１０００の操作と編集とが行われる際に利用される。図１５では、理解が容易となるように、文書操作編集機能モジュール２３０が１つのモジュールであるように示しているが、文書操作編集機能モジュール２３０を、複数のモジュールから構成し、それら複数のモジュールに機能を分散させてもよい。
【００８１】
フック用関数テーブル２３１は、文書操作編集機能モジュール２３０が持つ文書操作機能及び文書編集機能のうち、フィルタで制御したい機能のみを、テ―ブル上に宣言したものである。各アプリケーションプログラム群１１０及びネットワークモジュール１３０から、文書操作編集機能モジュール２３０へ行われる操作は、全てこのフック用関数テーブル２３１にリンクされる。このフック用関数テーブル２３１は、コントローラ１０２のＨＤＤ４０３等の記憶媒体に記憶されている。テーブル記憶手段が実現される。よって、本実施形態では、例えば、フック用関数テーブル２３１を記憶するＨＤＤ４０３等の記憶媒体を用いてテーブル記憶手段が実現される。
【００８２】
フック制御モジュール２３２は、文書操作編集機能モジュール２３０へのアクセスに対し、フック用関数テーブル２３１を用いてフックし、自身に接続されているフィルタに従って機能を実現する。すなわち、フック制御モジュール２３２は、文書操作編集機能モジュール２３０へのアクセスに対し、フィルタで制御したい機能を抽出し、抽出した機能を、自身に接続されているフィルタに従って制御する。
【００８３】
図１６は、フック用フィルタ制御モジュール１６１が実行する処理動作の一例を説明するフローチャートである。第１の実施形態で説明したプラグイン用フィルタ制御モジュール１６０の動作とは、フィルタを接続する先が異なるだけである（図１３を参照）。
ユーザ２が、アプリケーションプログラム群１１０の１つの起動を指示する際、若しくはネットワークを経由して電子文書１０００に対する処理を行う際に、ユーザ認証モジュール１４０は、ユーザの認証処理を行い使用しているユーザを特定する。
図１６において、フック用フィルタ制御モジュール１６１は、ユーザ２が使用するアプリケーションプログラム、若しくはネットワークモジュール１３０を経由して、ＭＦＰ１００を使用しているユーザの認証情報を取得する（ステップＳ１２１）。
次に、フック用フィルタ制御モジュール１６１は、対ユーザフィルタ情報モジュール１７０に、ステップＳ１２１で取得したユーザの認証情報を渡し、そのユーザに対応するフィルタの情報の取得を依頼する（ステップＳ１２２）。
【００８４】
次に、フック用フィルタ制御モジュール１６１は、該当するユーザに対応するフィルタの情報がないかどうかを判定する（ステップＳ１２３）。この判定の結果、該当するユーザに対応するフィルタの情報がない場合、フック用フィルタ制御モジュール１６１は、デフォルトのフィルタを選択してフック制御モジュール２３２に接続する（ステップＳ１２４）。
一方、該当するユーザに対応するフィルタの情報がある場合、フック用フィルタ制御モジュール１６１は、ＭＦＰ１００内にその情報に合致するフィルタがインストールされていないかどうかを判定する（ステップＳ１２５）。この判定の結果、フィルタの情報に合致するフィルタが、ＭＦＰ１００内にインストールされていない場合、フック用フィルタ制御モジュール１６１は、デフォルトのフィルタを選択してフック制御モジュール２３２に接続する（ステップＳ１２４）。
【００８５】
一方、フィルタの情報に合致するフィルタが、ＭＦＰ１００内にインストールされている場合、フック用フィルタ制御モジュール１６１は、そのフィルタを選択してフック制御モジュール２３２に接続し（ステップＳ１２６）、処理を終了する。
【００８６】
図１７は、フック制御モジュール２３２が実行する処理動作の一例を説明するフローチャートである。
アプリケーションプログラム群１１０若しくはネットワークモジュール１３０が、文書操作編集機能モジュール２３０を利用するために、文書操作編集機能モジュール２３０の関数の呼び出しを行う。そうすると、フック用関数テ―ブル２３１を介して、その関数がフック制御モジュール２３２に渡り、処理が開始する。
フック制御モジュール２３２は、呼ばれた関数を取得する（ステップＳ１４１）。
次に、フック制御モジュール２３２は、呼ばれた関数が、フック用関数テーブル２３１に、フックする対象として定義されているか否かを判定する（ステップＳ１４２）。この判定の結果、呼ばれた関数が、フック用関数テーブル２３１に、フックする対象として定義されていない場合、フック制御モジュール２３２は、実際に呼ばれた関数を文書操作編集機能モジュール２３０に実行させ（ステップＳ１４３）、処理を終了する。
【００８７】
一方、呼ばれた関数が、フック用関数テーブル２３１に、フックする対象として定義されている場合、ステップＳ１４４に進む。そして、フック制御モジュール２３２は、自身に接続されているフィルタが持つマッピングテーブルを見て、呼ばれた関数の前処理の項目に何らかの関数が定義されているか否かを判定する（ステップＳ１４４）。
この判定の結果、呼ばれた関数の前処理の項目に何らかの関数が定義されている場合、フック制御モジュール２３２は、その関数を前処理として文書操作編集機能モジュール２３０に実行させる（ステップＳ１４５）。更に、フック制御モジュール２３２は、前処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（前処理）がなされたことをユーザに報知することができる。そして、ステップＳ１４６に進む。一方、前処理の項目に関数が定義されていない場合には、ステップＳ１４５を省略してステップＳ１４６に進む。
【００８８】
そして、フック制御モジュール２３２は、自身に接続されているフィルタが持つマッピングテーブルを見て、呼ばれた関数の実処理の項目に何らかの関数が定義されているか否かを判定する（ステップＳ１４６）。この判定の結果、実処理の項目に何らかの関数が定義されている場合、フック制御モジュール２３２は、その関数を実処理として文書操作編集機能モジュール２３０に実行させる（ステップＳ１４７）。更に、フック制御モジュール２３２は、実処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（実処理）がなされたことをユーザに報知することができる。そして、ステップＳ１４８に進む。一方、実処理の項目に関数が定義されていない場合には、ステップＳ１４７を省略してステップＳ１４８に進む。
【００８９】
そして、フック制御モジュール２３２は、自身に接続されているフィルタが持つマッピングテーブルを見て、呼ばれた関数の後処理の項目に何らかの関数が定義されているか否かを判定する（ステップＳ１４８）。この判定の結果、後処理の項目に何らかの関数が定義されている場合、フック制御モジュール２３２は、その関数を後処理として文書操作編集機能モジュール２３０に実行させる（ステップＳ１４９）。更に、フック制御モジュール２３２は、後処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（後処理）がなされたことをユーザに報知することができる。そして、処理を終了する。一方、後処理の項目に関数が定義されていない場合には、ステップＳ１４９を行わずに処理を終了する。
尚、マッピングテーブルに何も定義されていなければ、図１７に示す処理を何も行わないケースもある。
以上のように本実施形態では、例えば、文書操作編集機能モジュール２３０により編集操作手段が実現され、ステップＳ１４２、Ｓ１４４〜Ｓ１４９の処理を実行することによりアクセス制御手段が実現される。
【００９０】
また、各フィルタ３０１〜３０５がフック接続モジュール２３２に接続されたときの処理の内容は、第１の実施形態において、各フィルタ３０１〜３０５がフィルタプラグインモジュール２１０に接続された場合と全く同じであるため、説明を省略する。
【００９１】
以上のように本実施形態においても、第１の実施形態と同様に、目的に応じた適切なフィルタをＭＦＰ毎に設定しておくようにした。したがって、使用する編集アプリケーションプログラム１２１〜１２４の機能に影響されることなく、編集アプリケーションプログラム１２１〜１２４の機能を、ＭＦＰ毎の目的に合わせて、制限することができる。
また、一台のＭＦＰに、複数のフィルタをインストールしておき、ユーザの目的に合わせてどのフィルタを使用するかを設定しておくようにした。したがって、編集アプリケーションプログラム１２１〜１２４の機能に影響されることなく、編集アプリケーションプログラム１２１〜１２４の機能を、ユーザ毎に制限することができる。
【００９２】
更に、本実施形態では、フック用関数テーブル２３１を文書操作編集機能から抽出して、関数の呼び出しをフックするようにした。したがって、文書操作編集機能がインタフェース（ＡＰＩ）とライブラリとに別れた構造でないコントローラプラットフォームであっても、第１の実施形態と同等の機能を実現することができる。
【００９３】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。前述した第１の実施形態では、使用するフィルタが決定していると、文書操作ＡＰＩ２０１、文書編集ＡＰＩ２０２の呼び出しに対する文書操作ライブラリ２２１、文書編集ライブラリ２２２の呼び出しは一意に決まる。これに対し、本実施形態では、特定のＡＰＩの呼び出しがあった場合には、その後のＡＰＩの呼び出しに対するライブラリへのマッピングが動的に変化できるようにする。このように本実施形態と前述した第１の実施形態とは、コントローラ１０２が有する機能の一部が異なる。したがって、本実施形態の説明において、前述した第１の実施形態と同一の部分については、図１〜図１４に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００９４】
図１８は、複数のマッピングテーブルを有するフィルタの構成の一例を概念的に示す図である。
図１８において、フィルタ３１０は、第１の実施形態で説明したフィルタ３０１〜３０５に対応するものである。図１８では、３つのレベルの（３つの）マッピングテーブル３１１、３１２、３１３がフィルタ３１０に内蔵されている場合を例に挙げて示している。
図１９は、レベル１のマッピングテーブル３１１の内容の一例を示す図である。図２０は、レベル２のマッピングテーブル３１２の内容の一例を示す図である。図２１は、レベル３のマッピングテーブル３１３の内容の一例を示す図である。
【００９５】
図２２は、プラグイン用フィルタ制御モジュールが実行する処理動作の一例を説明するフローチャートである。
図２２において、プラグイン用フィルタ制御モジュールは、ユーザ２が使用するアプリケーションプログラム、若しくはネットワークモジュール１３０を経由して、ＭＦＰ１００を使用しているユーザの認証情報を取得する（ステップＳ１６１）。
次に、プラグイン用フィルタ制御モジュールは、対ユーザフィルタ情報モジュール１７０に、ステップＳ１６１で取得したユーザの認証情報を渡し、そのユーザに対応するフィルタの情報の取得を依頼する（ステップＳ１６２）。対ユーザフィルタ情報モジュール１７０には、どのユーザにどのフィルタを用いるかを示す情報と、どのレベルから処理を開始するかを示す情報とが、管理ユーザによって予め入力されている。
【００９６】
次に、プラグイン用フィルタ制御モジュールは、該当するユーザに対応するフィルタの情報がないかどうかを判定する（ステップＳ１６３）。この判定の結果、該当するユーザに対応するフィルタの情報がない場合、プラグイン用フィルタ制御モジュールは、デフォルトのフィルタをフィルタプラグインに接続する（ステップＳ１６４）。そして、プラグイン用フィルタ制御モジュールは、フィルタプラグインに接続したフィルタのマッピングテーブルの何れを使用するかを示すレベル値として、デフォルトの値（例えば「１」）を、フィルタプラグインに渡し（ステップＳ１６５）、処理を終了する。
【００９７】
ステップＳ１６３において、該当するユーザに対応するフィルタの情報がある場合、プラグイン用フィルタ制御モジュールは、ＭＦＰ１００内にその情報に合致するフィルタがインストールされていないかどうかを判定する（ステップＳ１６６）。この判定の結果、フィルタの情報に合致するフィルタが、ＭＦＰ１００内にインストールされていない場合、前述したステップＳ１６４に進み、プラグイン用フィルタ制御モジュールは、デフォルトのフィルタをフィルタプラグインに接続する（ステップＳ１６４）。
【００９８】
一方、フィルタの情報に合致するフィルタが、ＭＦＰ１００内にインストールされている場合、プラグイン用フィルタ制御モジュールは、そのフィルタをフィルタプラグインに接続（ステップＳ１６７）。更にプラグイン用フィルタ制御モジュールは、ステップＳ１６２で、ユーザに対応するフィルタの情報の取得を依頼することにより得られたレベルの値をフィルタプラグインに伝え（ステップＳ１６８）、処理を終了する。
【００９９】
図２３は、フィルタプラグインが実行する処理動作の一例を説明するフローチャートである。
アプリケ―ション１１０若しくはネットワークモジュール１３０から、文書操作ＡＰＩ２０１若しくは文書編集ＡＰＩ２０２が呼ばれたら、フィルタプラグインは、ＡＰＩのどの関数が呼ばれたのか示す情報を取得する（ステップＳＳ１８１）。
次に、フィルタプラグインは、自身に接続されているフィルタが持つマッピングテーブルのうち、現在（カレント）のレベル値を示すマッピングテーブルを参照する。そして、フィルタプラグインは、呼ばれた関数の前処理の項目に何らかの関数が、参照したマッピングテーブルに定義されているか否かを判定する（ステップＳ１８２）。例えば、現在のレベル値が「１」であれば、フィルタプラグインは、レベル１のマッピングテーブル３１１を参照する。尚、最初の処理の際には、現在のレベル値がない。このため、フィルタプラグインは、図２２のステップＳ１６５、Ｓ１６８でプラグイン用フィルタ制御モジュールから渡されたレベル値を現在のレベル値とする。
【０１００】
この判定の結果、前処理の項目に何らかの関数が定義されている場合、フィルタプラグインは、その関数を、現在のレベルの前処理として実行する（ステップＳ１８３）。更に、フィルタプラグインは、前処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（前処理）がなされたことをユーザに報知することができる。そして、ステップＳ１８４に進む。一方、前処理の項目に関数が定義されていない場合には、ステップＳ１８３を省略してステップＳ１８４に進む。
【０１０１】
そして、フィルタプラグインは、呼ばれた関数の実処理の項目に何らかの関数が、参照したマッピングテーブルに定義されているか否かを判定する（ステップＳ１８４）。この判定の結果、実処理の項目に何らかの関数が定義されている場合、フィルタプラグインは、その関数を、現在のレベルの実処理として実行する（ステップＳ１８５）。更に、フィルタプラグインは、実処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（実処理）がなされたことをユーザに報知することができる。そして、ステップＳ１８６に進む。一方、実処理の項目に関数が定義されていない場合には、ステップＳ１８５を省略してステップＳ１８６に進む。
【０１０２】
そして、フィルタプラグインは、呼ばれた関数の後処理の項目に何らかの関数が、参照したマッピングテーブルに定義されているか否かを判定する（ステップＳ１８６）。この判定の結果、後処理の項目に何らかの関数が定義されている場合、フィルタプラグインは、その関数を、現在のレベルの後処理として実行する（ステップＳ１８７）。更に、フィルタプラグインは、後処理を実行したことを地紋として用紙上に形成するための情報を生成する。これにより、アプリケーションプログラム１２１〜１２４を実行して得られた用紙上に、地紋が形成されるようになり、フィルタによる制御（後処理）がなされたことをユーザに報知することができる。そして、ステップＳ１８８に進む。一方、後処理の項目に関数が定義されていない場合には、ステップＳ１８７を省略してステップＳ１８８に進む。
【０１０３】
そして、フィルタプラグインは、呼ばれた関数の切り換えレベルの項目に何らかのレベル値を示す情報が定義されているか否かを判定する（ステップＳ１８８）。本実施形態では、レベル値を示す情報として、例えば、レベル値そのものが示されていたり、開始時のレベル値を指定することが示されたりする。この判定の結果、呼ばれた関数の切り換えレベルの項目に何らかのレベル値を示す情報が定義されている場合、フィルタプラグインは、その情報に基づくレベル値を、現在のレベル値として記憶して（ステップＳ１８９）、処理を終了する。一方、何も定義されていなければカレントレベルはそのままの値を継続する。呼ばれた関数の切り換えレベルの項目に何らかのレベル値を示す情報が定義されていない場合には、ステップＳ１８９を行わずに処理を終了する。
【０１０４】
次に、本実施形態の具体的な適用例について説明する。
レベル１で処理が開始されて、OpenDocument（）が呼ばれると、図１９に示したレベル１のマッピングテーブル３１１の実処理の項目に定義されているX＿OpenDocument（）のみが実際に処理される。その後、更新日を書き換えるWriteModifiedDate（）が呼ばれると、その実処理の項目に定義されているX＿WriteModfiedDate（）はそのまま呼ばれる。しかしながら、後処理の項目に定義されているX＿CallBackMessage（）により「この処理は一度しか実行できません」のようなメッセージが出される。そして、現在のレベルが、「１」から「２」に切り替わる。
【０１０５】
このレベル２では、図２０のレベル２のマッピングテーブル３１２に示したように、呼ばれた関数の全ての前処理で、X＿Log（）が呼ばれてログが記録される。その後、WriteModifiedDate（）が呼ばれると、実処理では何も行なわれず、後処理においてX＿CallBackMessage（）が呼ばれ、「その処理は無効です。以降の処理を全て停止します。」のようなメッセージが出される。そして、現在のレベルが「２」から「３」に切り替わる。
【０１０６】
このレベル３では、図２１のレベル３のマッピングテーブル３１３に示したように、CloseDocument（）以外の関数が呼ばれた場合には、何れも実処理が行なわれずメッセージの表示のみが行われる。これに対し、CloseDocument（）が呼ばれると、X＿CloseDocument（）が呼ばれ、ドキュメントのクローズ処理が行われる。そして、現在のレベルが「３」から開始時の「１」に戻る。
【０１０７】
以上のように本実施形態では、３つのレベルの（３つの）マッピングテーブル３１１、３１２、３１３がフィルタ３１０に内蔵するようにした。そして、１つのフィルタであっても、ある特定のＡＰＩが呼ばれた場合に、マッピングテーブルを切り換えるようにした。したがって、その後のＡＰＩの呼び出しに対する機能ライブラリ（文書操作ライブラリ２２１、文書編集ライブラリ２２２）へのマッピングを動的に変化させられることができる。更に、処理開始時のレベルをユーザ単位で切り換えることで、より制御の柔軟性を高めることができる。
尚、１つのフィルタに含めるマッピングテーブル（レベル）は３つに限定されるものではない。
【０１０８】
（本発明の他の実施形態）
前述した本発明の実施形態における電子文書処理装置を構成する各手段、並びに電子文書処理方法の各ステップは、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【０１０９】
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【０１１０】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図９〜図１４、図１６、図１７、図２２、２３に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接、あるいは遠隔から供給する。そして、そのシステムあるいは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【０１１１】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１１２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０１１３】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１１４】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１１５】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１１６】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１１７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１８】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０１１９】
なお、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の第１の実施形態を示し、印刷システムの概略構成の一例を示す図である。
【図２】本発明の第１の実施形態を示し、ＭＦＰに内蔵されるコントローラにおけるハードウェアの概略構成の一例を示す図である。
【図３】本発明の第１の実施形態を示し、ＭＦＰに内蔵されるコントローラ１０２におけるソフトウェアの概略構成の一例を示す図である。
【図４】本発明の第１の実施形態を示し、一般編集フィルタに含まれるマッピングテーブルの内容の一例を示す図である。
【図５】本発明の第１の実施形態を示し、操作履歴付き一般編集フィルタに含まれるマッピングテーブルの内容の一例を示す図である。
【図６】本発明の第１の実施形態を示し、原本性確保フィルタに含まれるマッピングテーブルの内容の一例を示す図である。
【図７】本発明の第１の実施形態を示し、原本性確保フィルタに含まれるマッピングテーブルの内容の一例を示す図である。
【図８】本発明の第１の実施形態を示し、部分編集フィルタに含まれるマッピングテーブルの内容の一例を示す図である。
【図９】本発明の第１の実施形態を示し、編集アプリケーションプログラム（アプリＡ）が実行する処理動作の一例を説明するフローチャートである。
【図１０】本発明の第１の実施形態を示し、編集アプリケーションプログラム（アプリＢ）が実行する処理動作の一例を説明するフローチャートである。
【図１１】本発明の第１の実施形態を示し、編集アプリケーションプログラム（アプリＣ）が実行する処理動作の一例を説明するフローチャートである。
【図１２】本発明の第１の実施形態を示し、編集アプリケーションプログラム（アプリＤ）が実行する処理動作の一例を説明するフローチャートである。
【図１３】本発明の第１の実施形態を示し、プラグイン用フィルタ制御モジュールが実行する処理動作の一例を説明するフローチャートである。
【図１４】本発明の第１の実施形態を示し、フィルタプラグインが実行する処理動作の一例を説明するフローチャートである。
【図１５】本発明の第２の実施形態を示し、ＭＦＰに内蔵されるコントローラにおけるソフトウェアの概略構成の一例を示す図である。
【図１６】本発明の第２の実施形態を示し、フック用フィルタ制御モジュールが実行する処理動作の一例を説明するフローチャートである。
【図１７】本発明の第２の実施形態を示し、フック制御モジュールが実行する処理動作の一例を説明するフローチャートである。
【図１８】本発明の第３の実施形態を示し、複数のマッピングテーブルを有するフィルタの構成の一例を概念的に示す図である。
【図１９】本発明の第３の実施形態を示し、レベル１のマッピングテーブルの内容の一例を示す図である。
【図２０】本発明の第３の実施形態を示し、レベル２のマッピングテーブルの内容の一例を示す図である。
【図２１】本発明の第３の実施形態を示し、レベル３のマッピングテーブルの内容の一例を示す図である。
【図２２】本発明の第３の実施形態を示し、プラグイン用フィルタ制御モジュールが実行する処理動作の一例を説明するフローチャートである。
【図２３】本発明の第３の実施形態を示し、フィルタプラグインが実行する処理動作の一例を説明するフローチャートである。
【符号の説明】
【０１２１】
１、２  ユーザ
１００  ＭＦＰ
１１０  アプリケーションプログラム群
１２０  アプリケーションプラットフォーム
１２１〜１２４  編集アプリケーションプログラム
１３０  ネットワークモジュール
１４０  ユーザ認証モジュール
１５０  文書管理モジュール
１６０  プラグイン用フィルタ制御モジュール
１６１  フック用フィルタ制御モジュール
１７０  対ユーザフィルタ情報モジュール
２０１  文書操作ＡＰＩ
２０２  文書編集ＡＰＩ
２１０  フィルタプラグイン
２２１  文書操作ライブラリ
２２２  文書編集ライブラリ
２３０  文書操作編集機能モジュール
２３１  フック用関数テーブル
２３２  フック制御モジュール
３０１〜３０５  フィルタ
３１１〜３１３  マッピングテーブル
５０１、５０２  ＰＣ
１０００  電子文書
１００１〜１００５  部品
【図１】
2008201093.tif 000003
【図２】
2008201093.tif 000004
【図３】
2008201093.tif 000005
【図４】
2008201093.tif 000006
【図５】
2008201093.tif 000007
【図６】
2008201093.tif 000008
【図７】
2008201093.tif 000009
【図８】
2008201093.tif 000010
【図９】
2008201093.tif 000011
【図１０】
2008201093.tif 000012
【図１１】
2008201093.tif 000013
【図１２】
2008201093.tif 000014
【図１３】
2008201093.tif 000015
【図１４】
2008201093.tif 000016
【図１５】
2008201093.tif 000017
【図１６】
2008201093.tif 000018
【図１７】
2008201093.tif 000019
【図１８】
2008201093.tif 000020
【図１９】
2008201093.tif 000021
【図２０】
2008201093.tif 000022
【図２１】
2008201093.tif 000023
【図２２】
2008201093.tif 000024
【図２３】
2008201093.tif 000025