JP2017041073A - 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 - Google Patents
印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 Download PDFInfo
- Publication number
- JP2017041073A JP2017041073A JP2015162087A JP2015162087A JP2017041073A JP 2017041073 A JP2017041073 A JP 2017041073A JP 2015162087 A JP2015162087 A JP 2015162087A JP 2015162087 A JP2015162087 A JP 2015162087A JP 2017041073 A JP2017041073 A JP 2017041073A
- Authority
- JP
- Japan
- Prior art keywords
- data
- spool
- print data
- spool data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
【課題】本発明は、印刷された文書データを確実にサーバで収集する印刷データ管理システムに関する。
【解決手段】情報処理装置は、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で指定するスプールデータ形式指定手段と、スプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、取得したスプールデータを所定のデータ形式に変換するスプールデータ変換手段と、所定のデータ形式に変換した印刷データと、テキストデータと、属性情報との送信を制御する送信制御手段とを有し、印刷データ管理サーバは、印刷データと、テキストデータと、属性情報を受信する受信手段と、印刷データと、テキストデータと、属性情報とを記憶する印刷データ記憶手段と、を備える印刷データ管理システムである。
【選択図】図1
【解決手段】情報処理装置は、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で指定するスプールデータ形式指定手段と、スプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、取得したスプールデータを所定のデータ形式に変換するスプールデータ変換手段と、所定のデータ形式に変換した印刷データと、テキストデータと、属性情報との送信を制御する送信制御手段とを有し、印刷データ管理サーバは、印刷データと、テキストデータと、属性情報を受信する受信手段と、印刷データと、テキストデータと、属性情報とを記憶する印刷データ記憶手段と、を備える印刷データ管理システムである。
【選択図】図1
Description
本発明は、印刷された文書データを確実にサーバで収集する印刷データ管理システムに関する。
近年、コンピュータシステムやコンピュータネットワークの進展により、多くの文書が電子データで扱われることが多くなり、機密情報も電子化されてサーバなどに保存されるようになった。企業や官公庁では、機密情報についてパスワードの設定やアクセスできる人間を限定するなど、情報漏えいに対しては対策を講じている。しかし、こうした電子化された機密文書を印刷して持ち出されることがあり、問題となっている。
ところで、特許文献1では、印刷処理がなされた文書データのポストスクリプトイメージデータからファイル名を取得し、記憶されているファイルを読みだして、ポストスクリプトイメージデータとともにサーバへ送り、印刷処理が実行された文書をサーバに登録することが提案されている。
しかし、特許文献1記載の方法では、印刷される文書のどこかに必ずファイル名が記載されている必要があり、またファイル名が記載されていない文書については、印刷処理がされても文書データを取得することができず、すべての印刷データを登録することができないという問題があった。さらに、文書データに必ずファイル名を入れる必要があるため、ユーザの負担も大きい。
また、特許文献1記載の方法では、印刷した日時情報やユーザ名などを取得できないため、実際に印刷されたのか、判別できないという問題があった。また、ユーザがファイル名を文書データに挿入しなければ、データを収集することができないという問題があった。
本発明は、クライアント側のユーザの負担なく、印刷処理された文書を確実にサーバで取得することを目的とする。
本発明における印刷データをプリンタへ出力する情報処理装置にあっては、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御手段と、を有する情報処理装置を提供する。
また、本発明におけるプリンタで印刷する印刷データを出力するコンピュータに適用され、印刷データを取得する印刷データ取得プログラムにあっては、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、取得したスプールデータからテキストデータを抽出するテキスト抽出ステップと、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御ステップとを実行させることを特徴とする印刷データ取得プログラムを提供する。
さらに、本発明におけるプリンタで印刷する印刷データを出力するコンピュータに適用され、印刷データを取得する印刷データ取得方法であって、印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、取得したスプールデータからテキストデータを抽出するテキスト抽出ステップと、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御ステップとを実行させることを特徴とする印刷データ取得方法を提供する。
また、印刷データをプリンタへ出力する情報処理装置と、印刷データを管理する印刷データ管理サーバとを有する印刷データ管理システムであって、情報処理装置は、印刷指示があると印刷指示された文書データのスプールデータ形式を、出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、取得したスプールデータからテキストデータを抽出するテキスト抽出手段と、テキストデータと、属性情報とを少なくとも送信するよう制御する送信制御手段とを有し、印刷データ管理サーバは、印刷データと、テキストデータと、属性情報を受信する受信手段と、印刷データと、テキストデータと、属性情報とを記憶する印刷データ記憶手段と、を備える印刷データ管理システムを提供する。
本発明によれば、アプリケーションで印刷指示がなされるごとにスプーラからスプールデータを取得する構成であるため、ユーザが特別な操作を行うことなく印刷データを収集することができる。また、印刷データの印刷日時やユーザ名などの属性情報を、印刷データに関連付けて記憶することができるため、誰がいつ行った印刷処理なのか、後日検証することができる。
また、本印刷データ取得プログラムは、プリンタの機種に依存することなく、どのプリンタへの印刷処理であっても確実に印刷データを取得することができる。そして取得したスプールデータを所定のデータ形式へ変換し、またテキスト情報を抽出したうえで、所定のデータ形式による印刷データ及びテキスト情報を印刷データ管理サーバへ送信するため、サーバで文字化けなどを起こすことのない、正確な印刷データを管理サーバで取得することができる。
さらに、本発明によれば、アプリケーションを起動したときに印刷取得プログラムも起動する仕組みとしているため、印刷取得プログラムをインストールしてすぐに印刷データを取得することができる。
以下、本発明を実施するための形態について、図面を参照しながら説明する。図1は、本発明における印刷データ管理システムの構成の一例を示す図面である。印刷データ管理システムは、例えば、印刷データ管理サーバ110と、クライアントPC120a、120b、プリンタA130a、プリンタB130bそれぞれは、ネットワーク100で接続されている。ネットワーク100は、有線又は無線を問わず、インターネット、LAN、WANなど、どのようなネットワーク形態であってもよい。
印刷データ管理サーバ110は、各クライアントPCで印刷処理された文書である印刷データを各クライアントPCから受信し、保存、管理するサーバである。クライアントPCから送信された印刷データ、印刷データに含まれるテキスト情報及びその属性情報は、それぞれ関連付けてデータベース等の記憶部へ保存される。なお、印刷データ管理サーバ110は、一つのサーバ装置である必要はなく、複数のサーバに分散して構成されていてもよい。
クライアントPC120a、120bは、ユーザの操作を受付け、Windows(登録商標)などのオペレーティングシステム上で動作する文書作成ソフトや表作成ソフトなどのアプリケーションを用いて様々な文書データを作成し、追加・修正することができるPC(パーソナルコンピュータ)であり、情報処理装置である。例えば、クライアントPC120aや120bには、プリンタA130a、プリンタB130bで、印刷するためのプリンタプログラムがインストールされており、ユーザがアプリケーション上で操作し、プリンタを選択することで、選択されたプリンタに対応するプリンタプログラムが起動し、プリンタA130aまたはプリンタB130bで、ユーザが希望する文書データを印刷することができる。また、クライアントPC120a、120bには、印刷データ取得プログラムがインストールされており、印刷データ取得プログラムは、印刷データがどのプリンタで印刷される場合であっても、印刷処理される途中で印刷データを取得し、取得した印刷データを印刷データ管理サーバ110へと送る。なお、クライアントPC(情報処理装置)は、二台に限らず、複数台がネットワークに接続される。
プリンタA130a、プリンタB130bは、クライアントPCにおいて印刷指示を受けた文書データを印刷データとして受信し、印刷出力する。なお、プリンタとしては、プリンタ単体の機能を有する装置のみならず、コピー機や、FAX装置などの複数の機能を有する装置であってもよい。
図2は、本発明にかかるクライアントPC120のハードウェア構成図の一例を示す図面である。図2において、クライアントPC120を構成する情報処理装置は、それぞれバスで相互に接続されているCPU211、ROM212、RAM213、外部インターフェース214、通信インターフェース215、入出力インターフェース216、記憶装置217を有する。CPU211は、アプリケーション230、オペレーティングシステム(OS)240、プリンタプログラム250、印刷データ取得プログラム260を記憶装置217から読み出し、実行する。
ROM212は、例えばBIOSやスタートプログラムが記憶されており、RAM213は、作業メモリとして必要なデータを一時保管するメモリとして、CPUが各処理を実行する場合に動作する。
外部インターフェース214は、USBケーブルや記憶媒体218を装着するためのインターフェースである。記憶媒体218は、例えば、USBメモリや光ディスクなどの記録媒体である。通信インターフェース215は、LANカードやインターネットケーブルを接続するためのインターフェースであり、ネットワーク100を介してプリンタ130や印刷データ管理サーバ110と接続されている。CPU211からの指示により、印刷データをプリンタ130や印刷データ管理サーバ110へ送信する。
入出力インターフェース216は、マウス219、キーボード220、ディスプレイ221など、ユーザからの操作指示を受け付けたり、操作指示に基づく処理結果を出力したりするインターフェースである。なお、これらに限らず、タッチパネルや、スピーカ、マイクなどを接続してもよい。
記憶装置217は、ハードディスクやフラッシュメモリであり、アプリケーション230、オペレーティングシステム240、プリンタプログラム250、印刷データ取得プログラム260を記憶している。アプリケーション230は、文書作成ソフト、表計算ソフト、プレゼンテーション作成ソフトなどのソフトウェアプログラムである。オペレーティングシステム240は、OSとも言われ、Windows(登録商標)や、Linux(登録商標)などである。プリンタプログラム250は、文書データ等の電子的なデータをプリンタで印刷するためのプログラムであって、接続されているプリンタ各々のプリンタプログラムが記憶されている。印刷データ取得プログラム260は、本発明に係るプログラムであって、アプリケーションから印刷指示されたデータについてどのプリンタで印刷される場合であっても、スプールデータを取得して印刷データとテキスト情報、データの属性情報を取得するプログラムである。
記憶媒体218としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリなどのリムーバブルメディアがある。これらのリムーバブルメディアに印刷データ取得プログラムが記憶され、または図示されないサーバからダウンロードする態様で、印刷データ取得プログラムは配布され、記憶装置217に記憶され、CPU211で実行することで、各種の機能を実行させる。
図3は、本発明における印刷データ取得プログラムの機能ブロック図である。図3に示すように、印刷データ取得プログラム260は、スプールデータ形式指定部261、スプールデータ取得部262、テキスト抽出部263、スプールデータ変換部264、印刷データ送信制御部265、レジストリ書き込み部266、関数書換部267を有している。
スプールデータ形式指定部261は、アプリケーションで作成されたデータについて、印刷指示があるとそのデータのスプールデータ形式を、所望のスプールデータ形式となるように指定された出力先のプリンタのプリンタドライバ内で指定する。つまり、個々のプリンタドライバが設定しているスプールデータ形式とは無関係に、強制的に印刷データ取得プログラムが所望するスプールデータ形式を指定する。本発明では、スプールデータ形式をEMFデータ形式として、指定された出力先のプリンタドライバ内で指定する。ここでは、EMFデータ形式をとしているが、EMFに限らず、プリンタの機種に依存しない、つまり、プリンタに処理を依存しないデータ形式であって指定されたプリンタドライバが処理できるデータ形式であればどんなスプールデータ形式でもよい。スプールデータ形式指定部261は、アプリケーションが印刷指示を受けると関数アドレスを書換えることによってどんなプリンタに印刷指示がなされた場合であっても必ずスプールデータ形式指定部261が呼び出される。また、スプールデータ形式指定部261は、EMFデータ形式をプリンタドライバ内で指定すると、それをGDIへ返す。スプールデータ形式指定部261は、EMFデータをプリンタドライバ内で設定する以外は、GDIとプリンタドライバとのやり取りを仲介する。なお、XPSスプールにも対応する場合、スプールデータ形式指定部261は、GDIでの印刷処理の場合にのみ、スプールデータ形式を指定するため、XPSスプールについては、何ら処理を行わない。
スプールデータ取得部262は、指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とをスプーラから取得する。具体的には、本来、スプーラからプリントプロセッサへ送出されるスプールファイルを、スプールファイルと同時に送出されるスプールデータの属性情報とともに、スプールデータ取得部262が取得する。スプーラからプリントプロセッサにアクセスする関数アドレスをスプールデータ取得部ヘアクセスするように関数アドレスを書き換えることで、スプールデータ取得部262がスプールデータ及びスプールデータの属性情報を取得している。なお、スプールデータ取得部262は、スプールデータと属性情報を取得する以外は、プリントプロセッサとスプーラとのやり取りを仲介する。属性情報とは、印刷されるデータのファイル名やユーザ名、マシン名、印刷日時などを含む情報であって、スプーラからスプールデータとともに取得できる情報であって、XMLデータ形式などでメタファイルとして提供される。また、スプールデータ取得部262は、受信したスプールデータのスプールデータ形式を判別する。具体的には、指定したスプールデータ形式(例えば、EMFデータ)となっているか、判別する。EMFデータであるかどうかは、データフォーマットをチェックすることで判別する。また、XPSデータにも対応する場合、XPSデータで有るかどうかは、XPSデータとして読み込んでみて、データを開くことができるかどうかで判別する。
テキスト抽出部263は、スプールデータ取得部262が取得したスプールデータから、テキスト情報を抽出する。テキスト抽出部263は、スプールデータに含まれるテキスト情報だけでなく、画像データを抽出してもよい。なお、スプールデータだけでなく、属性情報からテキスト情報を取り出すように構成してもよい。テキスト抽出部263は、スプールデータ取得部262が判別したスプールデータ形式に従い、EMFデータであれば、EMFデータからのテキストデータ抽出処理を行い、XPSデータであれば、XPSデータからのテキストデータ抽出処理を行う。
スプールデータ変換部264は、スプールデータ取得部262が取得したスプールデータを所定のデータ形式に変換する。スプールデータは、印刷指示を受けたデータの印刷処理の途中で生成されるデータであるため、他の情報処理装置で、元の文書データを文字化けすることなく再現できない場合がある。このため、スプールデータ変換部264において、取得したスプールデータ(例えば、EMFデータ)を所定のデータ形式に変換して印刷データとする。所定のデータ形式とは、どの情報処理装置であっても再現可能なデータ形式、例えば、PDFやXPSである。なお、XPS系の印刷処理においては、スプールデータがXPSであるため、スプールデータを変換しない。
印刷データ送信制御部265は、スプールデータ変換部264が所定のデータ形式に変換した印刷データがある場合は変換したデータと、テキスト抽出部263がスプールデータから抽出したテキストデータと、スプールデータ取得部262が取得した属性情報とを、通信インターフェース215が印刷データ管理サーバ110へとネットワーク100を介して送信するよう制御する。
レジストリ書き込み部266は、アプリケーション起動時にロードされるモジュールに関するレジストリに関数書換部267の名前を書き込む。アプリケーション起動時にロードされるモジュールのレジストリに関数書換部の名前を書き込むことで、アプリケーション起動時に確実に関数書換部267が起動して、所定の関数アドレスを書き換え、スプーラやGDIがスプールデータ形式指定部261やスプールデータ取得部262にアクセスする。レジストリ書き込み部266は、例えば、Windows(登録商標)がOSの場合、APPInit_DLLsレジストリに、関数書換部267のプログラムモジュール名(DLL名)を書き込む。Windows(登録商標)では、APPInit_DLLsレジストリに登録すると、アプリケーション起動時に強制的にAPPInit_DLLsレジストリに登録されているモジュールをロードする仕様となっているためである。印刷データ取得プログラム260が情報処理装置にインストールされる時に、アプリケーション起動時にロードされるモジュールに関するレジストリに、関数書換部267のプログラムモジュール名を書き込む。モジュール名を書き込むだけのシンプルな処理なので、プログラムインストール後、すぐに印刷データを管理サーバで取得することができる。
関数書換部267は、アプリケーション起動時に印刷に関する所定の関数アドレスを書き換える。関数書換部267のプログラムモジュール名がアプリケーション起動時にロードされるレジストリにレジストリ書き込み部266によって書き込まれているため、アプリケーション起動時に、そのレジストリがロードされることによって、関数書換のプログラムが起動し、印刷に関する所定の関数アドレスを書き換える。具体的には関数書換部267は、GDIがプリンタドライバをアクセスするための関数アドレスを、スプールデータ形式指定部261を呼び出すように関数アドレスを書き換え、また、スプーラがプリントプロセッサを呼び出すための関数アドレスを、印刷データ取得部262を呼び出すように関数アドレスを書き換える。こうすることで、印刷データ取得部は、プリントプロセッサへ送出されるスプールデータ及び属性情報をもれなく取得することが可能となる。
(第一の実施の形態)
第一の実施の形態においては、クライアントPCにGDI系のプリンタドライバのみがインストールされている場合を説明する。GDI系のプリンタドライバの場合、EMF又はRAWスプールでスプールを行う。
図4は、本発明の第一の実施の形態における印刷処理におけるクライアントPCの機能ブロック図の一例を示す図面である。クライアントPC120は、Windows(登録商標)系のオペレーティングシステム(OS)240上で動作する、アプリケーション230、プリンタプログラム250、印刷データ取得プログラム260を有している。なお、ここでは、プリンタプログラムは、一つしか図示されていないが、複数のプリンタプログラムがインストールされている場合は、クライアントPC120は、複数のプリンタプログラムを有することとなる。
第一の実施の形態においては、クライアントPCにGDI系のプリンタドライバのみがインストールされている場合を説明する。GDI系のプリンタドライバの場合、EMF又はRAWスプールでスプールを行う。
図4は、本発明の第一の実施の形態における印刷処理におけるクライアントPCの機能ブロック図の一例を示す図面である。クライアントPC120は、Windows(登録商標)系のオペレーティングシステム(OS)240上で動作する、アプリケーション230、プリンタプログラム250、印刷データ取得プログラム260を有している。なお、ここでは、プリンタプログラムは、一つしか図示されていないが、複数のプリンタプログラムがインストールされている場合は、クライアントPC120は、複数のプリンタプログラムを有することとなる。
アプリケーション230は、例えば文書作成ソフトや表作成ソフト、画像作成ソフト、プレゼンテーションソフト、メールソフトなどであって、文字や画像などを有する文書データを作成するプログラムである。ユーザがアプリケーション230に対して、文書データの印刷指示を行うことで、印刷データが生成される。
オペレーティングシステム(OS)は、GDI(Graphics Device Interface)241、スプーラ242、プリントプロバイダ243、ランゲージモニタ244、ポートモニタ245を有する。本発明の印刷データ取得プログラムが情報処理装置にインストールされると、アプリケーションが起動したときに印刷に関する所定の関数アドレスが書き換えられて、OSは、印刷データ取得プログラムのスプールデータ形式指定部261やスプールデータ取得部262にアクセスすることとなる。従って、GDI241は、ユーザからアプリケーションが印刷指示を受付けると、アプリケーション230に呼び出され、書き換えられた関数アドレスに従ってスプールデータ形式指定部261へアクセスする。スプールデータ形式指定部261は、プリンタドライバ251内のスプールデータ形式を強制的に指定してGDI241へ指定したスプールデータ形式を返すので、GDI241は、指定されたスプールデータ形式でスプールデータを生成する。
ここで、スプールデータの形式とは、文書データを印刷する場合のスプーリングによって定められるスプールデータ形式であって、GDIを用いたスプーリングとしては、たとえば、RAWスプーリングと、EMFスプーリングがある。RAWスプーリングとは、プリンタに最適なデータに変換してスプールする方式で、個々のプリンタ機種に依存する形式だが、アプリケーションを印刷処理から解放するまでに時間がかかる方法である。EMFスプーリングとは、プリンタの機種に依存しないEMFデータでスプールし、その後プリンタ固有の印刷データを生成して印刷する方式であって、アプリケーションを印刷処理から早期に解放することができる方法である。
本発明においては、レジストリ書き込み部266が、印刷データ取得プログラムのインストール時にアプリケーション起動時にロードされるモジュールに関するレジストリに関数書換部267の名前を書き込んでいる。そのため、アプリケーション起動時に、関数書換部267がGDI241がプリンタドライバ251を呼び出す関数アドレスをすべてスプールデータ形式指定部261を呼び出すように書き換えている。従って、必ずスプールデータ形式指定部261が呼び出され、スプールデータ形式を例えば、EMFデータをプリンタドライバ内に指定してGDI241に返すため、どのプリンタで印刷する場合であっても、スプールデータ形式は、スプールデータ形式指定部261が指定したスプールデータ形式となる。GDI241は、指定されたスプールデータ形式(例えば、EMFデータ)でスプールデータを生成してスプーラ242へ送出する。
スプーラ242は、文書データのスプールデータがすべてスプールされると、指定されたプリンタのプリントプロセッサへデスプールすることを伝える。このとき、どのプリンタのプリントプロセッサでスプールするときであっても、関数書換部267が、アプリケーション起動時に、プリントプロセッサへアクセスする関数アドレスをスプールデータ取得部262へアクセスするように書き換えているため、スプーラ242は、スプールデータ取得部262へ常にアクセスすることになる。そして、スプーラ242が指定されたプリンタのプリントプロセッサへ送出したスプールデータと属性情報とを、スプールデータ取得部262が取得し、その後、スプールデータ取得部262は、指定されたプリンタのプリントプロセッサへスプールデータ及び属性情報を送出する。
プリントプロバイダ243は、印刷データの出力先を切り替える処理を行う。例えば、指定されているプリンタがローカルプリンタである場合は、ローカルプリンタへ出力するよう設定し、ネットワークで共有されたプリンタである場合は、ネットワーク共有プリンタへ出力するよう設定する。このプリントプロバイダ243の処理は、スプーラ242からスプールデータが送出され、プリントプロセッサ252でスプールデータが再生され、GDI241で再生されたスプールデータが描画され、プリンタドライバ251でプリンタ機種依存のデータ形式(RAWデータ)に変換処理されたあとに行われる。
ランゲージモニタ244は、プリンタとの間でプリントステータスデータを送受信する。また必要があれば、プリンタジョブのコマンド制御などの処理を印刷データに対して行う。ポートモニタ245は、プリンタポートの種類(USB、TCP/IPなど)に応じて、印刷データに対し、出力処理を行う。
スプールファイル300は、GDI241によって生成されるデータであって、スプールデータと属性情報データで構成される。スプールデータは、印刷対象の文書データのデータであり、属性情報データは、印刷される文書データに関する属性情報、例えば、印刷日時や、文書データのファイル名、ユーザ名などが含まれる。なお、本実施の形態においては、スプールデータ形式指定部261が必ず所定のスプールデータ形式(例えば、EMFデータ)を指定するため、どのプリンタであっても、スプールデータ形式指定部261が指定したスプールデータ形式でスプールされる。
印刷データ取得プログラム260は、スプールデータ形式指定部261、スプールデータ取得部262、テキスト抽出部263、スプールデータ変換部264、印刷データ送信制御部265を有する。印刷処理の理解を容易にするため、レジストリ書込み部266と関数書換部267を図示していないが、これらも、クライアントPC260に印刷データ取得プログラム260の一部としてインストールされている。印刷データ取得プログラム260がインストールされた時に、レジストリ書き込み部266が、アプリケーション起動時にロードされるモジュールに関するレジストリに、関数書換部267の名前を書き込んでいる。スプールデータ形式指定部261は、アプリケーション起動時に関数書換部267が、所定の印刷に関する関数アドレスを書き換えているため、GDI241は、スプールデータ形式指定部261にアクセスする。スプールデータ形式指定部261は、GDI241がアクセスするはずであった指定されたプリンタのプリンタドライバ内にあるスプールデータ形式を指定するためのビットを、所定のスプールデータ形式を指定するようにして、GDI241には、指定したスプールデータ形式を返す。スプールデータ形式指定部261は、プリンタドライバ内でスプールデータ形式を強制的に指定する。また、GDI241とプリンタドライバ251の間で他の処理がある場合は、スプールデータ形式指定部261は、仲介を行う。
スプールデータ取得部262は、スプーラ242が送出したスプールファイル300を取得する。アプリケーション起動時に関数書換部267によってスプーラ242がプリントプロセッサ252へスプールファイルを送出するときの関数アドレスが書き換えられているため、どのプリンタが指定されたとしても、スプーラ242は、スプールファイル300を送出するために、スプールデータ取得部262へアクセスすることとなる。スプールデータ取得部262は、スプールファイル300に含まれているスプールデータと属性情報とを取得する。スプールデータは、所定のスプールデータ形式で表された文書データである。属性情報は、例えば、印刷日時、印刷される文書データのファイル名、印刷を行ったユーザ名など、印刷を行う文書データに関する情報である。スプールデータ取得部262は、スプーラ242から送出されるスプールファイル300を取得する以外は、スプーラ242とプリントプロセッサ252の間で他の処理がある場合は、仲介のみを行う。スプールデータ取得部262は、取得したスプールデータのデータ形式を判別する。具体的には、EMFのデータフォーマットとなっているかどうか、判別を行う。EMFデータであることが確認されると、スプールデータ取得部262は、取得したスプールデータ(EMFデータ)及び属性情報を、テキスト抽出部263へ送出する。
テキスト抽出部263は、スプールデータ取得部262が取得したスプールデータからテキストデータを抽出する。テキスト抽出部263は、テキスト情報だけでなく、画像データなどもあわせて抽出してもよい。EMFデータを生成した装置と同じ装置でテキストデータを抽出するため、文字化けなどの問題を生じることなく、確実にテキストデータを抽出できる。
スプールデータ変換部264は、スプールデータ取得部262が取得したスプールデータを所定のデータ形式に変換する。所定のデータ形式とは例えば、PDFデータやXPSデータであるが、どの情報処理装置でも、文字化けやエラーが生じないデータ形式であれば、どのようなデータ形式でもよい。スプールデータをこうしたデータ形式に変換してから、印刷データ管理サーバへ送ることで、印刷された文書データの内容及び態様を確実に取得することができる。
印刷データ送信制御部265は、印刷データ取得部262が取得した属性情報と、テキスト抽出部263が抽出したテキスト情報と、スプールデータ変換部が変換した所定のデータ形式による印刷データとを印刷データ管理サーバへとネットワークを介して送信するよう制御する。
プリンタプログラム250は、プリンタドライバ251とプリントプロセッサ252を有する。プリンタドライバ251は、印刷データ形式の設定情報を記憶し、プリンタ固有の印刷データを生成する。プリントプロセッサ252は、スプーラ242から送出された印刷データ(本実施の形態ではEMFデータ)を再生し、たとえば印刷文書のページごとの集約・製本等の編集処理等を行う。
図5は、本発明の第一の実施の形態による印刷処理における印刷データ取得方法を説明するフローチャートの一例である。ユーザが、文書作成ソフトや画像作成ソフトなどのアプリケーションを選択すると、選択されたアプリケーションがクライアントPCのOS上で起動する(ステップS501)。
アプリケーションが起動すると同時に関数書換部267が起動し、所定の関数アドレスを書き換える(ステップS502)。印刷データ取得プログラムがクライアントPCにインストールされたときに、レジストリ書き込み部266は、関数書換部267が、アプリケーションが起動すると同時に起動するように、アプリケーション起動時にロードされるモジュールのレジストリに関数書換部267のモジュール名を書き込んでいるためである。具体的には、関数書換部267のモジュール名は、APPInit_DLLsレジストリにレジストリ書き込み部266によって、印刷データ取得プログラムインストール時に書き込まれる。所定の関数アドレスとは、1つは、GDI241がスプールデータ形式を問い合わせるためにプリンタドライバ251を呼び出す処理に関する関数アドレスであり、例えば、LoadLibrary() APIやDrvEnableDriver()APIといった関数の関数アドレスをプリンタドライバ251からスプールデータ形式指定部261へと書き換える。もう1つは、スプーラ242がスプールファイル300をプリントプロセッサ252へ送出するために呼び出す処理に関する関数アドレスであり、例えば、OpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといった関数の関数アドレスをプリントプロセッサ252からスプールデータ取得部262へと書き換える。
次に、アプリケーションがユーザからマウスやキーボード等により印刷指示を受ける(ステップS503)。例えば、ユーザがアプリケーションのメニューから「印刷」を選択し、印刷するプリンタや枚数、出力用紙サイズなどを選択して印刷指示を実行する。次に、アプリケーションが印刷指示を受けるとGDI241は印刷指示対象のプリンタドライバへアクセスするために、レジストリを参照する(ステップS504)。GDI241は、指定されたプリンタドライバを使用するために、スプールデータ形式指定部261を呼び出す(ステップS505)。前述したとおり、関数書換部267がGDI241からプリンタドライバ251へアクセスするための関数アドレス(たとえば、LoadLibrary() APIやDrvEnableDriver()API)をすべてスプールデータ形式指定部261へアクセスするように書き換えているため、どのプリンタドライバを呼び出す場合であってもすべてスプールデータ形式指定部261が呼び出される。
スプールデータ形式指定部261はプリンタドライバ251をよびだす(ステップS506)。GDI241からの、プリンタドライバの活性化の指令等は、スプールデータ形式指定部261を経由して、プリンタドライバ251へと伝えられる。また、スプールデータ形式指定部261は、プリンタドライバ251を呼び出してドライバインターフェースを取得し、GDI241へはスプールデータ形式指定部261の関数アドレスを返す。
スプールデータ形式指定部261は、プリンタドライバ251にスプール形式指定ビットをEMFに設定しGDI241に返す(ステップS507)。ドライバインターフェースとしてGDI241に、スプールデータ形式指定部261の関数アドレスを返しているため、GDI241からのスプールデータ形式の問い合わせも、スプールデータ形式指定部261が呼び出される。スプールデータ形式指定部261は、スプールデータ形式の問い合わせ(具体的には、DrvEnablePDEV()関数)に対し、プリンタドライバ251を有効化するためにプリンタドライバ251にアクセスし、プリンタドライバ251内のスプールデータ形式を決定しているビットを所定のスプールデータ形式(たとえば、EMFデータ)となるよう、ビットを変更または保持して設定する。そして、スプールデータ形式指定部251は、プリンタドライバ内に設定したスプールデータ形式をGDI241に返す。
GDI241は、EMFデータのスプールファイルを生成し、スプーラ242へ送出する(ステップS508)。GDI241は、所定のデータ形式としてたとえばEMFデータが指定されると、印刷指示された文書データのEMFデータを生成してスプーラ242へ送出する。
スプーラ242は、EMFデータがスプールされると、スプールデータ取得部262を呼び出す(ステップS509)。どのプリンタが選択されている場合であっても、関数書換部267がOpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといった関数の関数アドレスを書き換えているため、スプーラ242は、選択されたプリンタのプリントプロセッサではなく、スプールデータ取得部262を呼び出す。スプールデータ取得部252は、スプーラ242からプリントプロセッサ252へ送出されるスプールファイル300を取得する以外は、スプーラ242とプリントプロセッサ262との間の指令の授受の仲介を行う。
スプールデータ取得部252は、EMFデータ、属性情報を取得する(ステップS510)。スプールデータ取得部252は、スプーラ242から送出されたスプールファイル300に含まれているスプールデータであるEMFデータと印刷指示を受けた文書データの属性情報とを取得する。文書データは、EMFデータであるが、属性情報は、例えば、XML形式で記述されており、印刷される文書データのファイル名、印刷日時、ユーザ名、マシン名などが含まれている。
ここで、処理が通常の印刷処理と、印刷データを管理するための処理の2つに分かれる。まず、印刷データを管理するための処理を説明する。印刷データを管理するための処理として、スプールデータ取得部262は、スプールデータ形式の判別を行う(ステップS511)。取得したスプールデータは、スプールデータ形式指定部261によって指定されたデータ形式、つまりEMFデータになっているはずであるが、ここで判別処理を行う。具体的には、スプールデータ取得部262は、取得したスプールデータがEMFデータのデータフォーマットとなっているかどうか、チェックして判別する。EMFデータであることが確認されると、スプールデータ取得部262は、取得したスプールデータ(EMFデータ)及び属性情報を、テキスト抽出部263へ送出し、テキスト抽出部263は、スプールデータからテキストデータを抽出する(ステップS512)。なお、テキスト抽出部263は、テキストデータだけでなく、あわせて、画像データも抽出してもよい。
次に、スプールデータ変換部264は、スプールデータであるEMFデータのデータ形式を所定のデータ形式へ変換する(ステップS513)。所定のデータ形式とは、どの情報処理装置であっても、安定的に再現することができるデータ形式、例えば、PDFやXPSである。スプールデータであるEMFデータ形式の場合、フォント情報が含まれていないため、EMFデータを生成した装置以外の装置でEMFデータを開いた場合、文字化けしてしまい、文書データの内容が確認できない場合が生じるため、ここで、データ形式を変換する。変換されたデータは、文書データの印刷データとして印刷データ管理サーバへ送信され、保存される。
そして、スプールデータ変換部264が変換した印刷データ、テキスト抽出部263が抽出したテキストデータ、スプールデータ取得部262が取得した属性情報は印刷データ送信制御部265へそれぞれ送信される(ステップS514)。ここで、スプールデータ取得部262は、取得したすべての属性情報ではなく、所定の項目のみ、例えば、ユーザ名とファイル名、印刷日時など、を抽出して印刷データ送信制御部265へ送信してもよい。属性情報には、データ量などかなり細かな情報まで含まれるため、所定の項目のみを抽出するようにすることで、送信データ量を削減することができる。
印刷データ送信制御部265は、印刷データ、テキスト情報及び属性情報を受領したかどうか、常に監視しており、印刷データ、テキスト情報、及び属性情報すべてを受領したことを検出すると、印刷データ管理サーバ110への送信を制御する(ステップS515)。
次に、通常の印刷処理について説明する。スプールデータ取得部262は、スプールデータ及びその属性情報を取得後、プリントプロセッサ252を呼び出す(ステップS516)。スプーラ242は、プリントプロセッサ252を呼び出すために、スプールデータ取得部262を呼び出しているため、スプールデータ取得部262は、印刷処理を正常に継続させるために、プリントプロセッサ252を呼び出す。
スプーラ242が送出したスプールファイル300は、スプールデータ取得部262からそのままプリントプロセッサ252へ送出され、プリントプロセッサ252で必要な処理がある場合は、処理が行われる。例えば、ページごとの集約や製本処理などである。プリントプロセッサ252による処理後、プリントプロセッサ252によってGDI241が呼び出され(ステップS517)、処理後のデータがGDI241へ送出される。
GDI241は、受領したEMFデータを再生し(ステップS518)、プリンタデバイスコンテキストへ描画を行う。その後、GDI241は、プリンタドライバで処理をさせるためにスプールデータ形式指定部261を呼び出す。スプールデータ形式指定部261は、プリンタドライバ251を呼び出し、プリンタドライバ251は、プリンタ固有の印刷データ(RAWデータ)を生成する(ステップS519)。このとき、スプールデータ形式指定部261は、特にプリンタドライバの処理結果を変更する等の処理は行わず、プリンタドライバのインターフェースとしてGDI241とのやり取りの仲介を行う。
プリントプロバイダ243は、必要があれば、印刷データの出力先を切り替える処理などを行う(ステップS520)。また、ランゲージモニタ244は、プリントプロバイダでの処理後、必要があれば、印刷データへ処理を行う(ステップS521)。ポートモニタ245は、プリンタポートの種類(USB、TCP/IPなど)に応じて、印刷データに対し、出力処理を行う(ステップS522)。このようにして処理された印刷データは、ネットワークを介して指定されたプリンタへと送られ、プリンタから出力されることとなる。
図6は、本発明における印刷データの属性情報の一例を示す図である。EMFデータとともにスプーラから取得される属性情報は、印刷データの属性を含むプロパティファイルとして構成されており、例えばXMLデータ形式である。従って、多くの情報が含まれているため、印刷データ取得部262は、取得した属性情報のうち、送信データ量を削減するために、いくつかの項目のみを、印刷データ送信制御部263へ送出してもよい。印刷データ管理サーバへ送信される属性情報としては、例えば、図6に示すように印刷データが出力されるプリンタ名(LBP5900#3)、印刷される文書データのファイル名(TestDoc.txt)、プリンタのネットワーク上での名前であるプリンタネーム(ここではプリンタ名と同じLBP5900#3)、印刷指示を行ったクライアントPCのネットワーク上のマシンネーム(ここでは\\abc-F5522)、クライアントPCを使用しているユーザ名(ここではdef)、そして、印刷データのプリンタでの印刷完了時間である印刷ジョブ完了時間(ここでは、2013年4月16日7時51分27秒)である。なお、これらに限定されず、他の項目、例えば、印刷ジョブ開始時間や印刷する文書データの紙サイズ(A4)などを含めてもよい。
図7は、本発明における印刷データ管理サーバの機能ブロックの一例を示す図である。印刷データ管理サーバ110は、印刷データ受信部701、印刷データ記憶部702、トークン解析部705、インデックス記憶部706、検索部707、通知条件設定部710、通知部711を有する。また、印刷データ記憶部702は、属性情報記憶部703と印刷データ記憶部704を有する。検索部707は、検索条件解析部708と検索用ページ生成部709を有する。
印刷データ受信部701は、クライアントPCの印刷データ送信制御部265の送信制御により送信された印刷データ、テキストデータ及びその属性情報を受信する。印刷データ受信部701は、受信した印刷データ、テキストデータ及びその属性情報を、印刷データのファイル、テキストデータのファイル、属性情報のファイルとに分割し、印刷データと属性情報とを印刷データ記憶部702に記憶させる。印刷データのファイルは印刷データ記憶部704へ、また、属性情報のファイルは属性情報記憶部703へと記憶される。また、印刷データ受信部701は、トークン解析部705へテキストデータと属性情報とを送出する。
印刷データ記憶部702は、属性情報記憶部703と印刷データ記憶部704を有している。印刷データ記憶部702は、印刷データ受信部701が受信した印刷データ(例えば、PDFデータ)及び属性情報データとを、それぞれ印刷データ記憶部704と属性情報記憶部703へ記憶している。このとき、印刷データ記憶部702は、印刷データとそれに対応する属性情報とを、一方から他方を取得できるよう、互いに関連付けて記憶するようにする。例えば、印刷データと属性情報とに同じID番号を付与し、それぞれID番号とともに属性情報記憶部703と印刷データ記憶部704へ記憶する。
トークン解析部705は、クライアントPCから印刷データ受信部701へ送られてきたテキストデータ及び属性情報のデータのトークン解析を行うことでインデックスデータを生成する。具体的には、テキストデータから全文検索を高速かつ容易に行えるよう、トークン(単語)を抽出する処理を行う。ここで、トークン解析部705は印刷データ受信部701が受信するとトークン解析を行う構成で説明したが、テキストデータをいったんインデックス記憶部707へ記憶し、適時トークン解析部706が抽出してトークン解析するように構成してもよい。
インデックス記憶部706は、印刷データ及び属性情報のテキストデータとトークン解析により生成されたインデックスデータを記憶している。インデックス記憶部706は、もとの印刷データ及びその属性情報と互いに対応づけられるよう、属性情報記憶部703と印刷データ記憶部704と関連づけられている。
検索部707は、印刷データ管理サーバに記憶されている大量の印刷データ及びその属性情報から、所望のデータを抽出するための検索ページを提供する。例えば、検索語を入力することが可能なWebの検索ページを提供し、ユーザがキーワードなどを入力することで希望する印刷データを抽出できるようにする。検索部707は、検索条件解析部708と検索用ページ生成部709を有している。検索条件解析部708は、検索ページに入力された検索条件を解析し、インデックス記憶部706のインデックスデータに基づいて、該当する印刷データを検索する。検索用ページ生成部709は、記憶されている印刷データ及び属性情報の検索サービスをユーザへ提供するために検索条件を入力するための検索用ページを生成する。検索用ページは、例えば、ネットワークを経由してWebページで提供される。検索用ページ生成部709は、入力された検索条件に合致する印刷データ及び属性情報を検索条件解析部708が抽出すると、それらを一覧表として表示させたり、印刷データの内容や属性情報を表示させる。
通知条件設定部710は、所定の通知先に通知する場合の通知条件と通知先と対応付けて設定している。通知条件とは、所定の条件に合った印刷データや属性情報があった場合に所定の通知先に通知する条件である。所定のキーワードを含む印刷データや、所定の日時に印刷された印刷データ等を抽出するよう、通知条件として設定できる。例えば、「社外秘」「Confidential」の語を含む印刷データを検知したときに、所定のメールアドレスへ通知するよう、設定することができる。通知条件の設定は、所定フォームに記入して、印刷データ管理サーバに送信する方法、検索ページから通知条件の設定をする方法、通知条件設定のwebページから設定する方法、その他どのような方法であってもかまわない。一例においては、通知条件設定部710に設定された条件を満たす印刷ページ又は属性情報があるかどうかは、新たな印刷データを受信し、印刷データが印刷データ記憶部702に記憶され、トークン解析部705において、テキストデータがトークン解析されるタイミングで、検索され、通知条件に合う印刷データが検出されると通知条件設定部にその旨が通知される。別の例にあっては、通知条件が新たに設定されると、通知条件設定部710は、所定時間ごとにインデックス記憶部706を検索し、通知条件に合致する印刷データを検知するよう構成してもよい。
通知部711は、通知条件設定部710に設定された通知条件に合致した印刷データが検知されたこと及び通知先が通知条件設定部710から伝えられると、所定の通知先に、通知を行う。通知方法は、設定された通知先へのメール送信、設定された通知先への自動コール等、どのような方法であってもかまわない。
なお、図7においては、印刷データ管理サーバ110は、一つのサーバ装置で構成されるように図示されているが、分散する複数のサーバで構成してもよいことは当然である。
(第二の実施の形態)
第二の実施の形態においては、クライアントPCにGDI系のプリンタドライバとXPS系のプリンタドライバとがインストールされている場合を説明する。GDI系のプリンタドライバの場合、EMF又はRAWスプールでスプールを行うが、XPS系のプリンタドライバは、XPSでスプールを行う。なお、第一の実施の形態と同様の点、つまり、GDI241を経由してプリンタドライバ(GDIドライバ)251を用いて印刷する処理については説明を省略する。
図8は、本発明の第二の実施の形態での印刷処理におけるクライアントPCの機能ブロック図の一例を示す図面である。第一の実施の形態と同様に、クライアントPC120は、Windows(登録商標)系のオペレーティングシステム(OS)240上で動作する、アプリケーション230、プリンタプログラム250、印刷データ取得プログラム260、を有している。ここで、プリンタプログラム250のなかに、プリンタドライバ(GDIドライバ)251と、プリンタドライバ(Filterドライバ)282が一つずつ図示されているが、GDIドライバのプリンタドライバが複数、Filterドライバが複数インストールされていてもよい。
第二の実施の形態においては、クライアントPCにGDI系のプリンタドライバとXPS系のプリンタドライバとがインストールされている場合を説明する。GDI系のプリンタドライバの場合、EMF又はRAWスプールでスプールを行うが、XPS系のプリンタドライバは、XPSでスプールを行う。なお、第一の実施の形態と同様の点、つまり、GDI241を経由してプリンタドライバ(GDIドライバ)251を用いて印刷する処理については説明を省略する。
図8は、本発明の第二の実施の形態での印刷処理におけるクライアントPCの機能ブロック図の一例を示す図面である。第一の実施の形態と同様に、クライアントPC120は、Windows(登録商標)系のオペレーティングシステム(OS)240上で動作する、アプリケーション230、プリンタプログラム250、印刷データ取得プログラム260、を有している。ここで、プリンタプログラム250のなかに、プリンタドライバ(GDIドライバ)251と、プリンタドライバ(Filterドライバ)282が一つずつ図示されているが、GDIドライバのプリンタドライバが複数、Filterドライバが複数インストールされていてもよい。
第二の実施の形態において、オペレーティングシステム(OS)240は、GDI241、スプーラ242、プリントプロバイダ243、ランゲージモニタ244、ポートモニタ245と、Filter Pipeline Manager281を有している。Filter Pipeline Manager281は、XPSスプール形式による印刷処理において用いられ、XPSスプールデータを生成する。アプリケーション230がユーザから印刷指示を受けるとき、印刷するプリンタを選択する。このときに、選択されたプリンタドライバがXPS系のプリンタドライバである場合、Filter Pipeline Manager281がアプリケーションに呼び出される。関数書換部267は、GDI241がプリンタドライバ251を呼び出す関数アドレスのみを、スプールデータ形式指定部261を呼び出すように書き換えているため、Filter Pipeline Manager281は、スプールデータ形式指定部261を呼び出すことなく、プリンタドライバ(Filterドライバ)282を呼び出す。なぜなら、XPS系の印刷処理の場合、出力されるスプールデータ形式は、XPSであるため、どの情報処理装置であっても再現可能であるからである。このため、印刷データ取得プログラムは、XPS系のプリンタドライバについては、スプールデータ形式指定部261を呼び出すための関数書換を行わず、スプールデータ形式指定部261を経由しない。
スプーラ242、プリントプロバイダ243、ランゲージモニタ244、ポートモニタ245については、第一の実施の形態と同様であるため、説明を省略する。但し、GDI系のプリンタドライバによる印刷処理においては、プリントプロバイダ243での処理の後、ランゲージモニタ244及びポートモニタ245の処理が続くが、XPS系のプリンタドライバによる印刷処理においては、プリントプロバイダ243での処理の後、ランゲージモニタ244は経由せず、ポートモニタ245での処理となる。
スプールファイル300は、GDI241又はFilter Pipeline Manager281によって生成されるデータであって、スプールデータと属性情報データで構成される。なお、本実施の形態においては、スプールデータは、EMFデータまたはXPSデータとなる。
印刷データ取得プログラム260は、スプールデータ形式指定部261、スプールデータ取得部262、テキスト抽出部263、スプールデータ変換部264、印刷データ送信制御部265を有する。スプールデータ形式指定部261は、アプリケーション起動時に関数書換部267が、GDI241がプリンタドライバ251を呼び出す関数アドレスのみを、スプールデータ形式指定部261を呼び出すように書き換えているため、スプールデータ形式指定部261は、GDI241からアクセスを受けると、印刷指示を受けたプリンタのプリンタドライバ(GDIドライバ)251内にあるスプールデータ形式を指定するためのビットを、所定のスプールデータ形式、例えば、EMFデータ形式、を指定するようにし、GDI241には、指定したスプールデータ形式を返す。なお、XPS系のプリンタドライバによる印刷処理の場合は、関数書換が行われていないため、スプールデータ形式指定部261を経由しない。
スプールデータ取得部262は、スプーラ242が送出したスプールファイル300を取得する。スプーラ242は、GDI系の印刷処理の場合は、スプールデータ形式指定部261が指定したスプールデータ形式(例えば、EMFデータ)と属性情報データを送出し、XPS系の印刷処理の場合は、XPSデータであるスプールデータと属性情報データを送出する。アプリケーション起動時に関数書換部267によってスプーラ242がプリントプロセッサ252へスプールファイルを送出するときの関数アドレスが書き換えられているため、スプーラ242は、スプールファイル300を送出するために、スプールデータ取得部262へアクセスする。スプールデータ取得部262は、スプールデータがEMFデータ、XPSデータ、いずれのデータであってもスプーラ242から送出されるスプールファイル300を取得する。そして、取得する以外は、スプーラ242とプリントプロセッサ252の間で他の処理がある場合は、仲介のみを行う。そして、スプールデータ取得部262は、取得したスプールデータのデータ形式を判別する。具体的には、まずEMFのデータフォーマットとなっているかどうか、判別を行い、EMFデータでない場合、XPSデータとしてデータを読み込むことができるかで判別を行う。EMFデータ又はXPSデータであることが確認されると、スプールデータ取得部262は、取得したスプールデータ(EMFデータ又はXPSデータ)及び属性情報を、テキスト抽出部263へ送出する。
テキスト抽出部263は、スプールデータ取得部262が取得したEMF又はXPSデータであるスプールデータからテキストデータを抽出する。
スプールデータ変換部264は、スプールデータ取得部262が取得したスプールデータのうち、EMFデータを所定のデータ形式(例えば、PDFデータやXPSデータ)へ変換する。なお、XPS系の印刷処理においては、スプールデータが既にXPSデータであり、どの情報処理装置でも、文字化けやエラーが生じないデータ形式であるため、スプールデータの変換を要しない。従って、XPS系の印刷処理の場合は、スプールデータ変換部264を経ずに、印刷データ送信制御部265での処理にうつる。
印刷データ送信制御部265は、印刷データ取得部262が取得した属性情報と、テキスト抽出部263が抽出したテキスト情報と、XPSデータ又は所定のデータ形式による印刷データとを印刷データ管理サーバへとネットワークを介して送信するよう制御する。
プリンタプログラム250は、プリンタドライバ(GDIドライバ)251と、プリンタドライバ(Filterドライバ)282と、プリントプロセッサ252を有する。プリンタドライバ(GDIドライバ)251は、OSのGDI241を使って印刷処理を行うプリンタドライバであり、プリンタドライバ(Filterドライバ)282は、Filter Pipeline Manager281を使って印刷処理を行うプリンタドライバである。どちらの種類のプリンタドライバであっても、印刷データ形式の設定情報を記憶し、プリンタ固有の印刷データを生成する。プリントプロセッサ252は、スプーラ242から送出された印刷データ(EMFデータ又はXPSデータ)を再生し、たとえば印刷文書のページごとの集約・製本等の編集処理等を行う。
図9は、本発明の第二の実施の形態により印刷処理における印刷データ取得方法を説明するフローチャートの一例である。ユーザが、文書作成ソフトや画像作成ソフトなどのアプリケーションを選択すると、選択されたアプリケーションがクライアントPCのOS上で起動する(ステップS901)。
アプリケーションが起動すると同時に関数書換部267が起動し、所定の関数アドレスを書き換える(ステップS902)。印刷データ取得プログラムがクライアントPCにインストールされたときに、レジストリ書込み部266が、アプリケーション起動時にロードされるモジュールのレジストリに関数書換部267のモジュール名を書き込んでいるため、アプリケーションが起動すると同時に関数書換部267が起動して所定の関数アドレスを書き換える。書き換える関数アドレスは、第一の実施の形態と同じである。XPS系の印刷処理においては、XPSでスプールされるため、スプールデータ形式を印刷データ取得プログラムが強制的に指定する必要はなく、また、GDI系印刷処理でも、XPS系印刷処理でも、スプーラ242がスプールファイル300をプリントプロセッサ252へ送出するために呼び出す処理は共通であるため、関数アドレスは同じだからである。従って、GDI241がスプールデータ形式を問い合わせるためにプリンタドライバ251を呼び出す処理に関する関数アドレスである、例えば、LoadLibrary() APIやDrvEnableDriver()APIといった関数の関数アドレスを、プリンタドライバ251からスプールデータ形式指定部261へと書き換え、スプーラ242がスプールファイル300をプリントプロセッサ252へ送出するために呼び出す処理に関する関数アドレス、例えば、OpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといった関数の関数アドレスをプリントプロセッサ252からスプールデータ取得部262へと書き換える。
次に、アプリケーションがユーザからマウスやキーボード等により印刷指示を受ける(ステップS903)例えば、ユーザがアプリケーションのメニューから「印刷」を選択し、印刷するプリンタや枚数、出力用紙サイズなどを選択して印刷指示を実行する。このときに、ユーザがGDI系のプリンタドライバを選択した場合は、第一の実施の形態の図5のステップS504以降の処理と同じであるため、説明を省略し、ユーザがXPS系のプリンタドライバを選択した場合について、以下に、説明する。
ユーザがXPS系のプリンタドライバを選択した場合、Filter Pipeline Manager281が呼び出される。Filter Pipeline Manager281は、XPSデータのスプールファイルを生成し、スプーラへ送出する(ステップS904)。前述したとおり、Filter Pipeline Manager281は、XPSデータのスプールファイルを生成するため、印刷データ取得プログラムは、スプールファイル形式の指定において介入しない。
次に、スプーラ242は、XPSデータがスプールされると、スプールデータ取得部262を呼び出す(ステップS905)。XPSのプリンタが選択されている場合であっても、関数書換部267がOpenPrintProcessor() APIやPrintDocumentOnPrintProcessor() API、 ClosePrintProcessor() API、ControlPrintProcessor() APIといったスプーラがプリンタプロセッサを呼び出す関数の関数アドレスを書き換えているため、スプーラ242は、選択されたプリンタのプリントプロセッサではなく、スプールデータ取得部262を呼び出す。
スプールデータ取得部252は、XPSデータ、属性情報を取得する(ステップS906)。スプールデータ取得部252は、スプーラ242から送出されたスプールファイル300に含まれているスプールデータであるXPSデータと印刷指示を受けた文書データの属性情報とを取得する。文書データは、XPSデータであるが、属性情報は、例えば、XML形式で記述されており、印刷される文書データのファイル名、印刷日時、ユーザ名、マシン名などが含まれている。
ここで、第一の実施の形態と同様に、通常の印刷処理と、印刷データを管理するための処理の2つに分かれる。まず、印刷データを管理するための処理を説明する。印刷データを管理するための処理として、スプールデータ取得部262は、スプールデータ形式の判別を行う(ステップS907)。取得したスプールデータは、XPSデータであるが、ここで判別処理を行う。具体的には、スプールデータ取得部262は、取得したスプールデータがEMFデータのデータフォーマットとなっているかどうか、チェックして判別する。EMFデータでないことを判別すると、次にXPSデータとしてデータの読み込みを行う。ここで、XPSデータとして読み込むことができれば、XPSデータであると判別され、読み込み処理ができない場合は、エラーとなり、処理は終了する。XPSデータと判別されると、スプールデータ取得部262は、取得したスプールデータ(XPSデータ)及び属性情報を、テキスト抽出部263へ送出し、テキスト抽出部263は、スプールデータからテキストデータを抽出する(ステップS908)。なお、テキスト抽出部263は、テキストデータだけでなく、あわせて、画像データを抽出してもよい。
テキスト抽出部263が抽出したテキストデータと、スプールデータ取得部262が取得したスプールデータであるXPSデータと、属性情報は印刷データ送信制御部265へそれぞれ送信される(ステップS909)。スプールデータは、すでにXPSデータであるため、スプールデータの変換処理は不要である。ここで、スプールデータ取得部262は、取得したすべての属性情報ではなく、所定の項目のみ、例えば、ユーザ名とファイル名、印刷日時など、を抽出して印刷データ送信制御部265へ送信してもよい。
印刷データ送信制御部265は、XPSデータである印刷データ、テキスト情報及び属性情報を受領したかどうか、常に監視しており、印刷データ、テキスト情報、及び属性情報すべてを受領したことを検出すると、印刷データ管理サーバ110への送信を制御する(ステップS910)。
次に、通常の印刷処理について説明する。スプールデータ取得部262は、スプールデータ及びその属性情報を取得後、プリントプロセッサ252を呼び出す(ステップS911)。スプーラ242は、プリントプロセッサ252を呼び出すために、スプールデータ取得部262を呼び出しているため、スプールデータ取得部262は、印刷処理を正常に継続させるために、プリントプロセッサ252を呼び出す。
プリントプロセッサ252によって、必要な処理が行われた後、プリントプロセッサ252は、Filter Pipeline Manager281を呼び出す(ステップS912)。プリントプロセッサ252による処理後のデータがFilter Pipeline Manager281へ送出される。
Filter Pipeline Manager281は、受領したXPSデータを再生し(ステップS913)、プリンタデバイスコンテキストへ描画を行う。その後、Filter Pipeline Manager281は、プリンタドライバ(Filterドライバ)282を呼び出し、プリンタドライバ(Filterドライバ)282は、プリンタ固有の印刷データ(RAWデータ)を生成する(ステップS914)。
プリントプロバイダ243は、必要があれば、印刷データの出力先を切り替える処理などを行う(ステップS915)。ポートモニタ245は、プリンタポートの種類(USB、TCP/IPなど)に応じて、印刷データに対し、出力処理を行う(ステップS916)。このようにして処理された印刷データは、ネットワークを介して指定されたプリンタへと送られ、プリンタから出力されることとなる。
このように、本発明によれば、プリンタがGDI系であってもXPS系であっても、いずれの場合にも確実に印刷データの情報を取得することができる。
100 ネットワーク
110 印刷データ管理サーバ
120 クライアントPC
130 プリンタ
110 印刷データ管理サーバ
120 クライアントPC
130 プリンタ
Claims (17)
- 印刷データをプリンタへ出力する情報処理装置であって、
印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、
指定されたスプールデータ形式によるスプールデータと前記スプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出手段と、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御手段と、を有する情報処理装置。 - アプリケーション起動時に印刷に関する所定の関数アドレスを書き換える関数書換手段をさらに有し、
前記関数書換手段によって関数アドレスが書き換えられたことにより、前記スプールデータ形式指定手段が、スプールデータ形式を指定し、前記スプールデータ取得手段が、前記スプールデータを取得することを特徴とする、請求項1記載の情報処理装置。 - 前記関数書換手段が、GDIが出力先のプリンタのプリンタドライバにアクセスするための関数アドレスを書き換えることで、前記スプールデータ形式指定手段がスプールデータ形式を指定し、スプーラがプリントプロセッサを呼び出すための関数アドレスを書き換えることで、前記スプールデータを取得する、請求項2記載の情報処理装置。
- アプリケーション起動時にロードされるモジュールに関するレジストリに前記関数書換手段の名前を書き込むレジストリ書き込み手段をさらに有することを特徴とする、請求項3記載の情報処理装置。
- 前記スプールデータ形式指定手段で指定されるスプールデータ形式はEMFデータであることを特徴とする、請求項1〜4記載の情報処理装置。
- 前記印刷データの属性情報は、少なくとも印刷日時、文書データ名、ユーザ名を含むことを特徴とする、請求項1〜5記載の情報処理装置。
- さらに、取得したスプールデータを所定のデータ形式に変換するスプールデータ変換手段を有し、
前記送信制御手段は、所定のデータ形式に変換した印刷データの送信を制御する、請求項1〜6記載の情報処理装置。 - 前記スプールデータ変換手段は、スプールデータ形式がEMFデータであるときに変換する、請求項7記載の情報処理装置。
- 前記スプールデータ変換手段は、取得したスプールデータをPDF又はXPSデータに変換する、請求項7又は8記載の情報処理装置。
- プリンタで印刷する印刷データを出力するコンピュータに適用され、前記印刷データを取得する印刷データ取得プログラムであって、
印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、
指定されたスプールデータ形式によるスプールデータとスプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出ステップと、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御ステップとを
実行させることを特徴とする印刷データ取得プログラム。 - アプリケーション起動時に印刷に関する所定の関数アドレスを書き換える関数書換ステップをさらに有し、
前記関数書換ステップによって関数アドレスが書き換えられたことにより、前記スプールデータ形式指定手段が、スプールデータ形式を指定し、前記スプールデータ取得ステップが、前記スプールデータを取得することを特徴とする、請求項10記載の印刷データ取得プログラム。 - アプリケーション起動時にロードされるモジュールに関するレジストリに前記関数書換ステップの名前を書き込むレジストリ書き込みステップをさらに有することを特徴とする、請求項11記載の印刷データ取得プログラム。
- プリンタで印刷する印刷データを出力するコンピュータに適用され、前記印刷データを取得する印刷データ取得方法であって、
印刷指示があると印刷指示された文書データのスプールデータ形式を出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定ステップと、
指定されたスプールデータ形式によるスプールデータと前記スプールデータの属性情報とを、スプーラから取得するスプールデータ取得ステップと、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出ステップと、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御ステップとを
実行させることを特徴とする印刷データ取得方法。 - 印刷データをプリンタへ出力する情報処理装置と、前記印刷データを管理する印刷データ管理サーバとを有する印刷データ管理システムであって、
前記情報処理装置は、
印刷指示があると印刷指示された文書データのスプールデータ形式を、出力先のプリンタのプリンタドライバ内で所望のスプールデータ形式で指定するスプールデータ形式指定手段と、
指定されたスプールデータ形式によるスプールデータと前記スプールデータの属性情報とを、スプーラから取得するスプールデータ取得手段と、
取得した前記スプールデータからテキストデータを抽出するテキスト抽出手段と、
前記テキストデータと、前記属性情報とを少なくとも送信するよう制御する送信制御手段とを有し、
前記印刷データ管理サーバは、
前記印刷データと、前記テキストデータと、前記属性情報を受信する受信手段と、
前記印刷データと、前記テキストデータと、前記属性情報とを記憶する印刷データ記憶手段と、
を備える印刷データ管理システム。 - 前記印刷データ管理サーバは、
さらに、前記テキストデータ及び前記属性情報に基づいて生成したインデックスデータを記憶するインデックス記憶手段と、
前記インデックスデータに基づいて前記印刷データを検索する検索手段と、
を有する請求項14記載の印刷データ管理システム。 - 前記テキストデータのトークン解析することでインデックスデータを生成するトークン解析手段と、をさらに有する請求項15記載の印刷データ管理システム。
- 前記印刷データ管理サーバは、
所定条件を有する印刷データが前記印刷データ記憶手段に記憶されたときに、所定の通知先に通知するための通知条件設定手段と、
前記通知条件設定手段に所定条件に合致する印刷データを検出すると所定の通知先へ通知する通知手段をさらに有することを特徴とする、請求項14〜16記載の印刷データ管理システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015162087A JP2017041073A (ja) | 2015-08-19 | 2015-08-19 | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 |
PCT/JP2016/072737 WO2017029987A1 (ja) | 2015-08-19 | 2016-08-03 | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015162087A JP2017041073A (ja) | 2015-08-19 | 2015-08-19 | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017041073A true JP2017041073A (ja) | 2017-02-23 |
Family
ID=58052168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015162087A Pending JP2017041073A (ja) | 2015-08-19 | 2015-08-19 | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2017041073A (ja) |
WO (1) | WO2017029987A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110210455A (zh) * | 2019-06-18 | 2019-09-06 | 石家庄捷弘科技有限公司 | 一种打印内容格式化提取方法 |
WO2019186941A1 (ja) * | 2018-03-29 | 2019-10-03 | 株式会社島津製作所 | 分析情報収集用プログラム及び分析情報収集システム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4651112B2 (ja) * | 2006-03-17 | 2011-03-16 | キヤノン株式会社 | 情報処理装置及びその制御方法とプログラム |
JP2013196259A (ja) * | 2012-03-19 | 2013-09-30 | Ricoh Co Ltd | データ処理装置、データ処理システムおよびプログラム |
JP6115340B2 (ja) * | 2012-08-29 | 2017-04-19 | 株式会社リコー | 情報処理装置、プリントシステムおよびプログラム |
JP2015011488A (ja) * | 2013-06-28 | 2015-01-19 | 株式会社スプラインネットワーク | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 |
-
2015
- 2015-08-19 JP JP2015162087A patent/JP2017041073A/ja active Pending
-
2016
- 2016-08-03 WO PCT/JP2016/072737 patent/WO2017029987A1/ja active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019186941A1 (ja) * | 2018-03-29 | 2019-10-03 | 株式会社島津製作所 | 分析情報収集用プログラム及び分析情報収集システム |
TWI705339B (zh) * | 2018-03-29 | 2020-09-21 | 日商島津製作所股份有限公司 | 分析資訊收集用電腦程式製品以及分析資訊收集系統 |
CN110210455A (zh) * | 2019-06-18 | 2019-09-06 | 石家庄捷弘科技有限公司 | 一种打印内容格式化提取方法 |
CN110210455B (zh) * | 2019-06-18 | 2022-03-01 | 石家庄捷弘科技有限公司 | 一种打印内容格式化提取方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017029987A1 (ja) | 2017-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8045198B2 (en) | System and method for processing a change history of a PDF file | |
US9354832B2 (en) | Print system for recovering a print job in a redundant print server, print server and print control method | |
US8582162B2 (en) | Information processing apparatus, output method, and storage medium | |
US10003703B2 (en) | Data processing apparatus and print system | |
JP2011002881A (ja) | データ処理装置、プログラムおよび記録媒体 | |
US9507544B2 (en) | Information processing apparatus, recording medium, and control method to process print data using filters | |
US9639304B2 (en) | Data supplying device and image processing system | |
US20160253128A1 (en) | Output system, terminal device and output method | |
JP2014109854A (ja) | 情報処理装置および制御方法およびプログラム | |
JP2015172929A (ja) | 情報処理装置、情報処理方法、プログラム | |
CN107977171B (zh) | 打印管理设备以及存储打印管理程序的计算机可读介质 | |
JP2013239204A (ja) | データ処理装置、プログラムおよび記録媒体 | |
WO2017029987A1 (ja) | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 | |
JP6834714B2 (ja) | 印刷管理プログラム、印刷管理方法、及び印刷管理装置 | |
JP5919925B2 (ja) | プログラム、情報処理装置、記憶媒体 | |
JP2007323162A (ja) | クライアント装置及びサーバ装置及びプログラム | |
JP2012155401A (ja) | 印刷システム、印刷装置、印刷システムの制御方法、印刷装置の制御方法、プログラム | |
US10002314B2 (en) | Information processing apparatus for efficiently issuing a print instruction to image forming apparatus and method for controlling the same | |
JP6827738B2 (ja) | 制御方法、プログラム及び情報処理装置 | |
JP2014164509A (ja) | 画像処理装置 | |
JP2015011488A (ja) | 印刷データ管理システム、情報処理装置、印刷データ取得プログラム、方法 | |
JP4861841B2 (ja) | 印刷データ生成装置、印刷データ生成方法、プリンタドライバプログラム、文書データ生成サーバ、文書データ生成方法、文書データ生成プログラム及び印刷データ生成システム | |
US8228533B2 (en) | Image processing system, image processing method, computer readable medium, and computer data signal | |
US8643885B2 (en) | Printing control apparatus and non-transitory computer readable medium with setting authentication information in a devmode structure | |
JP5459383B2 (ja) | 印刷データ生成装置、印刷データ生成方法、プリンタドライバプログラムおよび印刷データ生成システム |