(57)【要約】【課題】本発明は、印刷された文書データを確実にサーバで収集する印刷データ管理システムに関する。【解決手段】情報処理装置は、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で指定するスプールデータ形式指定手段と、スプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、取得したスプールデータを所定のデータ形式に変換するスプールデータ変換手段と、所定のデータ形式に変換した印刷データと、テキストデータと、属性情報との送信を制御する送信制御手段とを有し、印刷データ管理サーバは、印刷データと、テキストデータと、属性情報を受信する受信手段と、印刷データと、テキストデータと、属性情報とを記憶する印刷データ記憶手段と、を備える印刷データ管理システムである。【選択図】図１
2017041073.tif 000002
【特許請求の範囲】
【請求項１】
印刷データをプリンタへ出力する情報処理装置であって、
印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、
指定されたスプールデータ形式によるスプールデータと前記スプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出手段と、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御手段と、を有する情報処理装置。
【請求項２】
アプリケーション起動時に印刷に関する所定の関数アドレスを書き換える関数書換手段をさらに有し、
前記関数書換手段によって関数アドレスが書き換えられたことにより、前記スプールデータ形式指定手段が、スプールデータ形式を指定し、前記スプールデータ取得手段が、前記スプールデータを取得することを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記関数書換手段が、ＧＤＩが出力先のプリンタのプリンタドライバにアクセスするための関数アドレスを書き換えることで、前記スプールデータ形式指定手段がスプールデータ形式を指定し、スプーラがプリントプロセッサを呼び出すための関数アドレスを書き換えることで、前記スプールデータを取得する、請求項２記載の情報処理装置。
【請求項４】
アプリケーション起動時にロードされるモジュールに関するレジストリに前記関数書換手段の名前を書き込むレジストリ書き込み手段をさらに有することを特徴とする、請求項３記載の情報処理装置。
【請求項５】
前記スプールデータ形式指定手段で指定されるスプールデータ形式はＥＭＦデータであることを特徴とする、請求項１〜４記載の情報処理装置。
【請求項６】
前記印刷データの属性情報は、少なくとも印刷日時、文書データ名、ユーザ名を含むことを特徴とする、請求項１〜５記載の情報処理装置。
【請求項７】
さらに、取得したスプールデータを所定のデータ形式に変換するスプールデータ変換手段を有し、
前記送信制御手段は、所定のデータ形式に変換した印刷データの送信を制御する、請求項１〜６記載の情報処理装置。
【請求項８】
前記スプールデータ変換手段は、スプールデータ形式がＥＭＦデータであるときに変換する、請求項７記載の情報処理装置。
【請求項９】
前記スプールデータ変換手段は、取得したスプールデータをＰＤＦ又はＸＰＳデータに変換する、請求項７又は８記載の情報処理装置。
【請求項１０】
プリンタで印刷する印刷データを出力するコンピュータに適用され、前記印刷データを取得する印刷データ取得プログラムであって、
印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、
指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出ステップと、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御ステップとを
実行させることを特徴とする印刷データ取得プログラム。
【請求項１１】
アプリケーション起動時に印刷に関する所定の関数アドレスを書き換える関数書換ステップをさらに有し、
前記関数書換ステップによって関数アドレスが書き換えられたことにより、前記スプールデータ形式指定手段が、スプールデータ形式を指定し、前記スプールデータ取得ステップが、前記スプールデータを取得することを特徴とする、請求項１０記載の印刷データ取得プログラム。
【請求項１２】
アプリケーション起動時にロードされるモジュールに関するレジストリに前記関数書換ステップの名前を書き込むレジストリ書き込みステップをさらに有することを特徴とする、請求項１１記載の印刷データ取得プログラム。
【請求項１３】
プリンタで印刷する印刷データを出力するコンピュータに適用され、前記印刷データを取得する印刷データ取得方法であって、
印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、
指定されたスプールデータ形式によるスプールデータと前記スプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出ステップと、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御ステップとを
実行させることを特徴とする印刷データ取得方法。
【請求項１４】
印刷データをプリンタへ出力する情報処理装置と、前記印刷データを管理する印刷データ管理サーバとを有する印刷データ管理システムであって、
前記情報処理装置は、
印刷指示があると印刷指示された文書データのスプールデータ形式を、出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、
指定されたスプールデータ形式によるスプールデータと前記スプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出手段と、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御手段とを有し、
前記印刷データ管理サーバは、
前記印刷データと、前記テキストデータと、前記属性情報を受信する受信手段と、
前記印刷データと、前記テキストデータと、前記属性情報とを記憶する印刷データ記憶手段と、
を備える印刷データ管理システム。
【請求項１５】
前記印刷データ管理サーバは、
さらに、前記テキストデータ及び前記属性情報に基づいて生成したインデックスデータを記憶するインデックス記憶手段と、
前記インデックスデータに基づいて前記印刷データを検索する検索手段と、
を有する請求項１４記載の印刷データ管理システム。
【請求項１６】
前記テキストデータのトークン解析することでインデックスデータを生成するトークン解析手段と、をさらに有する請求項１５記載の印刷データ管理システム。
【請求項１７】
前記印刷データ管理サーバは、
所定条件を有する印刷データが前記印刷データ記憶手段に記憶されたときに、所定の通知先に通知するための通知条件設定手段と、
前記通知条件設定手段に所定条件に合致する印刷データを検出すると所定の通知先へ通知する通知手段をさらに有することを特徴とする、請求項１４〜１６記載の印刷データ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷された文書データを確実にサーバで収集する印刷データ管理システムに関する。
【背景技術】
【０００２】
近年、コンピュータシステムやコンピュータネットワークの進展により、多くの文書が電子データで扱われることが多くなり、機密情報も電子化されてサーバなどに保存されるようになった。企業や官公庁では、機密情報についてパスワードの設定やアクセスできる人間を限定するなど、情報漏えいに対しては対策を講じている。しかし、こうした電子化された機密文書を印刷して持ち出されることがあり、問題となっている。
【０００３】
ところで、特許文献１では、印刷処理がなされた文書データのポストスクリプトイメージデータからファイル名を取得し、記憶されているファイルを読みだして、ポストスクリプトイメージデータとともにサーバへ送り、印刷処理が実行された文書をサーバに登録することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１４１４０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１記載の方法では、印刷される文書のどこかに必ずファイル名が記載されている必要があり、またファイル名が記載されていない文書については、印刷処理がされても文書データを取得することができず、すべての印刷データを登録することができないという問題があった。さらに、文書データに必ずファイル名を入れる必要があるため、ユーザの負担も大きい。
【０００６】
また、特許文献１記載の方法では、印刷した日時情報やユーザ名などを取得できないため、実際に印刷されたのか、判別できないという問題があった。また、ユーザがファイル名を文書データに挿入しなければ、データを収集することができないという問題があった。
【０００７】
本発明は、クライアント側のユーザの負担なく、印刷処理された文書を確実にサーバで取得することを目的とする。
【課題を解決するための手段】
【０００８】
本発明における印刷データをプリンタへ出力する情報処理装置にあっては、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御手段と、を有する情報処理装置を提供する。
【０００９】
また、本発明におけるプリンタで印刷する印刷データを出力するコンピュータに適用され、印刷データを取得する印刷データ取得プログラムにあっては、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、取得したスプールデータからテキストデータを抽出するテキスト抽出ステップと、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御ステップとを実行させることを特徴とする印刷データ取得プログラムを提供する。
【００１０】
さらに、本発明におけるプリンタで印刷する印刷データを出力するコンピュータに適用され、印刷データを取得する印刷データ取得方法であって、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、取得したスプールデータからテキストデータを抽出するテキスト抽出ステップと、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御ステップとを実行させることを特徴とする印刷データ取得方法を提供する。
【００１１】
また、印刷データをプリンタへ出力する情報処理装置と、印刷データを管理する印刷データ管理サーバとを有する印刷データ管理システムであって、情報処理装置は、印刷指示があると印刷指示された文書データのスプールデータ形式を、出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御手段とを有し、印刷データ管理サーバは、印刷データと、テキストデータと、属性情報を受信する受信手段と、印刷データと、テキストデータと、属性情報とを記憶する印刷データ記憶手段と、を備える印刷データ管理システムを提供する。
【発明の効果】
【００１２】
本発明によれば、アプリケーションで印刷指示がなされるごとにスプーラからスプールデータを取得する構成であるため、ユーザが特別な操作を行うことなく印刷データを収集することができる。また、印刷データの印刷日時やユーザ名などの属性情報を、印刷データに関連付けて記憶することができるため、誰がいつ行った印刷処理なのか、後日検証することができる。
【００１３】
また、本印刷データ取得プログラムは、プリンタの機種に依存することなく、どのプリンタへの印刷処理であっても確実に印刷データを取得することができる。そして取得したスプールデータを所定のデータ形式へ変換し、またテキスト情報を抽出したうえで、所定のデータ形式による印刷データ及びテキスト情報を印刷データ管理サーバへ送信するため、サーバで文字化けなどを起こすことのない、正確な印刷データを管理サーバで取得することができる。
【００１４】
さらに、本発明によれば、アプリケーションを起動したときに印刷取得プログラムも起動する仕組みとしているため、印刷取得プログラムをインストールしてすぐに印刷データを取得することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は本発明における印刷データ管理システムの構成の一例を示す図面である。
【図２】図２は、本発明にかかるクライアントＰＣ１２０のハードウェア構成図の一例を示す図面である。
【図３】図３は、本発明における印刷データ取得プログラムの機能ブロック図である。
【図４】図４は、本発明の第一の実施の形態における印刷処理におけるクライアントＰＣの機能ブロック図の一例を示す図面である。
【図５】図５は、本発明の第一の実施の形態による印刷処理における印刷データ取得方法を説明するフローチャートの一例である。
【図６】図６は、本発明における印刷データの属性情報の一例を示す図である。
【図７】図７は、本発明における印刷データ管理サーバの機能ブロックの一例を示す図である。
【図８】図８は、本発明の第二の実施の形態での印刷処理におけるクライアントＰＣの機能ブロック図の一例を示す図面である。
【図９】図９は、本発明の第二の実施の形態により印刷処理における印刷データ取得方法を説明するフローチャートの一例である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態について、図面を参照しながら説明する。図１は、本発明における印刷データ管理システムの構成の一例を示す図面である。印刷データ管理システムは、例えば、印刷データ管理サーバ１１０と、クライアントＰＣ１２０ａ、１２０ｂ、プリンタＡ１３０ａ、プリンタＢ１３０ｂそれぞれは、ネットワーク１００で接続されている。ネットワーク１００は、有線又は無線を問わず、インターネット、ＬＡＮ、ＷＡＮなど、どのようなネットワーク形態であってもよい。
【００１７】
印刷データ管理サーバ１１０は、各クライアントＰＣで印刷処理された文書である印刷データを各クライアントＰＣから受信し、保存、管理するサーバである。クライアントＰＣから送信された印刷データ、印刷データに含まれるテキスト情報及びその属性情報は、それぞれ関連付けてデータベース等の記憶部へ保存される。なお、印刷データ管理サーバ１１０は、一つのサーバ装置である必要はなく、複数のサーバに分散して構成されていてもよい。
【００１８】
クライアントＰＣ１２０ａ、１２０ｂは、ユーザの操作を受付け、Windows（登録商標）などのオペレーティングシステム上で動作する文書作成ソフトや表作成ソフトなどのアプリケーションを用いて様々な文書データを作成し、追加・修正することができるＰＣ（パーソナルコンピュータ）であり、情報処理装置である。例えば、クライアントＰＣ１２０ａや１２０ｂには、プリンタＡ１３０ａ、プリンタＢ１３０ｂで、印刷するためのプリンタプログラムがインストールされており、ユーザがアプリケーション上で操作し、プリンタを選択することで、選択されたプリンタに対応するプリンタプログラムが起動し、プリンタＡ１３０ａまたはプリンタＢ１３０ｂで、ユーザが希望する文書データを印刷することができる。また、クライアントＰＣ１２０ａ、１２０ｂには、印刷データ取得プログラムがインストールされており、印刷データ取得プログラムは、印刷データがどのプリンタで印刷される場合であっても、印刷処理される途中で印刷データを取得し、取得した印刷データを印刷データ管理サーバ１１０へと送る。なお、クライアントＰＣ（情報処理装置）は、二台に限らず、複数台がネットワークに接続される。
【００１９】
プリンタＡ１３０ａ、プリンタＢ１３０ｂは、クライアントＰＣにおいて印刷指示を受けた文書データを印刷データとして受信し、印刷出力する。なお、プリンタとしては、プリンタ単体の機能を有する装置のみならず、コピー機や、ＦＡＸ装置などの複数の機能を有する装置であってもよい。
【００２０】
図２は、本発明にかかるクライアントＰＣ１２０のハードウェア構成図の一例を示す図面である。図２において、クライアントＰＣ１２０を構成する情報処理装置は、それぞれバスで相互に接続されているＣＰＵ２１１、ＲＯＭ２１２、ＲＡＭ２１３、外部インターフェース２１４、通信インターフェース２１５、入出力インターフェース２１６、記憶装置２１７を有する。ＣＰＵ２１１は、アプリケーション２３０、オペレーティングシステム（ＯＳ）２４０、プリンタプログラム２５０、印刷データ取得プログラム２６０を記憶装置２１７から読み出し、実行する。
【００２１】
ＲＯＭ２１２は、例えばＢＩＯＳやスタートプログラムが記憶されており、ＲＡＭ２１３は、作業メモリとして必要なデータを一時保管するメモリとして、ＣＰＵが各処理を実行する場合に動作する。
【００２２】
外部インターフェース２１４は、ＵＳＢケーブルや記憶媒体２１８を装着するためのインターフェースである。記憶媒体２１８は、例えば、ＵＳＢメモリや光ディスクなどの記録媒体である。通信インターフェース２１５は、ＬＡＮカードやインターネットケーブルを接続するためのインターフェースであり、ネットワーク１００を介してプリンタ１３０や印刷データ管理サーバ１１０と接続されている。ＣＰＵ２１１からの指示により、印刷データをプリンタ１３０や印刷データ管理サーバ１１０へ送信する。
【００２３】
入出力インターフェース２１６は、マウス２１９、キーボード２２０、ディスプレイ２２１など、ユーザからの操作指示を受け付けたり、操作指示に基づく処理結果を出力したりするインターフェースである。なお、これらに限らず、タッチパネルや、スピーカ、マイクなどを接続してもよい。
【００２４】
記憶装置２１７は、ハードディスクやフラッシュメモリであり、アプリケーション２３０、オペレーティングシステム２４０、プリンタプログラム２５０、印刷データ取得プログラム２６０を記憶している。アプリケーション２３０は、文書作成ソフト、表計算ソフト、プレゼンテーション作成ソフトなどのソフトウェアプログラムである。オペレーティングシステム２４０は、ＯＳとも言われ、Windows（登録商標）や、Linux（登録商標）などである。プリンタプログラム２５０は、文書データ等の電子的なデータをプリンタで印刷するためのプログラムであって、接続されているプリンタ各々のプリンタプログラムが記憶されている。印刷データ取得プログラム２６０は、本発明に係るプログラムであって、アプリケーションから印刷指示されたデータについてどのプリンタで印刷される場合であっても、スプールデータを取得して印刷データとテキスト情報、データの属性情報を取得するプログラムである。
【００２５】
記憶媒体２１８としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリなどのリムーバブルメディアがある。これらのリムーバブルメディアに印刷データ取得プログラムが記憶され、または図示されないサーバからダウンロードする態様で、印刷データ取得プログラムは配布され、記憶装置２１７に記憶され、ＣＰＵ２１１で実行することで、各種の機能を実行させる。
【００２６】
図３は、本発明における印刷データ取得プログラムの機能ブロック図である。図３に示すように、印刷データ取得プログラム２６０は、スプールデータ形式指定部２６１、スプールデータ取得部２６２、テキスト抽出部２６３、スプールデータ変換部２６４、印刷データ送信制御部２６５、レジストリ書き込み部２６６、関数書換部２６７を有している。
【００２７】
スプールデータ形式指定部２６１は、アプリケーションで作成されたデータについて、印刷指示があるとそのデータのスプールデータ形式を、所望のスプールデータ形式となるように指定された出力先のプリンタのプリンタドライバ内で指定する。つまり、個々のプリンタドライバが設定しているスプールデータ形式とは無関係に、強制的に印刷データ取得プログラムが所望するスプールデータ形式を指定する。本発明では、スプールデータ形式をＥＭＦデータ形式として、指定された出力先のプリンタドライバ内で指定する。ここでは、ＥＭＦデータ形式をとしているが、ＥＭＦに限らず、プリンタの機種に依存しない、つまり、プリンタに処理を依存しないデータ形式であって指定されたプリンタドライバが処理できるデータ形式であればどんなスプールデータ形式でもよい。スプールデータ形式指定部２６１は、アプリケーションが印刷指示を受けると関数アドレスを書換えることによってどんなプリンタに印刷指示がなされた場合であっても必ずスプールデータ形式指定部２６１が呼び出される。また、スプールデータ形式指定部２６１は、ＥＭＦデータ形式をプリンタドライバ内で指定すると、それをＧＤＩへ返す。スプールデータ形式指定部２６１は、ＥＭＦデータをプリンタドライバ内で設定する以外は、ＧＤＩとプリンタドライバとのやり取りを仲介する。なお、ＸＰＳスプールにも対応する場合、スプールデータ形式指定部２６１は、ＧＤＩでの印刷処理の場合にのみ、スプールデータ形式を指定するため、ＸＰＳスプールについては、何ら処理を行わない。
【００２８】
スプールデータ取得部２６２は、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とをスプーラから取得する。具体的には、本来、スプーラからプリントプロセッサへ送出されるスプールファイルを、スプールファイルと同時に送出されるスプールデータの属性情報とともに、スプールデータ取得部２６２が取得する。スプーラからプリントプロセッサにアクセスする関数アドレスをスプールデータ取得部ヘアクセスするように関数アドレスを書き換えることで、スプールデータ取得部２６２がスプールデータ及びスプールデータの属性情報を取得している。なお、スプールデータ取得部２６２は、スプールデータと属性情報を取得する以外は、プリントプロセッサとスプーラとのやり取りを仲介する。属性情報とは、印刷されるデータのファイル名やユーザ名、マシン名、印刷日時などを含む情報であって、スプーラからスプールデータとともに取得できる情報であって、ＸＭＬデータ形式などでメタファイルとして提供される。また、スプールデータ取得部２６２は、受信したスプールデータのスプールデータ形式を判別する。具体的には、指定したスプールデータ形式（例えば、ＥＭＦデータ）となっているか、判別する。ＥＭＦデータであるかどうかは、データフォーマットをチェックすることで判別する。また、ＸＰＳデータにも対応する場合、ＸＰＳデータで有るかどうかは、ＸＰＳデータとして読み込んでみて、データを開くことができるかどうかで判別する。
【００２９】
テキスト抽出部２６３は、スプールデータ取得部２６２が取得したスプールデータから、テキスト情報を抽出する。テキスト抽出部２６３は、スプールデータに含まれるテキスト情報だけでなく、画像データを抽出してもよい。なお、スプールデータだけでなく、属性情報からテキスト情報を取り出すように構成してもよい。テキスト抽出部２６３は、スプールデータ取得部２６２が判別したスプールデータ形式に従い、ＥＭＦデータであれば、ＥＭＦデータからのテキストデータ抽出処理を行い、ＸＰＳデータであれば、ＸＰＳデータからのテキストデータ抽出処理を行う。
【００３０】
スプールデータ変換部２６４は、スプールデータ取得部２６２が取得したスプールデータを所定のデータ形式に変換する。スプールデータは、印刷指示を受けたデータの印刷処理の途中で生成されるデータであるため、他の情報処理装置で、元の文書データを文字化けすることなく再現できない場合がある。このため、スプールデータ変換部２６４において、取得したスプールデータ（例えば、ＥＭＦデータ）を所定のデータ形式に変換して印刷データとする。所定のデータ形式とは、どの情報処理装置であっても再現可能なデータ形式、例えば、ＰＤＦやＸＰＳである。なお、ＸＰＳ系の印刷処理においては、スプールデータがＸＰＳであるため、スプールデータを変換しない。
【００３１】
印刷データ送信制御部２６５は、スプールデータ変換部２６４が所定のデータ形式に変換した印刷データがある場合は変換したデータと、テキスト抽出部２６３がスプールデータから抽出したテキストデータと、スプールデータ取得部２６２が取得した属性情報とを、通信インターフェース２１５が印刷データ管理サーバ１１０へとネットワーク１００を介して送信するよう制御する。
【００３２】
レジストリ書き込み部２６６は、アプリケーション起動時にロードされるモジュールに関するレジストリに関数書換部２６７の名前を書き込む。アプリケーション起動時にロードされるモジュールのレジストリに関数書換部の名前を書き込むことで、アプリケーション起動時に確実に関数書換部２６７が起動して、所定の関数アドレスを書き換え、スプーラやＧＤＩがスプールデータ形式指定部２６１やスプールデータ取得部２６２にアクセスする。レジストリ書き込み部２６６は、例えば、Windows（登録商標）がＯＳの場合、APPInit_DLLsレジストリに、関数書換部２６７のプログラムモジュール名（ＤＬＬ名）を書き込む。Windows（登録商標）では、APPInit_DLLsレジストリに登録すると、アプリケーション起動時に強制的にAPPInit_DLLsレジストリに登録されているモジュールをロードする仕様となっているためである。印刷データ取得プログラム２６０が情報処理装置にインストールされる時に、アプリケーション起動時にロードされるモジュールに関するレジストリに、関数書換部２６７のプログラムモジュール名を書き込む。モジュール名を書き込むだけのシンプルな処理なので、プログラムインストール後、すぐに印刷データを管理サーバで取得することができる。
【００３３】
関数書換部２６７は、アプリケーション起動時に印刷に関する所定の関数アドレスを書き換える。関数書換部２６７のプログラムモジュール名がアプリケーション起動時にロードされるレジストリにレジストリ書き込み部２６６によって書き込まれているため、アプリケーション起動時に、そのレジストリがロードされることによって、関数書換のプログラムが起動し、印刷に関する所定の関数アドレスを書き換える。具体的には関数書換部２６７は、ＧＤＩがプリンタドライバをアクセスするための関数アドレスを、スプールデータ形式指定部２６１を呼び出すように関数アドレスを書き換え、また、スプーラがプリントプロセッサを呼び出すための関数アドレスを、印刷データ取得部２６２を呼び出すように関数アドレスを書き換える。こうすることで、印刷データ取得部は、プリントプロセッサへ送出されるスプールデータ及び属性情報をもれなく取得することが可能となる。
【００３４】
（第一の実施の形態）
第一の実施の形態においては、クライアントＰＣにＧＤＩ系のプリンタドライバのみがインストールされている場合を説明する。ＧＤＩ系のプリンタドライバの場合、ＥＭＦ又はＲＡＷスプールでスプールを行う。
図４は、本発明の第一の実施の形態における印刷処理におけるクライアントＰＣの機能ブロック図の一例を示す図面である。クライアントＰＣ１２０は、Windows（登録商標）系のオペレーティングシステム（ＯＳ）２４０上で動作する、アプリケーション２３０、プリンタプログラム２５０、印刷データ取得プログラム２６０を有している。なお、ここでは、プリンタプログラムは、一つしか図示されていないが、複数のプリンタプログラムがインストールされている場合は、クライアントＰＣ１２０は、複数のプリンタプログラムを有することとなる。
【００３５】
アプリケーション２３０は、例えば文書作成ソフトや表作成ソフト、画像作成ソフト、プレゼンテーションソフト、メールソフトなどであって、文字や画像などを有する文書データを作成するプログラムである。ユーザがアプリケーション２３０に対して、文書データの印刷指示を行うことで、印刷データが生成される。
【００３６】
オペレーティングシステム（ＯＳ）は、ＧＤＩ（Graphics Device Interface）２４１、スプーラ２４２、プリントプロバイダ２４３、ランゲージモニタ２４４、ポートモニタ２４５を有する。本発明の印刷データ取得プログラムが情報処理装置にインストールされると、アプリケーションが起動したときに印刷に関する所定の関数アドレスが書き換えられて、ＯＳは、印刷データ取得プログラムのスプールデータ形式指定部２６１やスプールデータ取得部２６２にアクセスすることとなる。従って、ＧＤＩ２４１は、ユーザからアプリケーションが印刷指示を受付けると、アプリケーション２３０に呼び出され、書き換えられた関数アドレスに従ってスプールデータ形式指定部２６１へアクセスする。スプールデータ形式指定部２６１は、プリンタドライバ２５１内のスプールデータ形式を強制的に指定してＧＤＩ２４１へ指定したスプールデータ形式を返すので、ＧＤＩ２４１は、指定されたスプールデータ形式でスプールデータを生成する。
【００３７】
ここで、スプールデータの形式とは、文書データを印刷する場合のスプーリングによって定められるスプールデータ形式であって、ＧＤＩを用いたスプーリングとしては、たとえば、ＲＡＷスプーリングと、ＥＭＦスプーリングがある。ＲＡＷスプーリングとは、プリンタに最適なデータに変換してスプールする方式で、個々のプリンタ機種に依存する形式だが、アプリケーションを印刷処理から解放するまでに時間がかかる方法である。ＥＭＦスプーリングとは、プリンタの機種に依存しないＥＭＦデータでスプールし、その後プリンタ固有の印刷データを生成して印刷する方式であって、アプリケーションを印刷処理から早期に解放することができる方法である。
【００３８】
本発明においては、レジストリ書き込み部２６６が、印刷データ取得プログラムのインストール時にアプリケーション起動時にロードされるモジュールに関するレジストリに関数書換部２６７の名前を書き込んでいる。そのため、アプリケーション起動時に、関数書換部２６７がＧＤＩ２４１がプリンタドライバ２５１を呼び出す関数アドレスをすべてスプールデータ形式指定部２６１を呼び出すように書き換えている。従って、必ずスプールデータ形式指定部２６１が呼び出され、スプールデータ形式を例えば、ＥＭＦデータをプリンタドライバ内に指定してＧＤＩ２４１に返すため、どのプリンタで印刷する場合であっても、スプールデータ形式は、スプールデータ形式指定部２６１が指定したスプールデータ形式となる。ＧＤＩ２４１は、指定されたスプールデータ形式（例えば、ＥＭＦデータ）でスプールデータを生成してスプーラ２４２へ送出する。
【００３９】
スプーラ２４２は、文書データのスプールデータがすべてスプールされると、指定されたプリンタのプリントプロセッサへデスプールすることを伝える。このとき、どのプリンタのプリントプロセッサでスプールするときであっても、関数書換部２６７が、アプリケーション起動時に、プリントプロセッサへアクセスする関数アドレスをスプールデータ取得部２６２へアクセスするように書き換えているため、スプーラ２４２は、スプールデータ取得部２６２へ常にアクセスすることになる。そして、スプーラ２４２が指定されたプリンタのプリントプロセッサへ送出したスプールデータと属性情報とを、スプールデータ取得部２６２が取得し、その後、スプールデータ取得部２６２は、指定されたプリンタのプリントプロセッサへスプールデータ及び属性情報を送出する。
【００４０】
プリントプロバイダ２４３は、印刷データの出力先を切り替える処理を行う。例えば、指定されているプリンタがローカルプリンタである場合は、ローカルプリンタへ出力するよう設定し、ネットワークで共有されたプリンタである場合は、ネットワーク共有プリンタへ出力するよう設定する。このプリントプロバイダ２４３の処理は、スプーラ２４２からスプールデータが送出され、プリントプロセッサ２５２でスプールデータが再生され、ＧＤＩ２４１で再生されたスプールデータが描画され、プリンタドライバ２５１でプリンタ機種依存のデータ形式（ＲＡＷデータ）に変換処理されたあとに行われる。
【００４１】
ランゲージモニタ２４４は、プリンタとの間でプリントステータスデータを送受信する。また必要があれば、プリンタジョブのコマンド制御などの処理を印刷データに対して行う。ポートモニタ２４５は、プリンタポートの種類（ＵＳＢ、ＴＣＰ／ＩＰなど）に応じて、印刷データに対し、出力処理を行う。
【００４２】
スプールファイル３００は、ＧＤＩ２４１によって生成されるデータであって、スプールデータと属性情報データで構成される。スプールデータは、印刷対象の文書データのデータであり、属性情報データは、印刷される文書データに関する属性情報、例えば、印刷日時や、文書データのファイル名、ユーザ名などが含まれる。なお、本実施の形態においては、スプールデータ形式指定部２６１が必ず所定のスプールデータ形式（例えば、ＥＭＦデータ）を指定するため、どのプリンタであっても、スプールデータ形式指定部２６１が指定したスプールデータ形式でスプールされる。
【００４３】
印刷データ取得プログラム２６０は、スプールデータ形式指定部２６１、スプールデータ取得部２６２、テキスト抽出部２６３、スプールデータ変換部２６４、印刷データ送信制御部２６５を有する。印刷処理の理解を容易にするため、レジストリ書込み部２６６と関数書換部２６７を図示していないが、これらも、クライアントＰＣ２６０に印刷データ取得プログラム２６０の一部としてインストールされている。印刷データ取得プログラム２６０がインストールされた時に、レジストリ書き込み部２６６が、アプリケーション起動時にロードされるモジュールに関するレジストリに、関数書換部２６７の名前を書き込んでいる。スプールデータ形式指定部２６１は、アプリケーション起動時に関数書換部２６７が、所定の印刷に関する関数アドレスを書き換えているため、ＧＤＩ２４１は、スプールデータ形式指定部２６１にアクセスする。スプールデータ形式指定部２６１は、ＧＤＩ２４１がアクセスするはずであった指定されたプリンタのプリンタドライバ内にあるスプールデータ形式を指定するためのビットを、所定のスプールデータ形式を指定するようにして、ＧＤＩ２４１には、指定したスプールデータ形式を返す。スプールデータ形式指定部２６１は、プリンタドライバ内でスプールデータ形式を強制的に指定する。また、ＧＤＩ２４１とプリンタドライバ２５１の間で他の処理がある場合は、スプールデータ形式指定部２６１は、仲介を行う。
【００４４】
スプールデータ取得部２６２は、スプーラ２４２が送出したスプールファイル３００を取得する。アプリケーション起動時に関数書換部２６７によってスプーラ２４２がプリントプロセッサ２５２へスプールファイルを送出するときの関数アドレスが書き換えられているため、どのプリンタが指定されたとしても、スプーラ２４２は、スプールファイル３００を送出するために、スプールデータ取得部２６２へアクセスすることとなる。スプールデータ取得部２６２は、スプールファイル３００に含まれているスプールデータと属性情報とを取得する。スプールデータは、所定のスプールデータ形式で表された文書データである。属性情報は、例えば、印刷日時、印刷される文書データのファイル名、印刷を行ったユーザ名など、印刷を行う文書データに関する情報である。スプールデータ取得部２６２は、スプーラ２４２から送出されるスプールファイル３００を取得する以外は、スプーラ２４２とプリントプロセッサ２５２の間で他の処理がある場合は、仲介のみを行う。スプールデータ取得部２６２は、取得したスプールデータのデータ形式を判別する。具体的には、ＥＭＦのデータフォーマットとなっているかどうか、判別を行う。ＥＭＦデータであることが確認されると、スプールデータ取得部２６２は、取得したスプールデータ（ＥＭＦデータ）及び属性情報を、テキスト抽出部２６３へ送出する。
【００４５】
テキスト抽出部２６３は、スプールデータ取得部２６２が取得したスプールデータからテキストデータを抽出する。テキスト抽出部２６３は、テキスト情報だけでなく、画像データなどもあわせて抽出してもよい。ＥＭＦデータを生成した装置と同じ装置でテキストデータを抽出するため、文字化けなどの問題を生じることなく、確実にテキストデータを抽出できる。
【００４６】
スプールデータ変換部２６４は、スプールデータ取得部２６２が取得したスプールデータを所定のデータ形式に変換する。所定のデータ形式とは例えば、ＰＤＦデータやＸＰＳデータであるが、どの情報処理装置でも、文字化けやエラーが生じないデータ形式であれば、どのようなデータ形式でもよい。スプールデータをこうしたデータ形式に変換してから、印刷データ管理サーバへ送ることで、印刷された文書データの内容及び態様を確実に取得することができる。
【００４７】
印刷データ送信制御部２６５は、印刷データ取得部２６２が取得した属性情報と、テキスト抽出部２６３が抽出したテキスト情報と、スプールデータ変換部が変換した所定のデータ形式による印刷データとを印刷データ管理サーバへとネットワークを介して送信するよう制御する。
【００４８】
プリンタプログラム２５０は、プリンタドライバ２５１とプリントプロセッサ２５２を有する。プリンタドライバ２５１は、印刷データ形式の設定情報を記憶し、プリンタ固有の印刷データを生成する。プリントプロセッサ２５２は、スプーラ２４２から送出された印刷データ（本実施の形態ではＥＭＦデータ）を再生し、たとえば印刷文書のページごとの集約・製本等の編集処理等を行う。
【００４９】
図５は、本発明の第一の実施の形態による印刷処理における印刷データ取得方法を説明するフローチャートの一例である。ユーザが、文書作成ソフトや画像作成ソフトなどのアプリケーションを選択すると、選択されたアプリケーションがクライアントＰＣのＯＳ上で起動する（ステップＳ５０１）。
【００５０】
アプリケーションが起動すると同時に関数書換部２６７が起動し、所定の関数アドレスを書き換える（ステップＳ５０２）。印刷データ取得プログラムがクライアントＰＣにインストールされたときに、レジストリ書き込み部２６６は、関数書換部２６７が、アプリケーションが起動すると同時に起動するように、アプリケーション起動時にロードされるモジュールのレジストリに関数書換部２６７のモジュール名を書き込んでいるためである。具体的には、関数書換部２６７のモジュール名は、APPInit_DLLsレジストリにレジストリ書き込み部２６６によって、印刷データ取得プログラムインストール時に書き込まれる。所定の関数アドレスとは、１つは、ＧＤＩ２４１がスプールデータ形式を問い合わせるためにプリンタドライバ２５１を呼び出す処理に関する関数アドレスであり、例えば、LoadLibrary() APIやDrvEnableDriver()APIといった関数の関数アドレスをプリンタドライバ２５１からスプールデータ形式指定部２６１へと書き換える。もう１つは、スプーラ２４２がスプールファイル３００をプリントプロセッサ２５２へ送出するために呼び出す処理に関する関数アドレスであり、例えば、OpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといった関数の関数アドレスをプリントプロセッサ２５２からスプールデータ取得部２６２へと書き換える。
【００５１】
次に、アプリケーションがユーザからマウスやキーボード等により印刷指示を受ける（ステップＳ５０３）。例えば、ユーザがアプリケーションのメニューから「印刷」を選択し、印刷するプリンタや枚数、出力用紙サイズなどを選択して印刷指示を実行する。次に、アプリケーションが印刷指示を受けるとＧＤＩ２４１は印刷指示対象のプリンタドライバへアクセスするために、レジストリを参照する（ステップＳ５０４）。ＧＤＩ２４１は、指定されたプリンタドライバを使用するために、スプールデータ形式指定部２６１を呼び出す（ステップＳ５０５）。前述したとおり、関数書換部２６７がＧＤＩ２４１からプリンタドライバ２５１へアクセスするための関数アドレス（たとえば、LoadLibrary() APIやDrvEnableDriver()API）をすべてスプールデータ形式指定部２６１へアクセスするように書き換えているため、どのプリンタドライバを呼び出す場合であってもすべてスプールデータ形式指定部２６１が呼び出される。
【００５２】
スプールデータ形式指定部２６１はプリンタドライバ２５１をよびだす（ステップＳ５０６）。ＧＤＩ２４１からの、プリンタドライバの活性化の指令等は、スプールデータ形式指定部２６１を経由して、プリンタドライバ２５１へと伝えられる。また、スプールデータ形式指定部２６１は、プリンタドライバ２５１を呼び出してドライバインターフェースを取得し、ＧＤＩ２４１へはスプールデータ形式指定部２６１の関数アドレスを返す。
【００５３】
スプールデータ形式指定部２６１は、プリンタドライバ２５１にスプール形式指定ビットをＥＭＦに設定しＧＤＩ２４１に返す（ステップＳ５０７）。ドライバインターフェースとしてＧＤＩ２４１に、スプールデータ形式指定部２６１の関数アドレスを返しているため、ＧＤＩ２４１からのスプールデータ形式の問い合わせも、スプールデータ形式指定部２６１が呼び出される。スプールデータ形式指定部２６１は、スプールデータ形式の問い合わせ（具体的には、DrvEnablePDEV()関数）に対し、プリンタドライバ２５１を有効化するためにプリンタドライバ２５１にアクセスし、プリンタドライバ２５１内のスプールデータ形式を決定しているビットを所定のスプールデータ形式（たとえば、ＥＭＦデータ）となるよう、ビットを変更または保持して設定する。そして、スプールデータ形式指定部２５１は、プリンタドライバ内に設定したスプールデータ形式をＧＤＩ２４１に返す。
【００５４】
ＧＤＩ２４１は、ＥＭＦデータのスプールファイルを生成し、スプーラ２４２へ送出する（ステップＳ５０８）。ＧＤＩ２４１は、所定のデータ形式としてたとえばＥＭＦデータが指定されると、印刷指示された文書データのＥＭＦデータを生成してスプーラ２４２へ送出する。
【００５５】
スプーラ２４２は、ＥＭＦデータがスプールされると、スプールデータ取得部２６２を呼び出す（ステップＳ５０９）。どのプリンタが選択されている場合であっても、関数書換部２６７がOpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといった関数の関数アドレスを書き換えているため、スプーラ２４２は、選択されたプリンタのプリントプロセッサではなく、スプールデータ取得部２６２を呼び出す。スプールデータ取得部２５２は、スプーラ２４２からプリントプロセッサ２５２へ送出されるスプールファイル３００を取得する以外は、スプーラ２４２とプリントプロセッサ２６２との間の指令の授受の仲介を行う。
【００５６】
スプールデータ取得部２５２は、ＥＭＦデータ、属性情報を取得する（ステップＳ５１０）。スプールデータ取得部２５２は、スプーラ２４２から送出されたスプールファイル３００に含まれているスプールデータであるＥＭＦデータと印刷指示を受けた文書データの属性情報とを取得する。文書データは、ＥＭＦデータであるが、属性情報は、例えば、ＸＭＬ形式で記述されており、印刷される文書データのファイル名、印刷日時、ユーザ名、マシン名などが含まれている。
【００５７】
ここで、処理が通常の印刷処理と、印刷データを管理するための処理の２つに分かれる。まず、印刷データを管理するための処理を説明する。印刷データを管理するための処理として、スプールデータ取得部２６２は、スプールデータ形式の判別を行う（ステップＳ５１１）。取得したスプールデータは、スプールデータ形式指定部２６１によって指定されたデータ形式、つまりＥＭＦデータになっているはずであるが、ここで判別処理を行う。具体的には、スプールデータ取得部２６２は、取得したスプールデータがＥＭＦデータのデータフォーマットとなっているかどうか、チェックして判別する。ＥＭＦデータであることが確認されると、スプールデータ取得部２６２は、取得したスプールデータ（ＥＭＦデータ）及び属性情報を、テキスト抽出部２６３へ送出し、テキスト抽出部２６３は、スプールデータからテキストデータを抽出する（ステップＳ５１２）。なお、テキスト抽出部２６３は、テキストデータだけでなく、あわせて、画像データも抽出してもよい。
【００５８】
次に、スプールデータ変換部２６４は、スプールデータであるＥＭＦデータのデータ形式を所定のデータ形式へ変換する（ステップＳ５１３）。所定のデータ形式とは、どの情報処理装置であっても、安定的に再現することができるデータ形式、例えば、ＰＤＦやＸＰＳである。スプールデータであるＥＭＦデータ形式の場合、フォント情報が含まれていないため、ＥＭＦデータを生成した装置以外の装置でＥＭＦデータを開いた場合、文字化けしてしまい、文書データの内容が確認できない場合が生じるため、ここで、データ形式を変換する。変換されたデータは、文書データの印刷データとして印刷データ管理サーバへ送信され、保存される。
【００５９】
そして、スプールデータ変換部２６４が変換した印刷データ、テキスト抽出部２６３が抽出したテキストデータ、スプールデータ取得部２６２が取得した属性情報は印刷データ送信制御部２６５へそれぞれ送信される（ステップＳ５１４）。ここで、スプールデータ取得部２６２は、取得したすべての属性情報ではなく、所定の項目のみ、例えば、ユーザ名とファイル名、印刷日時など、を抽出して印刷データ送信制御部２６５へ送信してもよい。属性情報には、データ量などかなり細かな情報まで含まれるため、所定の項目のみを抽出するようにすることで、送信データ量を削減することができる。
【００６０】
印刷データ送信制御部２６５は、印刷データ、テキスト情報及び属性情報を受領したかどうか、常に監視しており、印刷データ、テキスト情報、及び属性情報すべてを受領したことを検出すると、印刷データ管理サーバ１１０への送信を制御する（ステップＳ５１５）。
【００６１】
次に、通常の印刷処理について説明する。スプールデータ取得部２６２は、スプールデータ及びその属性情報を取得後、プリントプロセッサ２５２を呼び出す（ステップＳ５１６）。スプーラ２４２は、プリントプロセッサ２５２を呼び出すために、スプールデータ取得部２６２を呼び出しているため、スプールデータ取得部２６２は、印刷処理を正常に継続させるために、プリントプロセッサ２５２を呼び出す。
【００６２】
スプーラ２４２が送出したスプールファイル３００は、スプールデータ取得部２６２からそのままプリントプロセッサ２５２へ送出され、プリントプロセッサ２５２で必要な処理がある場合は、処理が行われる。例えば、ページごとの集約や製本処理などである。プリントプロセッサ２５２による処理後、プリントプロセッサ２５２によってＧＤＩ２４１が呼び出され（ステップＳ５１７）、処理後のデータがＧＤＩ２４１へ送出される。
【００６３】
ＧＤＩ２４１は、受領したＥＭＦデータを再生し（ステップＳ５１８）、プリンタデバイスコンテキストへ描画を行う。その後、ＧＤＩ２４１は、プリンタドライバで処理をさせるためにスプールデータ形式指定部２６１を呼び出す。スプールデータ形式指定部２６１は、プリンタドライバ２５１を呼び出し、プリンタドライバ２５１は、プリンタ固有の印刷データ（ＲＡＷデータ）を生成する（ステップＳ５１９）。このとき、スプールデータ形式指定部２６１は、特にプリンタドライバの処理結果を変更する等の処理は行わず、プリンタドライバのインターフェースとしてＧＤＩ２４１とのやり取りの仲介を行う。
【００６４】
プリントプロバイダ２４３は、必要があれば、印刷データの出力先を切り替える処理などを行う（ステップＳ５２０）。また、ランゲージモニタ２４４は、プリントプロバイダでの処理後、必要があれば、印刷データへ処理を行う（ステップＳ５２１）。ポートモニタ２４５は、プリンタポートの種類（ＵＳＢ、ＴＣＰ／ＩＰなど）に応じて、印刷データに対し、出力処理を行う（ステップＳ５２２）。このようにして処理された印刷データは、ネットワークを介して指定されたプリンタへと送られ、プリンタから出力されることとなる。
【００６５】
図６は、本発明における印刷データの属性情報の一例を示す図である。ＥＭＦデータとともにスプーラから取得される属性情報は、印刷データの属性を含むプロパティファイルとして構成されており、例えばXMLデータ形式である。従って、多くの情報が含まれているため、印刷データ取得部２６２は、取得した属性情報のうち、送信データ量を削減するために、いくつかの項目のみを、印刷データ送信制御部２６３へ送出してもよい。印刷データ管理サーバへ送信される属性情報としては、例えば、図６に示すように印刷データが出力されるプリンタ名（LBP5900#3）、印刷される文書データのファイル名（TestDoc.txt）、プリンタのネットワーク上での名前であるプリンタネーム（ここではプリンタ名と同じLBP5900#3）、印刷指示を行ったクライアントＰＣのネットワーク上のマシンネーム（ここでは\\abc-F5522）、クライアントＰＣを使用しているユーザ名（ここではdef）、そして、印刷データのプリンタでの印刷完了時間である印刷ジョブ完了時間（ここでは、2013年4月16日7時51分27秒）である。なお、これらに限定されず、他の項目、例えば、印刷ジョブ開始時間や印刷する文書データの紙サイズ（A4）などを含めてもよい。
【００６６】
図７は、本発明における印刷データ管理サーバの機能ブロックの一例を示す図である。印刷データ管理サーバ１１０は、印刷データ受信部７０１、印刷データ記憶部７０２、トークン解析部７０５、インデックス記憶部７０６、検索部７０７、通知条件設定部７１０、通知部７１１を有する。また、印刷データ記憶部７０２は、属性情報記憶部７０３と印刷データ記憶部７０４を有する。検索部７０７は、検索条件解析部７０８と検索用ページ生成部７０９を有する。
【００６７】
印刷データ受信部７０１は、クライアントＰＣの印刷データ送信制御部２６５の送信制御により送信された印刷データ、テキストデータ及びその属性情報を受信する。印刷データ受信部７０１は、受信した印刷データ、テキストデータ及びその属性情報を、印刷データのファイル、テキストデータのファイル、属性情報のファイルとに分割し、印刷データと属性情報とを印刷データ記憶部７０２に記憶させる。印刷データのファイルは印刷データ記憶部７０４へ、また、属性情報のファイルは属性情報記憶部７０３へと記憶される。また、印刷データ受信部７０１は、トークン解析部７０５へテキストデータと属性情報とを送出する。
【００６８】
印刷データ記憶部７０２は、属性情報記憶部７０３と印刷データ記憶部７０４を有している。印刷データ記憶部７０２は、印刷データ受信部７０１が受信した印刷データ（例えば、ＰＤＦデータ）及び属性情報データとを、それぞれ印刷データ記憶部７０４と属性情報記憶部７０３へ記憶している。このとき、印刷データ記憶部７０２は、印刷データとそれに対応する属性情報とを、一方から他方を取得できるよう、互いに関連付けて記憶するようにする。例えば、印刷データと属性情報とに同じＩＤ番号を付与し、それぞれＩＤ番号とともに属性情報記憶部７０３と印刷データ記憶部７０４へ記憶する。
【００６９】
トークン解析部７０５は、クライアントＰＣから印刷データ受信部７０１へ送られてきたテキストデータ及び属性情報のデータのトークン解析を行うことでインデックスデータを生成する。具体的には、テキストデータから全文検索を高速かつ容易に行えるよう、トークン（単語）を抽出する処理を行う。ここで、トークン解析部７０５は印刷データ受信部７０１が受信するとトークン解析を行う構成で説明したが、テキストデータをいったんインデックス記憶部７０７へ記憶し、適時トークン解析部７０６が抽出してトークン解析するように構成してもよい。
【００７０】
インデックス記憶部７０６は、印刷データ及び属性情報のテキストデータとトークン解析により生成されたインデックスデータを記憶している。インデックス記憶部７０６は、もとの印刷データ及びその属性情報と互いに対応づけられるよう、属性情報記憶部７０３と印刷データ記憶部７０４と関連づけられている。
【００７１】
検索部７０７は、印刷データ管理サーバに記憶されている大量の印刷データ及びその属性情報から、所望のデータを抽出するための検索ページを提供する。例えば、検索語を入力することが可能なＷｅｂの検索ページを提供し、ユーザがキーワードなどを入力することで希望する印刷データを抽出できるようにする。検索部７０７は、検索条件解析部７０８と検索用ページ生成部７０９を有している。検索条件解析部７０８は、検索ページに入力された検索条件を解析し、インデックス記憶部７０６のインデックスデータに基づいて、該当する印刷データを検索する。検索用ページ生成部７０９は、記憶されている印刷データ及び属性情報の検索サービスをユーザへ提供するために検索条件を入力するための検索用ページを生成する。検索用ページは、例えば、ネットワークを経由してＷｅｂページで提供される。検索用ページ生成部７０９は、入力された検索条件に合致する印刷データ及び属性情報を検索条件解析部７０８が抽出すると、それらを一覧表として表示させたり、印刷データの内容や属性情報を表示させる。
【００７２】
通知条件設定部７１０は、所定の通知先に通知する場合の通知条件と通知先と対応付けて設定している。通知条件とは、所定の条件に合った印刷データや属性情報があった場合に所定の通知先に通知する条件である。所定のキーワードを含む印刷データや、所定の日時に印刷された印刷データ等を抽出するよう、通知条件として設定できる。例えば、「社外秘」「Confidential」の語を含む印刷データを検知したときに、所定のメールアドレスへ通知するよう、設定することができる。通知条件の設定は、所定フォームに記入して、印刷データ管理サーバに送信する方法、検索ページから通知条件の設定をする方法、通知条件設定のｗｅｂページから設定する方法、その他どのような方法であってもかまわない。一例においては、通知条件設定部７１０に設定された条件を満たす印刷ページ又は属性情報があるかどうかは、新たな印刷データを受信し、印刷データが印刷データ記憶部７０２に記憶され、トークン解析部７０５において、テキストデータがトークン解析されるタイミングで、検索され、通知条件に合う印刷データが検出されると通知条件設定部にその旨が通知される。別の例にあっては、通知条件が新たに設定されると、通知条件設定部７１０は、所定時間ごとにインデックス記憶部７０６を検索し、通知条件に合致する印刷データを検知するよう構成してもよい。
【００７３】
通知部７１１は、通知条件設定部７１０に設定された通知条件に合致した印刷データが検知されたこと及び通知先が通知条件設定部７１０から伝えられると、所定の通知先に、通知を行う。通知方法は、設定された通知先へのメール送信、設定された通知先への自動コール等、どのような方法であってもかまわない。
【００７４】
なお、図７においては、印刷データ管理サーバ１１０は、一つのサーバ装置で構成されるように図示されているが、分散する複数のサーバで構成してもよいことは当然である。
【００７５】
（第二の実施の形態）
第二の実施の形態においては、クライアントＰＣにＧＤＩ系のプリンタドライバとＸＰＳ系のプリンタドライバとがインストールされている場合を説明する。ＧＤＩ系のプリンタドライバの場合、ＥＭＦ又はＲＡＷスプールでスプールを行うが、ＸＰＳ系のプリンタドライバは、ＸＰＳでスプールを行う。なお、第一の実施の形態と同様の点、つまり、ＧＤＩ２４１を経由してプリンタドライバ（ＧＤＩドライバ）２５１を用いて印刷する処理については説明を省略する。
図８は、本発明の第二の実施の形態での印刷処理におけるクライアントＰＣの機能ブロック図の一例を示す図面である。第一の実施の形態と同様に、クライアントＰＣ１２０は、Windows（登録商標）系のオペレーティングシステム（ＯＳ）２４０上で動作する、アプリケーション２３０、プリンタプログラム２５０、印刷データ取得プログラム２６０、を有している。ここで、プリンタプログラム２５０のなかに、プリンタドライバ（ＧＤＩドライバ）２５１と、プリンタドライバ（Ｆｉｌｔｅｒドライバ）２８２が一つずつ図示されているが、ＧＤＩドライバのプリンタドライバが複数、Ｆｉｌｔｅｒドライバが複数インストールされていてもよい。
【００７６】
第二の実施の形態において、オペレーティングシステム（ＯＳ）２４０は、ＧＤＩ２４１、スプーラ２４２、プリントプロバイダ２４３、ランゲージモニタ２４４、ポートモニタ２４５と、Filter Pipeline Manager２８１を有している。Filter Pipeline Manager２８１は、ＸＰＳスプール形式による印刷処理において用いられ、ＸＰＳスプールデータを生成する。アプリケーション２３０がユーザから印刷指示を受けるとき、印刷するプリンタを選択する。このときに、選択されたプリンタドライバがＸＰＳ系のプリンタドライバである場合、Filter Pipeline Manager２８１がアプリケーションに呼び出される。関数書換部２６７は、ＧＤＩ２４１がプリンタドライバ２５１を呼び出す関数アドレスのみを、スプールデータ形式指定部２６１を呼び出すように書き換えているため、Filter Pipeline Manager２８１は、スプールデータ形式指定部２６１を呼び出すことなく、プリンタドライバ（Ｆｉｌｔｅｒドライバ）２８２を呼び出す。なぜなら、ＸＰＳ系の印刷処理の場合、出力されるスプールデータ形式は、ＸＰＳであるため、どの情報処理装置であっても再現可能であるからである。このため、印刷データ取得プログラムは、ＸＰＳ系のプリンタドライバについては、スプールデータ形式指定部２６１を呼び出すための関数書換を行わず、スプールデータ形式指定部２６１を経由しない。
【００７７】
スプーラ２４２、プリントプロバイダ２４３、ランゲージモニタ２４４、ポートモニタ２４５については、第一の実施の形態と同様であるため、説明を省略する。但し、ＧＤＩ系のプリンタドライバによる印刷処理においては、プリントプロバイダ２４３での処理の後、ランゲージモニタ２４４及びポートモニタ２４５の処理が続くが、ＸＰＳ系のプリンタドライバによる印刷処理においては、プリントプロバイダ２４３での処理の後、ランゲージモニタ２４４は経由せず、ポートモニタ２４５での処理となる。
【００７８】
スプールファイル３００は、ＧＤＩ２４１又はFilter Pipeline Manager２８１によって生成されるデータであって、スプールデータと属性情報データで構成される。なお、本実施の形態においては、スプールデータは、ＥＭＦデータまたはＸＰＳデータとなる。
【００７９】
印刷データ取得プログラム２６０は、スプールデータ形式指定部２６１、スプールデータ取得部２６２、テキスト抽出部２６３、スプールデータ変換部２６４、印刷データ送信制御部２６５を有する。スプールデータ形式指定部２６１は、アプリケーション起動時に関数書換部２６７が、ＧＤＩ２４１がプリンタドライバ２５１を呼び出す関数アドレスのみを、スプールデータ形式指定部２６１を呼び出すように書き換えているため、スプールデータ形式指定部２６１は、ＧＤＩ２４１からアクセスを受けると、印刷指示を受けたプリンタのプリンタドライバ（ＧＤＩドライバ）２５１内にあるスプールデータ形式を指定するためのビットを、所定のスプールデータ形式、例えば、ＥＭＦデータ形式、を指定するようにし、ＧＤＩ２４１には、指定したスプールデータ形式を返す。なお、ＸＰＳ系のプリンタドライバによる印刷処理の場合は、関数書換が行われていないため、スプールデータ形式指定部２６１を経由しない。
【００８０】
スプールデータ取得部２６２は、スプーラ２４２が送出したスプールファイル３００を取得する。スプーラ２４２は、ＧＤＩ系の印刷処理の場合は、スプールデータ形式指定部２６１が指定したスプールデータ形式（例えば、ＥＭＦデータ）と属性情報データを送出し、ＸＰＳ系の印刷処理の場合は、ＸＰＳデータであるスプールデータと属性情報データを送出する。アプリケーション起動時に関数書換部２６７によってスプーラ２４２がプリントプロセッサ２５２へスプールファイルを送出するときの関数アドレスが書き換えられているため、スプーラ２４２は、スプールファイル３００を送出するために、スプールデータ取得部２６２へアクセスする。スプールデータ取得部２６２は、スプールデータがＥＭＦデータ、ＸＰＳデータ、いずれのデータであってもスプーラ２４２から送出されるスプールファイル３００を取得する。そして、取得する以外は、スプーラ２４２とプリントプロセッサ２５２の間で他の処理がある場合は、仲介のみを行う。そして、スプールデータ取得部２６２は、取得したスプールデータのデータ形式を判別する。具体的には、まずＥＭＦのデータフォーマットとなっているかどうか、判別を行い、ＥＭＦデータでない場合、ＸＰＳデータとしてデータを読み込むことができるかで判別を行う。ＥＭＦデータ又はＸＰＳデータであることが確認されると、スプールデータ取得部２６２は、取得したスプールデータ（ＥＭＦデータ又はＸＰＳデータ）及び属性情報を、テキスト抽出部２６３へ送出する。
【００８１】
テキスト抽出部２６３は、スプールデータ取得部２６２が取得したＥＭＦ又はＸＰＳデータであるスプールデータからテキストデータを抽出する。
【００８２】
スプールデータ変換部２６４は、スプールデータ取得部２６２が取得したスプールデータのうち、ＥＭＦデータを所定のデータ形式（例えば、ＰＤＦデータやＸＰＳデータ）へ変換する。なお、ＸＰＳ系の印刷処理においては、スプールデータが既にＸＰＳデータであり、どの情報処理装置でも、文字化けやエラーが生じないデータ形式であるため、スプールデータの変換を要しない。従って、ＸＰＳ系の印刷処理の場合は、スプールデータ変換部２６４を経ずに、印刷データ送信制御部２６５での処理にうつる。
【００８３】
印刷データ送信制御部２６５は、印刷データ取得部２６２が取得した属性情報と、テキスト抽出部２６３が抽出したテキスト情報と、ＸＰＳデータ又は所定のデータ形式による印刷データとを印刷データ管理サーバへとネットワークを介して送信するよう制御する。
【００８４】
プリンタプログラム２５０は、プリンタドライバ（ＧＤＩドライバ）２５１と、プリンタドライバ（Ｆｉｌｔｅｒドライバ）２８２と、プリントプロセッサ２５２を有する。プリンタドライバ（ＧＤＩドライバ）２５１は、ＯＳのＧＤＩ２４１を使って印刷処理を行うプリンタドライバであり、プリンタドライバ（Ｆｉｌｔｅｒドライバ）２８２は、Filter Pipeline Manager２８１を使って印刷処理を行うプリンタドライバである。どちらの種類のプリンタドライバであっても、印刷データ形式の設定情報を記憶し、プリンタ固有の印刷データを生成する。プリントプロセッサ２５２は、スプーラ２４２から送出された印刷データ（ＥＭＦデータ又はＸＰＳデータ）を再生し、たとえば印刷文書のページごとの集約・製本等の編集処理等を行う。
【００８５】
図９は、本発明の第二の実施の形態により印刷処理における印刷データ取得方法を説明するフローチャートの一例である。ユーザが、文書作成ソフトや画像作成ソフトなどのアプリケーションを選択すると、選択されたアプリケーションがクライアントＰＣのＯＳ上で起動する（ステップＳ９０１）。
【００８６】
アプリケーションが起動すると同時に関数書換部２６７が起動し、所定の関数アドレスを書き換える（ステップＳ９０２）。印刷データ取得プログラムがクライアントＰＣにインストールされたときに、レジストリ書込み部２６６が、アプリケーション起動時にロードされるモジュールのレジストリに関数書換部２６７のモジュール名を書き込んでいるため、アプリケーションが起動すると同時に関数書換部２６７が起動して所定の関数アドレスを書き換える。書き換える関数アドレスは、第一の実施の形態と同じである。ＸＰＳ系の印刷処理においては、ＸＰＳでスプールされるため、スプールデータ形式を印刷データ取得プログラムが強制的に指定する必要はなく、また、ＧＤＩ系印刷処理でも、ＸＰＳ系印刷処理でも、スプーラ２４２がスプールファイル３００をプリントプロセッサ２５２へ送出するために呼び出す処理は共通であるため、関数アドレスは同じだからである。従って、ＧＤＩ２４１がスプールデータ形式を問い合わせるためにプリンタドライバ２５１を呼び出す処理に関する関数アドレスである、例えば、LoadLibrary() APIやDrvEnableDriver()APIといった関数の関数アドレスを、プリンタドライバ２５１からスプールデータ形式指定部２６１へと書き換え、スプーラ２４２がスプールファイル３００をプリントプロセッサ２５２へ送出するために呼び出す処理に関する関数アドレス、例えば、OpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといった関数の関数アドレスをプリントプロセッサ２５２からスプールデータ取得部２６２へと書き換える。
【００８７】
次に、アプリケーションがユーザからマウスやキーボード等により印刷指示を受ける（ステップＳ９０３）例えば、ユーザがアプリケーションのメニューから「印刷」を選択し、印刷するプリンタや枚数、出力用紙サイズなどを選択して印刷指示を実行する。このときに、ユーザがＧＤＩ系のプリンタドライバを選択した場合は、第一の実施の形態の図５のステップＳ５０４以降の処理と同じであるため、説明を省略し、ユーザがＸＰＳ系のプリンタドライバを選択した場合について、以下に、説明する。
【００８８】
ユーザがＸＰＳ系のプリンタドライバを選択した場合、Filter Pipeline Manager２８１が呼び出される。Filter Pipeline Manager２８１は、ＸＰＳデータのスプールファイルを生成し、スプーラへ送出する（ステップＳ９０４）。前述したとおり、Filter Pipeline Manager２８１は、ＸＰＳデータのスプールファイルを生成するため、印刷データ取得プログラムは、スプールファイル形式の指定において介入しない。
【００８９】
次に、スプーラ２４２は、ＸＰＳデータがスプールされると、スプールデータ取得部２６２を呼び出す（ステップＳ９０５）。ＸＰＳのプリンタが選択されている場合であっても、関数書換部２６７がOpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといったスプーラがプリンタプロセッサを呼び出す関数の関数アドレスを書き換えているため、スプーラ２４２は、選択されたプリンタのプリントプロセッサではなく、スプールデータ取得部２６２を呼び出す。
【００９０】
スプールデータ取得部２５２は、ＸＰＳデータ、属性情報を取得する（ステップＳ９０６）。スプールデータ取得部２５２は、スプーラ２４２から送出されたスプールファイル３００に含まれているスプールデータであるＸＰＳデータと印刷指示を受けた文書データの属性情報とを取得する。文書データは、ＸＰＳデータであるが、属性情報は、例えば、ＸＭＬ形式で記述されており、印刷される文書データのファイル名、印刷日時、ユーザ名、マシン名などが含まれている。
【００９１】
ここで、第一の実施の形態と同様に、通常の印刷処理と、印刷データを管理するための処理の２つに分かれる。まず、印刷データを管理するための処理を説明する。印刷データを管理するための処理として、スプールデータ取得部２６２は、スプールデータ形式の判別を行う（ステップＳ９０７）。取得したスプールデータは、ＸＰＳデータであるが、ここで判別処理を行う。具体的には、スプールデータ取得部２６２は、取得したスプールデータがＥＭＦデータのデータフォーマットとなっているかどうか、チェックして判別する。ＥＭＦデータでないことを判別すると、次にＸＰＳデータとしてデータの読み込みを行う。ここで、ＸＰＳデータとして読み込むことができれば、ＸＰＳデータであると判別され、読み込み処理ができない場合は、エラーとなり、処理は終了する。ＸＰＳデータと判別されると、スプールデータ取得部２６２は、取得したスプールデータ（ＸＰＳデータ）及び属性情報を、テキスト抽出部２６３へ送出し、テキスト抽出部２６３は、スプールデータからテキストデータを抽出する（ステップＳ９０８）。なお、テキスト抽出部２６３は、テキストデータだけでなく、あわせて、画像データを抽出してもよい。
【００９２】
テキスト抽出部２６３が抽出したテキストデータと、スプールデータ取得部２６２が取得したスプールデータであるＸＰＳデータと、属性情報は印刷データ送信制御部２６５へそれぞれ送信される（ステップＳ９０９）。スプールデータは、すでにＸＰＳデータであるため、スプールデータの変換処理は不要である。ここで、スプールデータ取得部２６２は、取得したすべての属性情報ではなく、所定の項目のみ、例えば、ユーザ名とファイル名、印刷日時など、を抽出して印刷データ送信制御部２６５へ送信してもよい。
【００９３】
印刷データ送信制御部２６５は、ＸＰＳデータである印刷データ、テキスト情報及び属性情報を受領したかどうか、常に監視しており、印刷データ、テキスト情報、及び属性情報すべてを受領したことを検出すると、印刷データ管理サーバ１１０への送信を制御する（ステップＳ９１０）。
【００９４】
次に、通常の印刷処理について説明する。スプールデータ取得部２６２は、スプールデータ及びその属性情報を取得後、プリントプロセッサ２５２を呼び出す（ステップＳ９１１）。スプーラ２４２は、プリントプロセッサ２５２を呼び出すために、スプールデータ取得部２６２を呼び出しているため、スプールデータ取得部２６２は、印刷処理を正常に継続させるために、プリントプロセッサ２５２を呼び出す。
【００９５】
プリントプロセッサ２５２によって、必要な処理が行われた後、プリントプロセッサ２５２は、Filter Pipeline Manager２８１を呼び出す（ステップＳ９１２）。プリントプロセッサ２５２による処理後のデータがFilter Pipeline Manager２８１へ送出される。
【００９６】
Filter Pipeline Manager２８１は、受領したＸＰＳデータを再生し（ステップＳ９１３）、プリンタデバイスコンテキストへ描画を行う。その後、Filter Pipeline Manager２８１は、プリンタドライバ（Ｆｉｌｔｅｒドライバ）２８２を呼び出し、プリンタドライバ（Ｆｉｌｔｅｒドライバ）２８２は、プリンタ固有の印刷データ（ＲＡＷデータ）を生成する（ステップＳ９１４）。
【００９７】
プリントプロバイダ２４３は、必要があれば、印刷データの出力先を切り替える処理などを行う（ステップＳ９１５）。ポートモニタ２４５は、プリンタポートの種類（ＵＳＢ、ＴＣＰ／ＩＰなど）に応じて、印刷データに対し、出力処理を行う（ステップＳ９１６）。このようにして処理された印刷データは、ネットワークを介して指定されたプリンタへと送られ、プリンタから出力されることとなる。
【００９８】
このように、本発明によれば、プリンタがＧＤＩ系であってもＸＰＳ系であっても、いずれの場合にも確実に印刷データの情報を取得することができる。
【符号の説明】
【００９９】
１００  ネットワーク
１１０  印刷データ管理サーバ
１２０  クライアントＰＣ
１３０  プリンタ
【図１】
2017041073.tif 000003
【図２】
2017041073.tif 000004
【図３】
2017041073.tif 000005
【図４】
2017041073.tif 000006
【図５】
2017041073.tif 000007
【図６】
2017041073.tif 000008
【図７】
2017041073.tif 000009
【図８】
2017041073.tif 000010
【図９】
2017041073.tif 000011