(57)【特許請求の範囲】
【請求項１】
ファイルを入力する入力手段と、
前記入力されたファイルがＰＤＦファイルであるか判断する判断手段と、
前記判断手段で前記入力されたファイルがＰＤＦファイルであると判断された場合にのみ、前記入力されたファイルに別のファイルが添付されているか判断する手段と、
前記入力されたファイルに別のファイルが添付されていると判断された場合に、当該添付されているファイルの形式を判断する手段と、
前記入力されたファイルがＰＤＦファイルでないと判定された場合には、前記入力されたファイルをＰＤＦファイルに変換し、
前記添付されているファイルがＰＤＦファイルである場合には、当該添付ファイルのファイル形式を変換せず、
前記添付されているファイルがＰＤＦファイルでない場合には、当該添付ファイルをＰＤＦファイルに変換する変換手段と、
ＰＤＦファイルに変換された前記添付ファイルと、前記入力されたＰＤＦファイルとを結合する結合手段と、
前記結合により得られたファイルをＰＤＬファイルへと変換する手段と、
前記ＰＤＬファイルへの変換により得られたＰＤＬファイルを印刷装置へ送信する送信手段を有することを特徴とする情報処理装置。
【請求項２】
ファイルを入力する入力工程と、
前記入力されたファイルがＰＤＦファイルであるか判断する判断工程と、
前記判断工程で前記入力されたファイルがＰＤＦファイルであると判断された場合にのみ、前記入力されたファイルに別のファイルが添付されているか判断する工程と、
前記入力されたファイルに別のファイルが添付されていると判断された場合に、当該添付されているファイルの形式を判断する工程と、
前記入力されたファイルがＰＤＦファイルでないと判定された場合には、前記入力されたファイルをＰＤＦファイルに変換し、
前記添付されているファイルがＰＤＦファイルである場合には、当該添付ファイルのファイル形式を変換せず、
前記添付されているファイルがＰＤＦファイルでない場合には、当該添付ファイルをＰＤＦファイルに変換する変換工程と、
ＰＤＦファイルに変換された前記添付ファイルと、前記入力されたＰＤＦファイルとを結合する結合工程と、
前記結合により得られたファイルをＰＤＬファイルへと変換する工程と、
前記ＰＤＬファイルへの変換により得られたＰＤＬファイルを印刷装置へ送信する送信工程を有することを特徴とする情報処理方法。
【請求項３】
請求項１に記載の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィルタを用いて文書処理を行う文書処理装置、文書処理方法、及びプログラムに関する。
【背景技術】
【０００２】
着脱可能かつ複数のモジュールを連結する処理方法として、モジュールをフィルタとして扱い、パイプラインでつないだフィルタパイプラインシステムが従来からある。フィルタ間のデータの受け渡し方法は、ストリームで順次データを送る方法や、電子ファイルとしてまとめて送る方法等、様々な方法がある。データの受け渡し方法として共通している点は、「あるフィルタの出力データが次のフィルタの入力データである」という点である。
【０００３】
フィルタパイプラインシステムの従来の例として  Ｍｉｃｒｏｓｏｆｔ  ＸＰＳフィルタパイプラインがある。Ｍｉｃｒｏｓｏｆｔ  ＸＰＳ  フィルタパイプラインでは、例えば、ＸＰＳレイアウトフィルタ、ＸＰＳ印刷フィルタ、から構成することができる。ＸＰＳレイアウトフィルタは入力データであるＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）ファイルのレイアウトを変換し、レイアウト変換済みＸＰＳファイルを出力する。ＸＰＳ印刷フィルタは、レイアウトされたＸＰＳファイルを印刷装置が認識可能な制御コマンドであるＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）ファイルに変換する。
【０００４】
このシステムでは入力データがＸＰＳファイルであるが、例えば入力データとしてＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイルを扱いたい場合、以下のフィルタパイプラインシステムを構築することで実現可能である。即ち、ＰＤＦレイアウトフィルタ、ＰＤＦ印刷フィルタ、から構成するフィルタパイプラインシステムを構築するのである。ＰＤＦレイアウトフィルタは入力データであるＰＤＦファイルのレイアウトを変換し、レイアウト変換済みＰＤＦファイルを出力する。ＰＤＦ印刷フィルタはレイアウトされたＰＤＦファイルをＰＤＬファイルに変換する。以下、上記システムをＰＤＦ印刷パイプラインシステムと呼ぶ。
【０００５】
このように、フィルタパイプラインシステムはその特性上、「あるフィルタの出力データが次のフィルタの入力データになる」という原則がある。その原則に従いつつ、入力ファイルに応じて必要なフィルタを動的に繋ぎあわせる技術が従来からある。上述の例では入力がＸＰＳであればＸＰＳレイアウトフィルタとＸＰＳ印刷フィルタ、入力がＰＤＦであればＰＤＦレイアウトフィルタ、ＰＤＦ印刷フィルタを利用するのである。
【０００６】
フィルタを動的に繋ぎあわせる従来技術として、具体的には以下のような技術がある。
【０００７】
例えば、特許文献１では、データ変換実行時でないと出力データ形式が判明しないような入力データの場合の課題を解決する技術である。具体的には、あるフィルタの出力データのファイル形式（ＦＯＲＭＡＴ  ＴＹＰＥ）が想定と異なるファイル形式である場合に、想定のファイル形式に変換するフィルタを動的にパイプラインの末尾に結合するものである。入力データに対応して、動的にデータ変換フィルタを結合することにより、所望の出力ファイルを得ることができるのである。
【０００８】
また、特許文献２では、入力データである構造化文書ファイルを処理する際、処理に必要なフィルタを動的に決定するものである。具体的には、以下のような技術である。まず、処理対象の文書データのファイル形式と、次のフィルタが入力として要求するファイル形式とが一致するかどうかを調べる。次いでデータ形式が一致しない場合には、文書のファイル形式を次のフィルタが要求するファイル形式に変換させる。次いで、文書ファイルを次のフィルタに渡し、処理を実行する。これにより、各フィルタが複数の異なるデータ形式を要求する場合に、動的にフィルタを構築することができ、更には処理効率を向上させることができるのである。
【０００９】
前述の構造化文書ファイルの代表例としては、前述したＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）やＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）が公知である。そのデータフォーマットはいずれもＵＲＬ等にて一般に公開されている。上記の構造化文書ファイルは、文書ファイル内に別文書ファイルを埋め込む（添付する）ことが可能に構成されている。これにより一つの文書ファイルの中に複数の別ファイル形式の文書ファイルを埋め込むことが可能となっている。このような構造化文書ファイルを、以下「複合構造化文書ファイル」と呼ぶ。また、構造化文書ファイルがＰＤＦファイルである場合「複合ＰＤＦ文書ファイル」と呼ぶ。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００２−３５１７０９
【特許文献２】特開２００５−２５８７８２
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述のＭｉｃｒｏｓｏｆｔ  ＸＰＳパイプラインシステムやＰＤＦ印刷パイプラインシステムにおいて、複合構造化文書ファイル内の添付ファイルも含めて印刷したい場合がある。各フィルタは入出力が限定されるため、前述のＰＤＦ印刷パイプラインシステムでは、例えばＰＤＦレイアウトフィルタは、入出力がＰＤＦファイルとなる。しかしながら、ＰＤＦレイアウトフィルタは、ＰＤＦファイルは入力として扱えるが、複合ＰＤＦファイル内部に添付されているファイルのフォーマットを扱えるとは限らない。例えば、入力ファイルが複合ＰＤＦファイルであり、内部にＭＳ  Ｏｆｆｉｃｅファイルが添付されている場合、ＰＤＦレイアウトフィルタは、ＭＳ  Ｏｆｆｉｃｅファイルを扱えなければならない。具体的には、複合ＰＤＦファイル内のＭＳ  Ｏｆｆｉｃｅファイルを抽出し、ＭＳ  ＯｆｆｉｃｅファイルをＰＤＦファイルへ変換し、更に抽出元のＰＤＦファイルへ結合する、といった処理が必要となる。このような機能を、ＰＤＦレイアウトフィルタのような単独のフィルタだけで実現すると、フィルタ内部の処理が複雑となるため、現実的ではない。
【００１２】
一方で、ＭＳ  ＯｆｆｉｃｅファイルをＰＤＦファイルへ変換する、複数のＰＤＦファイルを一つのＰＤＦへ結合する、といった単独のフィルタを用意することは可能である。そのため、これらフィルタを繋ぎあわせた複合フィルタを用意することによって、複合ＰＤＦファイルを処理することは可能となる。しかしながら、ここではＭＳ  Ｏｆｆｉｃｅファイルを例にしたが、複合ＰＤＦファイル内に添付できるファイル形式には制限がない。そのため、上記のような単独フィルタを複数繋ぎあわせた複合フィルタを予め用意しておくのも現実的ではない（組み合わせ数が膨大であるため）。
【００１３】
この課題は従来技術を利用しても解決できない。従来技術１は、出力ファイル形式が規定されたファイル形式と異なる場合に、動的にモジュールを追加して再帰的に必要なモジュールを呼びだす技術であるが、「出力文書のデータ形式」が想定と異なる場合にのみ有効である。そのため、複合構造化文書ファイルのように文書ファイル内部の添付文書ファイルが異なるファイル形式である場合には対応できない。また、従来技術２は、次のフィルタが処理できる形式に「文書ファイル全体を変換している」ため、入力文書ファイルが複合構造化文書ファイルのように、文書ファイル内部の添付文書ファイルが異なるフォーマットである場合には対応できない。
【００１４】
更には、従来技術１、２は、複合構造化文書ファイル内の特定の添付文書ファイルに対して、どのような処理を加えるかを規定する術がないため、複合構造化文書ファイルに必要なフィルタを動的に繋いだ複合フィルタを構築することはできない。
【課題を解決するための手段】
【００１５】
本発明の情報処理装置は、ファイルを入力する入力手段と、前記入力されたファイルがＰＤＦファイルであるか判断する判断手段と、前記判断手段で前記入力されたファイルがＰＤＦファイルであると判断された場合にのみ、前記入力されたファイルに別のファイルが添付されているか判断する手段と、前記入力されたファイルに別のファイルが添付されていると判断された場合に、当該添付されているファイルの形式を判断する手段と、前記入力されたファイルがＰＤＦファイルでないと判定された場合には、前記入力されたファイルをＰＤＦファイルに変換し、前記添付されているファイルがＰＤＦファイルである場合には、当該添付ファイルのファイル形式を変換せず、前記添付されているファイルがＰＤＦファイルでない場合には、当該添付ファイルをＰＤＦファイルに変換する変換手段と、ＰＤＦファイルに変換された前記添付ファイルと、前記入力されたＰＤＦファイルとを結合する結合手段と、前記結合により得られたファイルをＰＤＬファイルへと変換する手段と、前記ＰＤＬファイルへの変換により得られたＰＤＬファイルを印刷装置へ送信する送信手段を有することを特徴とする。
【発明の効果】
【００１８】
本発明では、異なるフォーマットのファイルが添付されているファイルを処理できる。
【図面の簡単な説明】
【００１９】
【図１】情報処理システムの構成の一例を示すブロック図
【図２】印刷命令から印刷が実行されるまでの概念図
【図３】実施例の印刷システムのモジュール構成図
【図４】実施例の処理全体のフローチャートを示す図
【図５】実施例で用いるフィルタ設定ファイルの一例を示した図
【図６】実施例で用いるフィルタ入出力不定義ファイルの一例を示した図
【図７】フィルタ内部の処理システムの一例を示すブロック図
【図８】実施例で用いるリストファイルの一例を示す模式図
【図９】フィルタ間でのデータの受け渡し方法を示す概念図
【図１０】図４で示したフローチャートのうち、印刷制御部内で行うファイル変換処理の概略フローチャートを示す図
【図１１】図４で示したフローチャートのうち、印刷制御部内で行うファイル変換処理の詳細フローチャートを示す図
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００２１】
フィルタパイプラインシステムにおいて、特にクライアントＰＣ内に本発明であるフォーマット変換方法を適合させた場合の実施例である。本実施例では、複合構造化文書ファイルを印刷データであるＰＤＬファイルへ変換し、ＰＤＬファイルを印刷装置にて処理し、紙出力する印刷システムを例に説明する。しかし、複合文書ファイルをフォーマット変換するシステムであれば本発明は適用可能であり、本発明は印刷システムに限定されるわけでない。また、このフォーマット変換方法は、クライアントＰＣではなく、印刷装置内で行っても同様に成立する。また、このフォーマット変換方法は、Ｗｅｂサービスのサーバ  やクラウドサービスとしてサービスを提供する際にも適用可能である。
【００２２】
＜システム構成＞
図１は本発明の文書処理装置が適用される情報処理システムの構成の一例を示すブロック図である。
【００２３】
図１において、１は中央処理装置で、上記プログラムおよび関連データが記憶されているＦＤ，ＣＤ−ＲＯＭ，ＩＣメモリカード等の記憶媒体をシステムに接続された媒体読取装置６から読み込む。その後、補助記憶装置３から主記憶装置２にロードされたシステムプログラム、アプリケーションプログラムによって、入力装置４から入力される情報を処理して、出力装置５や印刷装置７に出力する。なお、本実施例では、出力装置５はディスプレイなどの表示装置とし、本来出力装置に含まれる印刷装置７と区別する。また、入力装置４はキーボード、ポインティングデバイス等で構成されているものとする。さらに補助記憶装置３は、ハードディスク、光磁気ディスクで構成されるものであってもいいし、これらの組み合わせで構成されるものであってもよい。また、それぞれの装置がネットワークを介して接続されていようとも、本発明を制約するものではない。
【００２４】
図２は媒体読取装置記憶装置６に格納されていた印刷処理制御プログラムと関連するデータが中央処理演算装置１に読み込まれ、入力装置４から印刷命令が入力されて、印刷装置７へデータを送り印刷するまでの概念図をあらわす。アプリケーション１０はＯＳ（オペレーティングシステム）９の制御下で機能する。
【００２５】
図３は、本発明の特徴を最もよくあらわす図面である。同図においてＯＳ（オペレーティングシステム）９は、後述する本発明を適用した印刷システムにおける、クライアントコンピュータ本体およびそれを制御している。また、後述する印刷装置７とはセントロニクスインターフェースにより接続されている。１１はＯＳ上で印刷装置を制御するアプリケーションソフトであり、本実施例では印刷アプリケーションと呼ぶ。
【００２６】
１２は本発明におけるユーザが印刷装置に対しての設定など各種印刷設定等を入力したり、印刷開始指示をしたりするためのユーザーインターフェース部である。
【００２７】
１３は印刷制御部であり、入力文書ファイルと印刷設定ファイル、フィルタ設定ファイルを印刷アプリケーション１１から受け取り、印刷装置で処理できるＰＤＬファイル及び印刷指示ファイルを生成し、印刷装置へ送信する機能を有する。この印刷制御部は、本発明である印刷システムにおけるホスト装置側の重要な処理部を含む。
【００２８】
１４は様々なフィルタの処理順序や入出力等を制御するフィルタ制御部である。
【００２９】
１５は  フィルタの中でも特にフォーマット変換機能を有するフォーマット変換フィルタ群を示す。１６、１７，１８は、フォーマット変換フィルタの一例である。１６はＭＳ  Ｏｆｆｉｃｅファイル（Ｗｏｒｄ，  Ｅｘｃｅｌ）をＰＤＦに変換するＯｆｆｉｃｅ−ＰＤＦ変換フィルタである。１７はＸＰＳファイルをＰＤＦファイルに変換するＸＰＳ−ＰＤＦ変換フィルタである。１８はＰＤＦファイル、及び印刷設定ファイルから、印刷装置で印刷可能なＰＤＬファイル、印刷指示ファイルを生成するＰＤＦ−ＰＤＬ変換フィルタである。ここでは上記３つを例に挙げたが、フォーマットから別のフォーマットに変換する機能を有する変換フィルタであれば、フォーマット変換フィルタ群に追加できる。
【００３０】
１９はフィルタの中でも特に入力文書ファイルを編集する機能を有する編集フィルタ群を示す。２０，２１は、編集フィルタの一例である。２０は、入力であるＰＤＦファイルを、Ｎ−ｕｐ（Ｎページを１枚の紙に面付けすること）、製本やポスター印刷等に適したＰＤＦファイルへ変換するＰＤＦレイアウトフィルタである。２１は、入力である複数のＰＤＦファイルを一つのＰＤＦファイルへ結合するＰＤＦ結合フィルタである。
【００３１】
各フィルタ（１６〜１８、２０、２１）はそれぞれ入出力ファイルが規定されており、印刷制御部１３は各フィルタを繋ぎあわせるフィルタパイプラインシステムである。
【００３２】
２２はＯＳの機能であり、セントロニクス接続により印刷装置とのデータ送受信を行うデータ送受信部である。印刷制御部１２は、生成したＰＤＬデータ及び印刷指示書をこのデータ送信部２２を介して、印刷装置７に送信する。
【００３３】
７は印刷装置であり、接続されたホスト装置から受信したＰＤＬファイル及び印刷指示書に応じた印刷処理等を行う。
【００３４】
＜処理全体の流れ＞
まず、本実施形態における処理全体の流れについて図４のフローチャートを用いて説明する。
【００３５】
印刷アプリケーション１１は、「入力文書ファイル」、「印刷設定ファイル」、「フィルタ設定ファイル」を、ユーザーインターフェース部１２を介して入力装置４から特定する。「入力文書ファイル」は、印刷対象である。「印刷設定ファイル」はＮｕｐ印刷等、印刷の方法を記述する。「フィルタ設定ファイル」は印刷制御部１３が処理に必要なフィルタを規定する。また、それらのファイルを渡すとともに、印刷開始を印刷制御部に通知することで印刷処理が開始される（Ｓ４０１）。
【００３６】
次に、印刷制御部１３は入力文書ファイルと印刷設定ファイルをフィルタ制御部１４に渡し、フィルタ制御部１４はフィルタ設定ファイルを元に、処理に必要なフィルタをロードする。更にフィルタ設定ファイルに基づいて処理を実行する。そして出力ファイルであるＰＤＬデータと印刷指示書をデータ送受信部２２に引き渡す（Ｓ４０２）。尚、印刷制御部１３内の処理の詳細については後述する。
【００３７】
次に、データ送受信部２２は、印刷制御部１２からの指示を受けて、出力ファイルであるＰＤＬファイルと印刷指示書を印刷創始７に送信し、印刷装置７は受け取ったＰＤＬファイルを印刷する。
【００３８】
印刷制御部１３内の処理（Ｓ４０２）の詳細を説明する前に、いくつかの要素について先に説明しておく。
【００３９】
＜フィルタ設定ファイル＞
まず、フィルタ設定ファイルの一例を図５に示す。５０１で示した例では、Ｏｆｆｉｃｅ−ＰＤＦ変換フィルタ１６で、ＭＳ  Ｏｆｆｉｃｅファイルを処理する。次にＰＤＦレイアウトフィルタ２０で、ＰＤＦファイルを処理し、最後にＰＤＦ−ＰＤＬ変換フィルタ１８で、ＰＤＦファイルを処理する、というフィルタ設定が記載されているものである。印刷制御部１３からの指示を受けて、フィルタ制御部１４はこのフィルタ設定ファイル５０１に記載された順に、フィルタを実行して最終的な出力を得るのである。また、フィルタ設定ファイル５０２は、ＰＤＦファイルをＰＤＬファイルに変換するＰＤＦ−ＰＤＬ変換フィルタ１８のみを実行する例を示している。
【００４０】
＜フィルタ入出力定義ファイル＞
次に、フィルタ入出力定義ファイルについて説明する。各フィルタ（１６〜１８、２０、２１）はパイプラインシステムで動作する特性上、入出力を規定する必要がある。そのため、各フィルタは各々の入出力を規定したフィルタ定義ファイルをフィルタ毎に予め用意しておく必要がある。フィルタ制御部１４はこのフィルタ入出力定義ファイルを参照することにより、フィルタ設定ファイル（５０１、５０２等）の妥当性を検証することもできる。また、この情報を元にフィルタ設定ファイル（５０１、５０２等）を更新することで動的にフィルタ繋ぎあわせることが可能となる（詳細は後述する）。図６にフィルタ入出力定義ファイルの一例を示す。６０１の例では、フィルタ名がｏｆｆｉｃｅ−ＰＤＦ変換フィルタ、フィルタタイプがフォーマット変換、入力ファイルフォーマットがＭＳ  Ｏｆｆｉｃｅファイル、出力ファイルフォーマットがＰＤＦファイルであることが規定されている。また、６０２、６０３、６０４はそれぞれ、ＰＤＦレイアウトフィルタ、ＰＤＦ−ＰＤＬ変換フィルタ、ＰＤＦ結合フィルタのフィルタ入出力定義ファイルの例を示している。
【００４１】
＜各フィルタの内部処理＞
各フィルタ（１６〜１８、２０、２１）内部の処理について、及び、印刷制御部１３内で動作するフィルタ制御部１４が、各フィルタ（１６〜１８、２０、２１）をどのように制御するかについて、説明する。
【００４２】
まず、各フィルタ（１６〜１８、２０、２１）内部の処理について、図７を用いて説明する。図７は、本実施形態における個々のフィルタ内部の処理システムブロック図である。図７の入力処理部７０１では前段のフィルタの出力を入力データとして受け取る。フィルタ処理部７０２では各々のフィルタの処理を行う。例えば、Ｏｆｆｉｃｅ−ＰＤＦ変換フィルタであれば、ＭＳ  ｏｆｆｉｃｅファイルをＰＤＦファイルへ変換し、ＰＤＦレイアウトフィルタであれば、ＰＤＦファイルのレイアウトを編集する、といった処理である。出力データ生成部７０３ではフィルタ処理部７０２での結果を反映した出力データを生成する。この際に逐次データが生成されるならばストリームに順次流す。メモリやハードディスクに出力ファイルを実体化するならば、リストファイル生成部７０４にて実体化したファイルへのリンク情報をリストにしたリストファイルを作成し、これをストリームに送ることもできる。
【００４３】
＜リストファイル＞
前述のリストファイルの例を模式的に表したものを図８に示す。図８の８０１に示した例では、リストファイル内にリンクされたファイル数が４つあり、それぞれのファイル（Ｄｏｃ１〜Ｄｏｃ４）のファイル形式（Ｆｏｒｍａｔ  Ｔｙｐｅ）、及び、ファイルパス（Ｆｉｌｅ  Ｐａｔｈ）が記載されているものである。各フィルタへの入力がリストファイルであった場合、各フィルタはリスト内の文書ファイルのうち、ファイル形式（Ｆｏｒｍａｔ  Ｔｙｐｅ）が、フィルタ入出力定義ファイル内の入力ファイル形式が一致した文書ファイルをすべて処理する事とする。
【００４４】
＜フィルタ間でのデータの受け渡し方法＞
次にフィルタ間でのデータの受け渡し方法について説明する。図９は、フィルタ間のデータの受け渡し方法を示した概念図である。この概念図は、フィルタ制御部１４への入力がＭＳ  Ｏｆｆｉｃｅファイルであり、Ｏｆｆｉｃｅ−ＰＤＦ変換フィルタ１６、ＰＤＦレイアウトフィルタ２０、ＰＤＦ−ＰＤＬ変換１８フィルタで順次処理し、最終的にＰＤＬファイルを出力する例を示している。
【００４５】
フィルタ制御部１４は入力であるＭＳ  Ｏｆｆｉｃｅファイルを最初のフィルタであるＯｆｆｉｃｅ−ＰＤＦ変換フィルタ１６にストリームで渡す。Ｏｆｆｉｃｅ−ＰＤＦ変換フィルタ１６ではＯｆｆｉｃｅファイルからＰＤＦに変換する。そして、生成したＰＤＦファイルへのファイルパスを規定したリストファイルを生成し、ストリームとしてフィルタ制御部１４に渡す。例えば、ＰＤＦレイアウトフィルタ２０が、補助記憶装置３（ハードディスク等）にＰＤＦファイルを実体化して格納したとすると、これを再度ストリームに流すのは効率が良くない。格納したＰＤＦファイルへのリストファイルのみを後段のフィルタに渡すことで、効率良くデータの受け渡しをすることができるのである。尚、ストリームに流すデータをリストファイルにするかどうかの判断は、フィルタ制御部１４が行うものとし、各フィルタはその指示に従って処理を実行する。
【００４６】
フィルタ制御部１４では前段のフィルタの出力を後段のフィルタの入力として繋ぐ。よって後段のＰＤＦレイアウトフィルタでは、リストファイルが入力としてストリームで渡される。ＰＤＦレイアウトフィルタは、受け取ったリストファイルで示されるＰＤＦファイルを、別途ファイル制御部から受け取る印刷設定に応じてレイアウトしたＰＤＦファイルを出力する。そして、ｏｆｆｉｃｅ−ＰＤＦ変換フィルタ同様にリストファイルを生成し、ストリームとしてフィルタ制御部に渡す。フィルタ制御部は後段のＰＤＦ−ＰＤＬ変換フィルタに、入力ファイルとしてリストファイルを渡す。ＰＤＦ−ＰＤＬ変換フィルタはＰＤＬファイルへ変換処理を行い、ストリームでフィルタ制御部に渡す。フィルタ制御部ではこのＰＤＬファイルをフィルタ群の出力とする。
【００４７】
＜印刷制御部内  Ｓ４０２処理＞
次に、図の１０、１１のフローチャートを用いて、印刷制御部１３内の処理（Ｓ４０２）の詳細を説明する。図１０はＳ４０２の処理概略を示すフローチャートであり、図１１はＳ４０２の詳細を示すフローチャートである。
【００４８】
まず、概略について説明する。印刷制御部１３は、フィルタ制御部１４に対して、印刷対象である入力文書を解析し、ファイル形式や、構造化文書ファイルであればその中に添付文書ファイルであるか、等の情報を取得し、指定されたフィルタで処理可能であるかを判断するファイル解析処理を行う。（Ｓ４０２−１）。
【００４９】
次に、フィルタを追加することや、フィルタを組み合わせることで処理可能となるか判断し、可能であれば動的にフィルタを繋ぎあわせるフィルタ合成処理を行う（Ｓ４０２−２）。
【００５０】
次に、フィルタ合成処理によって動的に組み替えたフィルタを実際にロードし、処理を実行するフィルタ実行処理を行う（Ｓ４０２−３）。
【００５１】
上述のＳ４０２−１Ｓ４０２−２、Ｓ４０２−３の処理の詳細は、図１１の、Ｓ４０２−１−１〜Ｓ４０２−１−２、Ｓ４０２−２−１〜Ｓ４０２−２−４、Ｓ４０２−３−１〜Ｓ４０２−３−２、が該当する。図１１を使って詳細に説明する。
【００５２】
印刷制御部１３は、フィルタ制御部１４に対して、印刷対象である入力文書ファイルを分析し、同じく受けとったフィルタ設定ファイルで処理可能であるか判断するよう指示を出す。フィルタ制御部１４は、指示に従って処理を実行する（Ｓ４０２−１−１、Ｓ４０２−１−２）。上述の「入力文書ファイルの分析」は、印刷対象である入力文書の拡張子等から「ファイル形式」が何であるかを判断する。次に、「構造化文書ファイルであるかどうか」を判断し、構造化文書ファイルであれば、「その構造化文書内に添付文書ファイルがあるか」を判断する。そして添付文書ファイルがあるのであれば「添付ファイルのファイル形式は何であるか」等の情報を取得することを示す。具体例を用いてもう少し詳しく説明する。まず、フィルタ設定ファイルが図５の５０２のようにＰＤＦ−ＰＤＬ変換フィルタ１８だけから構成される場合で説明する。ＰＤＦ−ＰＤＬ変換フィルタ１８のフィルタ入出力定義ファイル６０３から、入力ファイルがＰＤＦファイルであれば処理可能であると判断できる（ケース１）。しかし、入力ファイルがＭＳ  Ｏｆｆｉｃｅファイルであれば、ＰＤＦ−ＰＤＬ変換フィルタ１８ではサポート外の入力であるため、処理不可能と判断する（ケース２）。また、入力ファイルがＰＤＦファイルであったとしても、複合ＰＤＦファイルであれば、ＰＤＦ−ＰＤＬ変換フィルタ１８ではＰＤＦファイル内の添付ファイルは処理できない。よって処理不可能と判断する（ケース３）。
【００５３】
Ｓ４０２−１−２において、処理可能と判断した場合（例えばケース１）、フィルタ制御部１４はフィルタ設定ファイル５０２に記載されている各フィルタを、順次ロードする（Ｓ４０２−３−１）。ケース１の例では、ＰＤＦ−ＰＤＬ変換フィルタ１８のみがロードされる。ケース２、３の場合の処理については後述する。
【００５４】
次に、フィルタ制御部１４は、＜フィルタ間でのデータの受け渡し方法＞で記載した通りにフィルタを制御し、最終的な出力ファイルを得る（Ｓ４０２−３−２）。
【００５５】
一方、Ｓ４０２−１−２において、処理不可能と判断した場合、フィルタ制御部１４はフィルタ設定ファイルには記載のないフィルタを、新たに追加することで処理可能かどうか判断する。予め用意されているフィルタ入出力定義ファイル６０１〜６０４と、実際に入力された文書ファイル（ケース２の例ではＭＳ  Ｏｆｆｉｃｅファイル、ケース３の例では複合ＰＤＦファイル）、フィルタ定義ファイル５０２、を使って判断する（Ｓ４０２−２−１）。
【００５６】
ケース２の例で説明する。フィルタ設定ファイル５０２で示される最初のフィルタはＰＤＦ−ＰＤＬ変換フィルタ１８である。よって、入力ファイルはフィルタ入出力ファイル６０３から入力はＰＤＦファイルでなければならないことがわかる。つまり、入力データがＭＳ  Ｏｆｆｉｃｅファイルであれば、ＭＳ  ＯｆｆｉｃｅファイルからＰＤＦファイルへ変換するＯｆｆｉｃｅ−ＰＤＦ変換フィルタ１６をフィルタパイプラインの先頭に加えれば、処理可能となる。よって、フィルタ制御部１４は、フィルタを追加することで処理可能と判断する。
【００５７】
Ｓ４０２−２−１で処理可能と判断した場合、フィルタ設定ファイルに更新する（Ｓ４０２−２−２）。ケース２の例では、ＭＳ  ＯｆｆｉｃｅファイルからＰＤＦファイルへ変換するＯｆｆｉｃｅ−ＰＤＦ変換フィルタ１６をフィルタパイプラインの先頭に加えるようにフィルタ設定ファイルを更新するのである。即ちフィルタ設定ファイル５０２から５０３で示したように更新する。
【００５８】
一方で、Ｓ４０２−２−１で処理不可能と判断した場合、予め用意してあるフィルタを複数組み合わせて処理可能かどうか判断する（Ｓ４０２−２−３）。ここでの判断材料としには、入力ファイル解析処理（Ｓ４０２−１−１）の結果も用いる。即ち、印刷対象である入力文書の「ファイル形式」を判断する。ファイル形式から「構造化文書ファイルであるか」判断し構造化文書ファイルであれば、「その構造化文書内に添付文書ファイルがあるか」判断する。そして添付文書ファイルがあるのであれば「添付ファイルのファイル形式は何であるか」等の情報を用いるのである。ケース３で、複合ＰＤＦファイル内にＭＳ−Ｏｆｆｉｃｅファイルが２つ、ＸＰＳファイルが１つ添付されている場合を例に説明する（複合ＰＤＦファイル内の添付順は、ＭＳ−Ｏｆｆｉｃｅファイル、ＸＰＳファイル、ＭＳ−Ｏｆｆｉｃｅファイルの例である）。
【００５９】
尚、この例では、入力ファイル解析処理（Ｓ４０２−１−１）の結果として、「入力文書は構造化文書であり、その中に含まれる添付文書ファイルが３つある。そして、添付文書ファイルのファイル形式はそれぞれＭＳ−Ｏｆｆｉｃｅファイル、ＸＰＳファイル、ＭＳ−Ｏｆｆｉｃｅファイルである」、という情報が取得されている。
【００６０】
ケース３の例も、ケース２同様にフィルタ設定ファイル５０２で示される最初のフィルタはＰＤＦ−ＰＤＬ変換フィルタ１８である。但し、ＰＤＦ−ＰＤＬ変換フィルタ１８は複合ＰＤＦファイル内部にある添付文書ファイルは処理できない。しかし、フィルタ制御部にて、以下の手順を踏めば処理可能となる。まず、添付ファイルであるＭＳ  ＯｆｆｉｃｅファイルとＸＰＳファイルを複合ＰＤＦファイルから独立したファイルとして抽出し、複合ＰＤＦを単純なＰＤＦファイルに変換し、一旦補助記憶装置３にそれぞれ格納する。そしてこれらファイルへのファイルパスを記載したリストファイル８０２を作成する。このリストファイル８０２の先頭に記載されたＰＤＦファイルが複合化ＰＤＦファイルを単純なＰＤＦファイルに変換したファイルを指す。次に記載されたＭＳ  Ｏｆｆｉｃｅファイル、ＸＰＳファイル、ＭＳ  Ｏｆｆｉｃｅファイルが複合ＰＤＦファイルから抽出したファイルを指している。そして、生成したリストファイル８０２は、Ｏｆｆｉｃｅ−ＰＤＦ変換フィルタ１６、ＸＰＳ−ＰＤＦ変換フィルタ１７、ＰＤＦ結合フィルタ２１を組み合わせたパイプラインを構築すれば処理可能となる。よって、このようなケースの場合、フィルタ制御部１４は、フィルタを組み合わせることによって処理可能と判断する。
【００６１】
Ｓ４０２−２−３で処理可能と判断した場合、実際に上述のようなリストファイル生成を行う（Ｓ４０２−２−４）。ケース３の場合、フィルタ制御部は元々のＰＤＦファイルを、ＰＤＦファイルと抽出したＭＳ−Ｏｆｆｉｃｅファイルに分割する。これら複数のファイルをフィルタに同時に流すのはフィルタパイプラインシステムの特性上、難しい。よって、リストファイルを生成するのである。ケース３の例では、リストファイル８０２を生成するのである。
【００６２】
先に述べた通りリストファイル８０２は、複合ＰＤＦファイル内にＭＳ−Ｏｆｆｉｃｅファイルが２つ、ＸＰＳファイルが１つ添付されている場合であり、その添付順は、ＭＳ−Ｏｆｆｉｃｅファイル、ＸＰＳファイル、ＭＳ−Ｏｆｆｉｃｅファイルである例である）。
【００６３】
Ｓ４０２−２−３で処理可能と判断した場合、Ｓ４０２−２−１で処理可能と判断した場合と同様に、Ｓ４０２−２−３で判断した結果を反映したフィルタ設定ファイルに更新する（Ｓ４０２−２−２）。ケース３の例では、フィルタ制御部で、生成したリストファイル８０２を処理するために、ＭＳ  ＯｆｆｉｃｅファイルからＰＤＦファイルへ変換するＯｆｆｉｃｅ−ＰＤＦ変換フィルタ１６をフィルタパイプラインの先頭に加える。更に、ＸＰＳファイルからＰＤＦへ変換するＸＰＳ−ＰＤＦ変換フィルタ１７、ＰＤＦファイルを結合するＰＤＦ結合フィルタ２１を処理するようにフィルタ設定ファイルを更新する（フィルタ設定ファイル５０２から５０４で示したように更新する）。
【００６４】
Ｓ４０２−２−３においても、処理不可能な場合、処理不可能なデータとして処理を終了させる。例えば、入力データがＸＰＳファイルであり、ＸＰＳファイルからＰＤＦファイルに変換するようなフィルタが存在しない場合処理不可能なデータとして処理を終了させる。また、入力データが複合ＰＤＦであり、内部に添付されているデータをＰＤＦへ変換するフィルタがない場合等も、処理不可能なデータとして処理を終了させる。
【００６５】
Ｓ４０２−２−１、Ｓ４０２−２−３を経由した場合も、Ｓ４０２−３−１、及びＳ４０２−３−２の処理を行う。Ｓ４０２−３−１については既に述べているため、ここでの説明は省略する。Ｓ４０２−３−２の処理についても既に述べているが、Ｓ４０２−２−４でファイルがリストファイル化された場合の例を、あらためて説明する。＜リストファイル＞にて述べたとおり、各フィルタへの入力がリストファイルであった場合、各フィルタはリストファイル内の文書のうち、ファイル形式が、フィルタ入出力定義ファイル内の入力ファイル形式が一致した文書をすべて処理する。ケース３の場合を例に説明する。ケース３の例では、フィルタ設定ファイル５０４、入力データはリストファイル８０２となる。フィルタ設定ファイル５０４では、先頭フィルタであるＯｆｆｉｃｅ−ＰＤＦ変換フィルタ１６にて、リストファイル８０２に記載されているファイルのうち、Ｏｆｆｉｃｅ  Ｆｉｌｅを処理するように記載されている。即ち、ｅｘｅｃｕｔｅ  ＝  Ｏｆｆｉｃｅ  Ｆｉｌｅと記載される。従って、リストファイル８０２のうち、ファイルフォーマットタイプがＯｆｆｉｃｅファイルであるファイル（ＦｏｒｍａｔＴｙｐｅ  ＝  Ｏｆｆｉｃｅ  Ｆｉｌｅ）を処理する。この場合は、「ｙｙｙ．ｄｏｃ」及び「ａａａ．ｄｏｃ」をＯｆｆｉｃｅ−ＰＤＦ変換フィルタ１６にてＰＤＦファイルに変換し、ファイルリスト８０２をフィアルリスト８０３のように更新する。
【００６６】
次に、フィルタ設定ファイル５０４では、ＸＰＳ−ＰＤＦ変換フィルタ１７にて、リストファイル８０３に記載されているファイルのうち、ＸＰＳ  Ｆｉｌｅを処理するように記載されている（ｅｘｅｃｕｔｅ  ＝  ＸＰＳ  Ｆｉｌｅ）。従って、リストファイル８０３うち、ファイルフォーマットタイプがＸＰＳファイルであるファイル（ＦｏｒｍａｔＴｙｐｅ  ＝  ＸＰＳ  Ｆｉｌｅ）を処理する。この場合は、「ｚｚｚ．ｘｐｓ」をＸＰＳ−ＰＤＦ変換フィルタ１７にてＰＤＦファイルに変換し、ファイルリスト８０３をフィアルリスト８０１のように更新する。
【００６７】
このように、リストファイルに記載されているファイルのうち、フィルタ設定ファイルで指定されているフォーマットのデータを処理することで全体として効率的な処理を実現できる。今回の例でいえば、リストファイル内には、ＰＤＦファイル、Ｏｆｆｉｃｅファイル、ＸＰＳファイル、Ｏｆｆｉｃファイル、というようにＯｆｆｉｃｅファイルが散在している（連続しているわけではない）。しかしながら、Ｏｆｆｉｃｅ−ＰＤＦ変換フィルタ１６は１度のロード、実行でよい。
【００６８】
そして次のフィルタであるＰＤＦ結合フィルタ２１への入力はリストファイル８０１となる。フィルタ設定ファイル５０４では、ＰＤＦ結合フィルタ２１にて、リストファイル８０１に記載されているファイルのうち、ＰＤＦ  Ｆｉｌｅを処理するように記載されている（ｅｘｅｃｕｔｅ  ＝  ＰＤＦ  Ｆｉｌｅ）。従って、リストファイル８０１のうち、ファイルフォーマットタイプがＰＤＦファイルであるファイル（ＦｏｒｍａｔＴｙｐｅ  ＝  ＰＤＦ  Ｆｉｌｅ）を処理する。この場合は、「ｘｘｘ．ｐｄｆ」と「ｙｙｙ．ｐｄｆ」、「ｚｚｚ．ｐｄｆ」、「ａａａ．ｐｄｆ」をＰＤＦ結合フィルタ２１にて一つのＰＤＦファイルに変換し、ファイルリスト８０１をファイルリスト８０４のように更新する。最後に、ＰＤＦ−ＰＤＬ変換フィルタ１８にて、ファイルリスト８０４に記載されているＰＤＦフィアルを処理し、最終的な出力結果であるＰＤＬファイルを得る。そして、フィルタ制御部ではこのＰＤＬファイルをフィルタ群の出力とする。
【００６９】
このように、複合ＰＤＦファイル（複合構造化文書ファイル）をリストファイル化することによって、複合ＰＤＦファイル内の特定の添付文書ファイル（例えばＭＳ  Ｏｆｆｉｃｅファイル）に対して、どのような処理を加えるかを規定することができる。これにより複合ＰＤＦファイル（複合構造化文書ファイル）であっても処理できるフィルタパイプラインを動的に構築できる。また、各フィルタの入出力ファイル形式を規定した定義ファイルを元に処理モジュール情報を生成、更新するため、新しいフィルタをフィルタパイプラインに繋げることを容易に実現できる。
【００７０】
本発明の実施の形態では、構造化文書ファイルをリストファイル化することによって、構造化文書ファイル内の特定の添付文書ファイルに対して、どのような処理を加えるかを規定することができる。これにより複合構造化文書ファイルであっても処理できるフィルタパイプラインを動的に構築できる。また、各フィルタの入出力ファイル形式を規定した定義ファイルを元に処理モジュール情報を生成、更新するため、新しいフィルタをフィルタパイプラインに繋げることを容易に実現できる。
【００７１】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体（ＣＤＲＯＭ等）を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005725812.tif 000002
【図２】
0005725812.tif 000003
【図３】
0005725812.tif 000004
【図４】
0005725812.tif 000005
【図５】
0005725812.tif 000006
【図６】
0005725812.tif 000007
【図７】
0005725812.tif 000008
【図８】
0005725812.tif 000009
【図９】
0005725812.tif 000010
【図１０】
0005725812.tif 000011
【図１１】
0005725812.tif 000012