(57)【要約】      （修正有）【課題】ＰＤＦダイレクト印刷におけるレンダリング処理中のメモリアクセス時間の短縮。【解決手段】ＰＤＦダイレクト印刷において、プリンタコントローラは、受信した印刷用データの少なくとも一部を、印刷順番および／または使用頻度に従ってプリンタコントローラのＲＡＭに保存する。クライアント側のＰＤＦパーサは、伝送されるデータブロックの各々についてデータブロックの内容に応じたタグを生成し、そのタグをデータブロックとともに伝送する。タグに基づき、プリンタコントローラは、データブロックの各々をＲＡＭまたはディスクに保存する。プリンタコントローラは、個々のデータブロックが保存されたプリンタコントローラ内の記憶場所を記録するためのメモリ割り当てデータベースを保持する。レンダリング中に、データベースはデータブロックの記憶場所を特定するためにアクセスされ、そのデータブロックは処理のために記憶場所から読み出される。【選択図】図３
2008276747.tif 000002
【特許請求の範囲】
【請求項１】
ファイルのダイレクト印刷のためにデータ処理システムにおいて実行される方法であって、
前記ファイルは、複数のデータブロックを含み、
前記データ処理システムは、互いに接続されたプリンタコントローラおよびクライアントを含み、
前記プリンタコントローラは、第１のランダムアクセスメモリ（ＲＡＭ）および第２メモリを有し、
前記方法は、
前記クライアント側で、（ａ）伝送されるデータブロックの内容を示すメタデータを生成するために前記ファイルを検査すること、および、（ｂ）データブロックを関連するメタデータとともに前記プリンタコントローラに伝送すること、そして、
前記プリンタコントローラ側で、（ｃ）データブロックを関連するメタデータとともに前記クライアントから受信すること、（ｄ）前記関連するメタデータに基づき個々のデータブロックを前記ＲＡＭまたは前記第２メモリの何れか一方に保存すること、および、（ｅ）メモリ割り当てデータベースに個々のデータブロックが保存される記憶場所を記録すること、を含むことを特徴とする方法。
【請求項２】
前記メタデータは、伝送されるデータブロックの各々に関連するタグを含み、
前記タグは、データ形式、前記データブロックのサイズ、および前記データブロックの前記ファイルの先頭からのオフセットを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記メタデータは、前記ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブルを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ファイルは、各々が複数のデータブロックを含む複数ページ分のデータを含み、
前記方法は、前記プリンタコントローラが、前記ファイルの選択されたページが印刷される順番を示すページ印刷順番情報を前記クライアントに伝送することをさらに含み、
前記ステップ（ｂ）では、前記クライアントが前記ページ印刷順番情報に基づき前記プリンタコントローラにデータブロックを伝送し、
前記ステップ（ｄ）では、前記ページ印刷順番情報に基づき、前記ページ印刷順番において順番の早いデータブロックが前記ＲＡＭに保存されるように、前記ＲＡＭまたは前記第２メモリにデータブロックが保存されることを特徴とする請求項１に記載の方法。
【請求項５】
前記メタデータは、前記ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブル、および各ページ分のデータのサイズを含み、
前記ステップ（ｄ）は、前記ページ印刷順番に含まれる前記ファイルの各ページについて、当該ページ分のサイズが前記ＲＡＭの残りの利用可能なスペースよりも大きいかどうかを判定し、前記サイズの方が大きい場合に前記ページ分のデータブロックを当該データブロックの使用頻度に応じて前記ＲＡＭまたは前記第２メモリに保存することを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記プリンタコントローラ側で、レンダリングに必要なデータブロックの記憶場所を取得するために前記メモリ割り当てデータベースにアクセスすること（ｆ）、前記記憶場所から必要なデータブロックを読み出すこと（ｇ）、および、画像のレンダリングを行うために読み出したデータブロックを処理すること（ｈ）をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ＲＡＭ内のスペースの利用可否を監視すること、および、十分なスペースが利用可能である場合に一以上の保存されたデータブロックを前記第２メモリから前記ＲＡＭに移動させることをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
レンダリングに必要なくなったデータブロックを前記ＲＡＭから削除することをさらに含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記ファイルは、当該ファイル内の各々のデータブロックのオフセット値を示す相互参照テーブルを格納しており、
前記方法は、前記クライアント側で、（ｉ）前記相互参照テーブルの、前記ステップ（ｂ）において伝送されたデータブロックに対応する部分を前記プリンタコントローラに伝送すること、（ｊ）前記プリンタコントローラ側で新たな相互参照テーブルを生成するために、前記クライアントにより伝送された前記相互参照テーブルの前記部分を保存すること、および、（ｋ）前記ステップ（ｆ）に先立ち、レンダリングに必要なデータブロックのオフセット値を取得するために、前記新たな相互参照テーブルを参照することをさらに含み、
前記ステップ（ｆ）では、データブロックの記憶場所を取得するために、前記メモリ割り当てデータベースが、前記ステップ（ｋ）において取得された前記オフセット値を用いてアクセスされることを特徴とする請求項６に記載の方法。
【請求項１０】
前記ファイルは、ＰＤＦ（ポータブルドキュメントフォーマット）ファイルであることを特徴とする請求項１に記載の方法。
【請求項１１】
複数のデータブロックを有するファイルのダイレクト印刷のためにデータ処理システム内で使用されるプリンタコントローラを制御するためのコンピュータプログラムであって、
前記データ処理システムは、前記プリンタコントローラおよび当該プリンタコントローラに連結されたクライアントを含み、
前記プリンタコントローラは、第１のランダムアクセスメモリ（ＲＡＭ）および第２メモリを有し、
前記コンピュータプログラムは、（ａ）前記クライアントにより生成され、関連するデータブロックの内容を示すメタデータとともにデータブロックを前記クライアントから受信すること、（ｂ）前記メタデータに基づき、各データブロックを前記ＲＡＭまたは前記第２メモリの何れか一方に保存すること、および、（ｃ）各データブロックが保存された記憶場所をメモリ割り当てデータベースに記録することを含むプリンタ制御処理を前記プリンタコントローラに実行させることを特徴とするコンピュータプログラム。
【請求項１２】
前記メタデータは、前記クライアントから受信された各々のデータブロックに対応するタグを含み、
前記タグは、データ形式、データブロックのサイズ、およびデータブロックの前記ファイル先頭からのオフセットを含むことを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記メタデータは、前記ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブルを含むことを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１４】
前記ファイルは、各々が複数のデータブロックを含む複数ページ分のデータを含み、
前記プリンタ制御処理は、前記ファイルの選択されたページが印刷される順番を示すページ印刷順番情報を前記クライアントに送信することをさらに含み、
前記ステップ（ａ）では、データブロックが前記ページ印刷順番情報に基づき前記クライアントにより伝送され、
前記ステップ（ｂ）では、前記ページ印刷順番情報に基づき、前記ページ印刷順番において早く現れるデータブロックが前記ＲＡＭに保存されるように、データブロックが前記ＲＡＭまたは前記２次メモリに保存されることを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１５】
前記メタデータは、前記ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブルおよび各ページ分のデータのサイズを含み、
前記ステップ（ｂ）は、前記ページ印刷順番に含まれる前記ファイルの各ページについて、当該ページ分のサイズが前記ＲＡＭの残りの利用可能なスペースよりも大きいかどうかを判定すること、および、前記サイズの方が大きい場合に前記ページ分のデータブロックを当該データブロックの使用頻度に応じて前記ＲＡＭまたは前記第２メモリに保存することを含むことを特徴とする請求項１４に記載のコンピュータプログラム。
【請求項１６】
前記プリンタ制御処理は、（ｄ）レンダリングに必要なデータブロックの記憶場所を取得するためにメモリ割り当てデータベースにアクセスすること、（ｅ）必要なデータブロックを個々の前記記憶場所から読み出すこと、および、（ｆ）画像のレンダリングを行うために読み出したデータブロックを処理することをさらに含むことを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１７】
前記プリンタ制御処理は、前記ＲＡＭ内のスペースの利用可否を監視すること、および、十分なスペースが利用可能である場合に一以上の保存されたデータブロックを前記第２メモリから前記ＲＡＭに移動させることをさらに含むことを特徴とする請求項１６に記載のコンピュータプログラム。
【請求項１８】
前記プリンタ制御処理は、レンダリングに必要なくなったデータブロックを前記ＲＡＭから削除することをさらに含むことを特徴とする請求項１６に記載のコンピュータプログラム。
【請求項１９】
前記ファイルは、当該ファイル内の各々のデータブロックのオフセット値を明示する相互参照テーブルを格納しており、
前記プリンタ制御処理は、（ｇ）前記相互参照テーブルの、前記ステップ（ａ）において受信されたデータブロックに対応する部分を前記クライアントから受信すること、（ｈ）前記プリンタコントローラ側で新たな相互参照テーブルを生成するために、前記クライアントから受信した前記相互参照テーブルの前記部分を保存すること、および、（ｉ）前記ステップ（ｄ）に先立ち、レンダリングに必要なデータブロックのオフセット値を取得するために、前記新たな相互参照テーブルを参照することをさらに含み、
前記ステップ（ｄ）では、データブロックの記憶場所を取得するために、前記メモリ割り当てデータベースが、前記ステップ（ｉ）において取得された前記オフセット値を用いてアクセスされることを特徴とする請求項１６に記載のコンピュータプログラム。
【請求項２０】
前記ファイルは、ＰＤＦ（ポータブルドキュメントフォーマット）ファイルであることを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項２１】
複数のデータブロックを有するファイルのダイレクト印刷のためのデータ処理システムであって、
第１のランダムアクセスメモリ（ＲＡＭ）および第２メモリを有するプリンタコントローラと、
伝送されるデータブロックの内容を示すメタデータを生成するために前記ファイルを検査し、さらに、データブロックを関連するメタデータとともに前記プリンタコントローラに伝送するためのパーサを有する、前記プリンタコントローラに連結されたクライアントと、を含み、
前記プリンタコントローラは、前記クライアントから伝送されたデータブロックを受信し、さらに、受信したデータブロックの各々を前記関連するメタデータに基づき前記ＲＡＭまたは前記第２メモリの何れか一方に保存するためのプリプロセッサモジュールをさらに含み、
前記プリンタコントローラは、前記クライアントから受信したデータブロックの各々が保存される記憶場所を記録するためのメモリ割り当てデータベースをさらに含むことを特徴とするデータ処理システム。
【請求項２２】
前記メタデータは、伝送されるデータブロックの各々に関連するタグを含み、
前記タグは、データ形式、データブロックのサイズ、および前記データブロックの前記ファイル先頭からのオフセットを含むことを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記メタデータは、前記ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブルを含むことを特徴とする請求項２１に記載のシステム。
【請求項２４】
前記ファイルは、各々が複数のデータブロックを含む複数ページ分のデータを含み、
前記プリプロセッサモジュールは、前記ファイルの選択されたページが印刷される順番を示すページ印刷順番情報を前記クライアントに送信し、
前記クライアントの前記パーサは、前記ページ印刷順番情報に基づき前記プリンタコントローラにデータブロックを伝送し、
前記プリプロセッサモジュールは、前記ページ印刷順番情報に基づき、前記ページ印刷順番において早く現れるデータブロックがＲＡＭに保存されるように、データブロックを前記ＲＡＭまたは前記第２メモリに保存することを特徴とする請求項２１に記載のシステム。
【請求項２５】
前記メタデータは、前記ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブル、および各ページ分のデータのサイズを含み、
前記プリプロセッサモジュールは、前記クライアントから受信した各ページ分のデータについて、当該ページ分のサイズが前記ＲＡＭの残りの利用可能なスペースよりも大きいかどうかを判定し、前記サイズの方が大きい場合に前記ページ分のデータブロックを当該データブロックの使用頻度に応じて前記ＲＡＭまたは前記第２メモリに保存することを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記プリンタコントローラは、レンダリングに必要なデータブロックの記憶場所を取得するためにメモリ割り当てデータベースにアクセスし、必要なデータブロックを個々の前記記憶場所から読み出し、さらに、画像のレンダリングを実行するために読み出したデータブロックを処理するためのレンダリングモジュールをさらに含むことを特徴とする請求項２１に記載のシステム。
【請求項２７】
前記レンダリングモジュールは、さらに、前記ＲＡＭ内のスペースの利用可否を監視し、十分なスペースが利用可能である場合に一以上の保存されたデータブロックを前記第２メモリ２次メモリから前記ＲＡＭに移動させることを特徴とする請求項２６に記載のシステム。
【請求項２８】
前記レンダリングモジュールは、レンダリングに必要なくなったデータブロックを前記ＲＡＭから削除することを特徴とする請求項２６に記載のシステム。
【請求項２９】
前記ファイルは、当該ファイル内の各々のデータブロックのオフセット値を明示する相互参照テーブルを格納しており、
前記パーサは、前記相互参照テーブルの、前記プリンタコントローラに伝送されたデータブロックに対応する部分を前記プリンタコントローラに伝送し、
前記プリプロセッサモジュールは、前記プリンタコントローラ側で新たな相互参照テーブルを生成するために、前記クライアントから伝送された前記相互参照テーブルの前記部分を保存し、
前記レンダリングモジュールは、レンダリングに必要なデータブロックのオフセット値を取得するために、前記新たな相互参照テーブルを参照し、
前記レンダリングモジュールは、前記必要なデータブロックの記憶場所を取得するために、前記オフセット値を用いて前記メモリ割り当てデータベースにアクセスすることを特徴とする請求項２６に記載のシステム。
【請求項３０】
前記ファイルは、ＰＤＦ（ポータブルドキュメントフォーマット）ファイルであることを特徴とする請求項２１に記載のシステム。
【請求項３１】
ＰＤＦファイルから印刷データを生成するためにプリンタコントローラで実行される方法であって、
クライアントから複数のデータブロックを含む前記ＰＤＦファイルを受信すること、
第２のサブセットのＰＤＦデータブロックに先立って伝送される第１のサブセットのＰＤＦデータブロックを第１のランダムアクセスメモリ（ＲＡＭ）に保存し、前記第２のサブセットのＰＤＦデータブロックを第２メモリに保存すること、
前記第１のサブセットのＰＤＦデータブロックのうち一以上のデータブロックを前記ＲＡＭから前記第２メモリに伝送すること、
前記第２のサブセットのＰＤＦデータブロックのうち一以上のデータブロックを前記第２メモリから前記ＲＡＭに伝送すること、および、
前記ＲＡＭに保存されたＰＤＦデータブロックから印刷データを生成すること、を含むことを特徴とする方法。
【請求項３２】
請求項１１〜２０のいずれか１つに記載されたコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の技術分野
本発明は、ＰＤＦファイル等の特定の記述言語のファイルのダイレクト印刷に関し、特に、スプール済み印刷ファイルのためのＲＡＭ記憶装置を用いたＰＤＦダイレクト印刷方法および装置に関する。
【背景技術】
【０００２】
従来技術の説明
ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイルは、コマンドまたはリソースに相当する複数のデータブロック（オブジェクト）を含んでいる。ＰＤＦファイルの末尾は、ＰＤＦファイルに含まれる全てのリソースおよびコマンドを一覧表示し、これらの各々についてＰＤＦファイル内での位置を示すためのＰＤＦファイルの先頭からのオフセット値を明示する相互参照テーブル（ディレクトリ情報と呼ばれる場合もある）となっている。あるコマンドがリソースを利用する必要がある場合、同コマンドはファイル内の同リソースの位置を特定するために相互参照テーブルを参照する。１つのリソースは異なるコマンドにより複数回参照される場合がある。必然的に、１つのＰＤＦファイルは複数ページ分のデータを含むことがあり、個々のページは複数のデータブロックを含むことになるが、他のいくつかのページ記述言語とは異なり、ＰＤＦファイル内のデータは線形というよりは乱雑な様式で物理的に構成されている。
【０００３】
ＰＤＦダイレクト印刷とは、ＰＤＦデータを先ずＰＤＬ（ページ記述言語）のような従来の印刷言語に変換する前処理を実行するためのアプリケーションや印刷ドライバを利用することなく、ＰＤＦファイルが互換性のあるプリンタ装置に直接送信される処理のことである。従来のＰＤＦダイレクト印刷方法によれば、ＰＤＦファイルがプリンタコントローラ（プリンタが連結されたサーバ側に存在してもよいし、内蔵式コントローラとしてプリンタ側に存在してもよい）に送信された後に、プリンタコントローラがＰＤＦファイルをハードディスクに保存し、レンダリング（解析）処理中にディスクＩ／Ｏ機能を用いて当該ＰＤＦファイルにアクセスする。つまり、ダイレクト印刷用のＰＤＦデータ全体がハードディスク内の単一のファイルに書き込まれる。他のＰＤＬファイルとは異なり、ＰＤＦファイル内のデータは非逐次的な順番に構成されており、このようなＰＤＦファイルのレンダリングは、ディスクＩ／Ｏに負荷が集中する処理である。レンダリング処理を通じて、ＰＤＦファイルは非逐次的なアクセスを受けることになる。そのため、非逐次的なファイル内のデータを読み出すためには高価なディスク操作であるｆｓｅｅｋが多く必要となるので、ＰＤＦファイルの容量が大きいときにハードディスク内のＰＤＦファイルからのデータの読み出しに比較的長時間を要する場合がある。
【発明の開示】
【０００４】
概要
従って、本発明は、従来技術の限界および欠点に起因する一以上の問題点を実質的に回避するための、ＰＤＦまたは他のファイルのダイレクト印刷方法および装置を対象としている。
【０００５】
本発明の目的は、ＰＤＦダイレクト印刷のレンダリング処理中のメモリアクセス時間を短縮することである。
【０００６】
本発明の付加的な特徴および利点は、以下の記述中で説明され、その一部は同記述から明白であるほか、本発明の実施を通じて知徳されうる。本発明の目的および他の利点は、明細書および特許請求の範囲に加えて図面において特に指摘された構成により実現され達成されるものである。
【０００７】
これらの目的および／または他の目的を達成するため、具体化され広範に記述された本発明は、ファイルのダイレクト印刷を行うデータ処理システムにおいて実行される方法を提供するものであり、前記ファイルは複数のデータブロックを有し、前記データ処理システムは互いに連結されたプリンタコントローラおよびクライアントを含み、前記プリンタコントローラは、第１のランダムアクセスメモリ（ＲＡＭ）および第２メモリを有し、前記方法は、クライアント側で、（ａ）伝送されるデータブロックの内容を示すメタデータを生成するためにファイルを解析すること、（ｂ）データブロックを関連するメタデータとともにプリンタコントローラに転送すること、ならびにプリンタコントローラ側で、（ｃ）データブロックおよび関連するメタデータをクライアントから受信すること、（ｄ）関連するメタデータに基づき個々のデータブロックをＲＡＭまたは第２メモリの何れか一方に保存すること、（ｅ）個々のブロックが保存される記憶場所をメモリ割り当てデータベース内に記録することを含む。
【０００８】
前記メタデータは、データ形式、データブロックのサイズ、及びデータブロックのファイル先頭からのオフセットを示す情報を含有する個々のデータブロックに関連するタグを含むことができる。前記メタデータは、また、ファイル内のデータブロックの使用頻度を示す情報を格納するリソース使用量参照テーブルを含むことができる。ステップ（ｄ）において、データブロックは、ページ印刷順番および／またはデータブロックの使用頻度に応じて保存されることができる。本方法は、さらに、プリンタコントローラ側で、（ｆ）レンダリングに必要とされるデータブロックの記憶場所を取得するためにメモリ割り当てデータベースにアクセスすること、（ｇ）それぞれの記憶場所から必要なデータブロックを読み出すこと、及び（ｈ）画像のレンダリングを行うために読み出したデータブロックを処理することを含むことができる。
【０００９】
他の態様において、本発明は、データ処理装置に上記方法を実行させるためのコンピュータプログラムを提供する。
【００１０】
また他の態様において、本発明は、ファイルのダイレクト印刷用のデータ処理システムを提供するものであり、前記ファイルは複数のデータブロックを有し、前記システムは第１のランダムアクセスメモリ（ＲＡＭ）および第２メモリを有するプリンタコントローラ、ならびにプリンタコントローラに接続されたクライアントを備え、前記クライアントは、伝送されるデータブロックの内容を示すメタデータを生成するためにファイルを検査し、そして、データブロックをそれに関連するメタデータとともにプリンタコントローラに伝送するためのパーサを含み、前記プリンタコントローラは、さらに、クライアントから伝送されたデータブロックを受信し、そして、受信した個々のデータブロックを、それに関連するメタデータに基づきＲＡＭまたは第２メモリの何れか一方に保存するためのプリプロセッサモジュールを含み、前記プリンタコントローラは、さらに、クライアントから受信した個々のデータブロックが保存される記憶場所を記録するためのメモリ割り当てデータベースを含む。
【００１１】
前述の概要および以下の詳細な説明は、いずれも、典型的かつ例示的なものであり、特許請求の範囲に記載された発明のさらに詳細な説明を提供するよう意図されていると理解されるべきである。
【００１２】
図面の簡単な説明
図１は、本発明の一実施形態に係るクライアントコンピュータおよびプリンタコントローラからなるシステムを図示する。
【００１３】
図２は、本発明の一実施形態に係る、ダイレクト印刷用ＰＤＦファイルをクライアントからプリンタコントローラに伝送するためのクライアントコンピュータによる処理を図示する。
【００１４】
図３は、本発明の一実施形態に係る、クライアントコンピュータから伝送されたＰＤＦダイレクト印刷用データを受信し保存するためのプリンタコントローラによる処理を図示する。
【００１５】
図４は、本発明の一実施形態に係るＰＤＦダイレクト印刷用ファイルのレンダリングのための処理を図示する。
【００１６】
図５は、本発明の一実施形態に係る、ＲＡＭ使用量をモニタリングし、ディスクからＲＡＭにデータを伝送するためのレンダリング処理時のモニタリング方法を図示する。
【００１７】
好適な実施形態の説明
図１は、本発明の実施形態に係る方法が実行されうるプリンタ１１０に連結されたクライアントコンピュータ１００を含むシステムを図示する。クライアントコンピュータ１００はＰＤＦパーサ１０２を含み、プリンタ１１０はプリンタコントローラ１２０を含む。本実施形態において、ＰＤＦパーサ１０２の各々およびプリンタコントローラ１２０は、完全にまたは部分的に、読み出し専用メモリであるＲＯＭおよびハードディスクのような記憶装置内に保存されたコンピュータプログラムを実行するクライアントコンピュータ１００またはプリンタ１００の中央処理装置（ＣＰＵ）により実行される。同図において、プリンタコントローラ１２０はプリンタ１１０側に存在するものとして示されているが、これはクライアントコンピュータおよびプリンタ（不図示）に接続されたサーバ側に存在するものであってもよい。この場合、プリンタコントローラ１２０は、コンピュータプログラムを実行するサーバのＣＰＵにより実行されることになる。ＲＡＭ１２４およびハードディスク１２５はプリンタコントローラに関連するリソースである。プリンタコントローラ１２０は、プリプロセッサモジュール１２１を含み、プリプロセッサモジュール１２１は、クライアントからのＰＤＦダイレクト印刷用データのスプーリング機能、ならびにＲＡＭ１２４またはディスク１２５、プリプロセッサモジュールにより保持されるメモリ割り当てデータベース１２３、およびＰＤＦダイレクト印刷用データの解析を行うレンダリングモジュール１２２へのデータ保存機能に加えて、他の画像レンダリング機能の実行を含めて印刷ジョブの管理を行う。本開示内容においてはハードディスクが例に挙げられているが、ここに開示された技術は、プリンタコントローラ側でＰＤＦダイレクト印刷用データを保存するために、フラッシュドライブ等の比較的低速な他の記憶装置がＲＡＭと連動して利用されるような場面にも適用可能である。
【００１８】
本発明の実施形態は、ＰＤＦダイレクト印刷用ファイルをプリンタコントローラによって保存する技術であって、ｆｓｅｅｋ（）の使用およびダイレクト印刷ジョブ用のＰＤＦデータを読み出すために特に要求される他のディスク操作を軽減または削減する技術を用いている。従来、プリンタコントローラは、ダイレクト印刷用ＰＤＦデータを、その全データをハードディスク上の単一のファイルに書き込むことにより保存していた。それとは対照的に、本発明の実施形態に係るスプーリングのアルゴリズムは、ＰＤＦダイレクト印刷用ファイルのＰＤＦデータをできるだけ大量に保存するために確保されたＲＡＭ（ランダムアクセスメモリ）記憶装置を利用する。印刷ジョブの全ＰＤＦデータが確保されたＲＡＭ記憶装置に収まる場合、プリンタコントローラは、レンダリング中にＰＤＦデータを読み出すための一切のディスクＩ／Ｏを実行する必要がなくなる。確保されたＲＡＭ記憶装置内の利用可能なメモリがＰＤＦファイル全体を保持することができない場合、ＰＤＦファイルのデータの一部は確保されたＲＡＭに保存され、一部はハードディスクにファイルとして書き込まれる。この場合、本発明の実施形態は、ＰＤＦデータを分配するための知的アルゴリズムであって、ＲＡＭでのレンダリング処理の早い時点で使用されるデータをＲＡＭへ保存したり、ＰＤＦデータの高頻度でアクセスされる部分をＲＡＭへ保存し低頻度でアクセスされるデータをディスクへ保存したりするような最適化のための各種原則に基づきＰＤＦデータを選択的にＲＡＭへ保存するための知的アルゴリズムを提供する。元々のＰＤＦファイルの相互参照テーブルもまた印刷コントローラに伝送され、好ましくはＲＡＭに保存される。
【００１９】
使用される分配アルゴリズムとは無関係に、プリプロセッサモジュール１２１は、ＲＡＭ１２４またはディスク１２５に保存されたＰＤＦダイレクト印刷用データの各ブロックの記憶場所を記録するメモリ割り当てデータベースを保持している。データブロックは、メモリ割り当てデータベースにおいて、元のＰＤＦファイル内でのオフセット値により特定される。その意味で、プリンタコントローラは、ＰＤＦデータの各部がＲＡＭまたはディスク内の様々な記憶場所に保存されているような「仮想的な」ＰＤＦファイルを生成する。レンダリングモジュール１２２は、ＰＤＦダイレクト印刷用データを解析する際、レンダリング処理のために次に必要となるＰＤＦデータの読み出し元である記憶場所を特定するためにメモリ割り当てデータベース１２３を参照する。ＲＡＭ上のデータブロックへのアクセスはディスク上のデータブロックへのアクセスよりもはるかに高速であるため、ＰＤＦデータの全部または一部をＲＡＭに保存することは、ＰＤＦダイレクト印刷用ジョブのレンダリングに要する時間の短縮に役立つ。
【００２０】
多数のＰＤＦデータ分配用アルゴリズムが、ＰＤＦダイレクト印刷用データをＲＡＭまたはディスクに保存するためにプリンタコントローラにより使用されうる。簡単な例において、クライアントコンピュータ１００は、ＰＤＦダイレクト印刷用データを、元のＰＤＦファイルでのデータ配列順番に従って連続的に伝送し、プリンタ１１０は、ＲＡＭの空き容量がなくなるまでＰＤＦデータを先着順でＲＡＭ１２４に保存した後に残りのＰＤＦデータをディスク１２５に保存する。この方法は簡単であり実施が容易である一方、印刷ジョブのページ印刷順番（つまり、印刷されるページ範囲を含め、ＰＤＦファイルのどのページがどのような順番で印刷されるか）が元のＰＤＦファイルのページ順番と異なる場合には不利となる。例えば、印刷ジョブは、ＰＤＦファイルの１０ページおよび３−５ページのみが印刷されるべきことを指示する場合がある。上述の簡単な方法によると、クライアントコンピュータ１００は、１ページから始まる全ページを伝送することになる。これは、使用されないＰＤＦデータの不必要な伝送を伴うばかりか、ＲＡＭが使用されないデータで満たされる一方で有用なデータ（例えば、１０ページ用のデータ）がディスク１２５に保存されてしまう原因となる。
【００２１】
より効率的なＰＤＦデータ分配アルゴリズムは、ＰＤＦデータをＲＡＭおよびディスクに分配する方法を決定する際の多様なルールを採用する。ここで印刷順番ルールと呼ばれる第１のルールは、ＰＤＦダイレクト印刷用データのデータブロックを、同データがレンダリングにおいて使用される順番（つまり、ページ印刷順番）に従い、確保されたＲＡＭ１２４に保存する方法である。そのため、印刷順番において早めに現れるページ分のデータは、ＲＡＭの空き容量がなくなるまでＲＡＭに保存され、残りのページはハードディスク１２５に保存される。この方法は、レンダリングにおいていくつかのページがレンダリングされた後に、もはや必要ない印刷済みページ分のリソースまたはコマンドをプリンタコントローラがＲＡＭから頻繁に削除することができ、それにより、ディスク上に保存された以後のページ分の追加リソースまたはコマンドを保存するためのＲＡＭ上のスペースを作り出すことができる点で有利である。
【００２２】
ここで使用頻度ルールと呼ばれる第２のルールは、ＰＤＦダイレクト印刷用データを、データブロックがレンダリング処理において使用される頻度に応じて、確保されたＲＡＭ１２４またはディスク１２５に保存する方法である。使用頻度が高いＰＤＦダイレクト印刷用データのデータブロックが確保済みのＲＡＭ１２４に保存され、使用頻度が低いデータブロックがハードディスク１２５に保存される。例えば、典型的なＰＤＦファイルにおいて、いくつかのリソースはＰＤＦレンダリング（解析）処理中に何回も参照されうる。そのようなリソースの一例としてＰＤＦファイルに埋め込まれたフォントデータ（ダウンロードフォントとも呼ばれる）が挙げられる。スプール済みＰＤＦファイルの内容がＲＡＭとディスクに分配されて保存されなければならない場合、このような使用頻度の高いリソースをなるべくたくさんＲＡＭに保存することが、これらのリソースへのアクセスに要する時間を短縮する上で役立つ。
【００２３】
このような印刷順番ルールおよび使用頻度ルールは組み合わせて使用されることが可能である。例えば、好適なＰＤＦデータ分配アルゴリズムにおいて、ＰＤＦデータは、次ページ分の全データをＲＡＭに保存可能である限りはページ印刷順番に従ってＲＡＭに保存される一方で、利用可能なＲＡＭが１ページ分の全リソースおよびコマンドを保存するには不十分である場合、同ページ内のＰＤＦデータは、より使用頻度の高いデータブロックがＲＡＭに保存され、より使用頻度の低いデータブロックがディスクに保存されるようにＲＡＭおよびディスクに分配される。
【００２４】
好適な実施形態において、ＰＤＦデータ分配アルゴリズムは、プリンタコントローラのプリプロセッサモジュール１２１と連動するインテリジェントＰＤＦパーサ１０２をクライアントコンピュータ１００側に設けることにより実行される。ＰＤＦダイレクト印刷用データの伝送処理の開始時に、プリプロセッサモジュール１２１は、ＰＤＦファイルのどのページが印刷されるのか、そしてどのような順番で印刷されるのかを指示する印刷順番情報をＰＤＦパーサ１０２に伝送する。その代わりに、プリプロセッサモジュール１２１は、先ず、印刷予定の最初の数ページ分の順番等の印刷順番情報の一部をパーサ１０２に伝送し、データ伝送プロセスにおいて引き続き印刷順番情報の伝送を行ってもよい。ＰＤＦファイルの構造を認識しているＰＤＦパーサ１０２は、印刷順番に従ってＰＤＦダイレクト印刷用データを解析し、プリンタコントローラへ伝送する。例えば、印刷順番が１０ページおよび３−５ページがその順番で印刷されるべきことを明示する場合、ＰＤＦパーサ１０２は、１０ページおよび３−５ページ分のデータをその順番で伝送し、印刷されない他のページ分のデータを伝送しない。プリプロセッサモジュール１２１は、伝送されたデータをＰＤＦデータ分配アルゴリズムに基づきＲＡＭ１２４またはディスク１２５に保存する。
【００２５】
パーサ１０２は、それがプリンタコントローラ１１０に伝送するＰＤＦデータの各ブロックにタグと呼ばれるメタデータを付加する。個々のタグは次の情報を含むことが好ましい：データタイプの識別表示（データがリソースであるのか、またはコマンドであるのか）、バイト単位のサイズ（伝送されるデータブロックのサイズ）、およびファイル先頭からのバイト単位のオフセット（元のＰＤＦファイルにおけるデータの場所）。さらに詳細に後述するように、タグはプリンタコントローラ１２０のプリプロセッサモジュール１２１によりデータブロックの保存場所を決定するために使用される。
【００２６】
パーサ１０２は、ＰＤＦデータのデータブロックに加えて、データブロックに関連するＰＤＦファイルの相互参照テーブルの一部分を伝送する。前述のように、通常、個々のＰＤＦファイルはファイル末尾にファイル内の全リソースおよびコマンドを特定し、それらのファイル先頭からのオフセット値を明示する相互参照テーブルを格納する。ＰＤＦパーサ１０２は、相互参照テーブルのうち伝送されるデータブロックに関連する部分を解析し、相互参照テーブルの解析された部分をプリンタコントローラに伝送する。ＰＤＦデータのデータブロックに関連するタグと混同すべきでない別タグが、プリンタコントローラに以下のようなデータの特性を伝達するために相互参照テーブルの当該部分の先頭に付けられる。相互参照テーブルの当該部分はデータブロック自体の後または前に伝送されることができる。相互参照テーブルの当該部分がデータブロックの前に伝送される場合、一部の情報（オフセット等）がデータブロックに先行する相互参照テーブルの該当部分に格納されているため、データブロックに関連するタグがよりシンプルになりうる。別の方法として、相互参照テーブルにおける１ページ分の全データブロックに対応する部分が同時に伝送されることもできる。伝送順番は重要ではない。さらに詳細に後述するように、相互参照テーブルの当該部分は、プリンタコントローラ保存され、ＰＤＦファイルのレンダリングに使用される。
【００２７】
使用頻度ルールが実施される場合、ＰＤＦパーサ１０２は、ＰＤＦデータの各ブロックの使用頻度を示す情報を生成し、その使用頻度情報をプリンタコントローラに伝送する。所定のページ内での特定のリソースの使用頻度を測定するため、ＰＤＦパーサ１０２は、同リソースが同ページのレンダリングに何回使用されるかを判定するために同ページ内の全コマンドを検査する。また、より好ましくは、使用頻度情報は、印刷対象の全ページ内でリソースが使用される回数を示す。これを達成するため、ＰＤＦパーサ１０２は、各リソースの使用頻度を測定するために印刷対象の全ページを検査する（パーサがプリンタコントローラから全部の印刷順番情報を受信した場面を想定している）。この方法の利点は、レンダリング中のレンダリングモジュール１２１が、ＲＡＭ内のリソースがそれを参照予定の印刷対象ページ内の全コマンドによって使用された後はそれ以上レンダリングに必要ないことを判断することができ、そのリソースをＲＡＭから削除できる点である。
【００２８】
使用頻度情報は、印刷対象のページ内で使用される全データブロック（リソースおよびコマンド）を一覧表示し、それらのサイズ、使用頻度（回数）、どのページ内で伝送されるのか（１つのリソースは複数回使用されうるが伝送されるのは１回だけであるため）等を明示するリソース使用量参照テーブルの形態でプリンタコントローラに伝送される。また、同テーブルは、各ページ分のデータのサイズを明示する。リソース使用量参照テーブルは、どのＰＤＦデータよりも先に伝送される。その代わりに、使用頻度情報は、各々がＰＤＦファイルの１ページ分に対応する複数のリソース使用量参照テーブルに構成されることも可能であり、その場合、一のページに対応するリソース使用量テーブルは同ページ分のＰＤＦデータよりも先に伝送される。より詳細に後述するように、一または複数のリソース使用量参照テーブルは、データ伝送時にＰＤＦデータのブロックを保存するかどうかを判断するためにプリンタコントローラにより利用される。
【００２９】
ＰＤＦパーサ１０２により生成されたタグおよびリソース使用量参照テーブルは、ＰＤＦデータのデータブロックの保存場所を特定するためにプリンタコントローラのプリプロセッサ１２１により利用される。あるページのＰＤＦデータがＲＡＭに完全に保存されることができない場合、プリプロセッサモジュール１２１は、リソース使用量参照テーブル内の使用頻度情報に基づき、同ページのどのブロックがＲＡＭに保存されるべきかを決定する。例えば、プリプロセッサモジュール１２１は、使用頻度の高いリソースが残りの利用可能なＲＡＭ容量よりも大きいことを判別するが、その場合、プリプロセッサモジュール１２１は使用頻度が低くても容量の小さいリソースをＲＡＭに保存することを決定する。または、プリプロセッサモジュール１２１は、使用頻度が高くサイズが小さいリソースがＲＡＭに収まる場合であっても、それにより、残りのＲＡＭが、使用頻度は低いがサイズがはるかに大きい別のリソースにはわずかに足りなくなってしまうことを判別することができ、その場合、プリプロセッサモジュールは、サイズが小さく使用頻度が小さい方のリソースをディスクに保存し、サイズが大きく使用頻度が小さい方のリソースをＲＡＭに保存することを選択する。次ページのどのリソースがＲＡＭに保存されるかを決定した後、プリプロセッサモジュール１２１は、同ページ分の各データブロックが受信されたときに、同データブロックをＲＡＭとディスクのどちらに保存するかを決定することができる。
【００３０】
「ＰＤＦダイレクト印刷用ＰＤＦデータの非逐次的伝送」と題された共有にかかる係属中の米国特許出願第１１／６８１１３８号は、ＰＤＦダイレクト印刷用データのクライアントコンピュータからプリンタコントローラへの非逐次的な伝送方法について説明している。そこでは、ＰＤＦファイル伝送機能を実行するクライアントコンピュータ側のＰＤＦパーサについて説明されている。本発明の実施形態におけるＰＤＦパーサ１０２は、第１１／６８１１３８号出願において説明されているＰＤＦパーサと一定の共通点を有しているが、これはそもそもＰＤＦデータのＲＡＭ／ディスク分配保存を実現するためのプリンタコントローラ側のプリプロセッサモジュール１２１との連動に供するものである。
【００３１】
本発明の別の態様によると、ＰＤＦデータ伝送時におけるＰＤＦデータのＲＡＭおよびディスクへの分配に加えて、ディスク１２５に保存されたＰＤＦデータの一部が、レンダリング処理中に利用可能となった確保されたＲＡＭ１２４内へ移動させられることができる。確保されたＲＡＭ内のスペースは、アクティブなＰＤＦ印刷ジョブが完全に解析された場合や、解析中のＰＤＦファイルのいくつかのリソースが不要となり、レンダリングモジュール１２２（インタープリタ）が新たなデータのための容量を確保するためにそれらのリソースをＲＡＭから削除可能となった場合を含む様々な条件化で利用可能とされることができる。これを実現するため、レンダリングモジュール１２２は、確保されたＲＡＭ１２４およびそのスペースが利用可能であるかどうかを監視し、ＰＤＦデータをハードディスク１２５からＲＡＭ１２４に移動させ、それに応じてメモリ割り当てデータベース１２３を更新する。レンダリングモジュール１２２は、クライアントからのＰＤＦデータ受信時にどのＰＤＦデータをＲＡＭに保存すべきか判断するために前もって使用されたのと同様のアルゴリズムに基づき、データブロックがディスクからＲＡＭに移動させられるべきかを決定する。レンダリング処理とデータ移動処理が別のスレッドによって実行される場合には、レンダリングに使用されているデータを移動させること、またはその逆のことを防止するための注意が必要である。
【００３２】
本発明の好適な実施形態によるＰＤＦデータの伝送、保存およびレンダリングの処理は、図２−５のフローチャートを参照してより詳細に説明される。図２は、クライアントコンピュータ１００側のＰＤＦパーサ１０２により実行される、プリンタコントローラ１２０にＰＤＦダイレクト印刷用ファイルのページを伝送するための処理を図示する。図２に示されるように、ＰＤＦダイレクト印刷用ファイルのデータ伝送開始時に、パーサ１０２は、プリンタコントローラからページ印刷順番を受信する（Ｓ２１）。ページ印刷順番情報に基づき、パーサは、どのデータブロックがページ印刷順番の範囲内であるか（つまり、プリンタコントローラに伝送されるか）を決定するためにＰＤＦファイルを通じて処理を繰り返し、各データブロックに対応する使用頻度情報を収集し、リソース使用量参照テーブルを生成する（Ｓ２２）。リソース使用量参照テーブルは、プリンタコントローラに伝送される（Ｓ２３）。その後、パーサは、印刷順番に従って次ページ分のデータブロックを取得するための解析を実行し、各データブロックのタグを生成する（Ｓ２４）。タグはデータ形式の識別表示、バイトサイズおよびファイル先頭からのバイト単位のオフセットを含む。データブロックはプリンタコントローラに伝送され、各ブロックの先頭には関連するタグが付けられている（Ｓ２５）。また、各データブロックの伝送のために、パーサは、データブロックに関連するＰＤＦファイルの相互参照テーブルの一部分をコピーし（Ｓ２６）、相互参照テーブルの同部分をプリンタコントローラに伝送する（Ｓ２７）。簡略化のため、ステップＳ２４／Ｓ２５およびＳ２６／Ｓ２７が図２のように逐次的な順番で表示されているが、既に指摘したように、各ページ分のデータブロックおよび相互参照テーブルの関連部分の実際の伝送順番は、データブロックの各々および相互参照テーブルの各部分にその後に続く内容を表示するタグが付される限りは、必ずしも重要ではない。ステップＳ２４からＳ２７までは、印刷順番に含まれる全ページが伝送されるまで繰り返される。
【００３３】
図３は、クライアントコンピュータ１００から伝送されたＰＤＦダイレクト印刷用データを受信し保存するためにプリンタコントローラ１２０のプリプロセッサモジュール１２１により実行される処理を図示する。図３に示されるように、ＰＤＦダイレクト印刷処理の開始時に、プリプロセッサモジュール１２１は、ページ印刷順番に関する情報をクライアントコンピュータ側のパーサ１０２に伝送する（ステップＳ３０）。図２に関連して説明したように、パーサは印刷順番情報を用いてリソース使用量参照テーブルをプリンタコントローラに伝送するが、その後には、印刷順番に応じたタグ付きのＰＤＦデータブロックおよび相互参照テーブルの当該データブロックに対応する部分が続く。そのため、ステップＳ３１において、プリプロセッサモジュールは、リソース使用量参照テーブルを受信し、それをデータ伝送およびレンダリングにおいて使用するために（好ましくはＲＡＭに）ローカル保存する。リソース使用量参照テーブル内の情報に基づき、プリプロセッサモジュールは、印刷順番における次ページ分の合計データサイズが、残りの利用可能なＲＡＭのサイズよりも大きいかどうかを判定する（Ｓ３２）。大きくない場合（ステップＳ３２の「Ｎ」）、同ページ分の全データブロックがＲＡＭに保存される。そのため、プリプロセッサモジュールは、クライアントコンピュータからタグ付きの次のデータブロックおよび相互参照テーブルの対応する部分を受信する（ステップＳ３４）。ＰＤＦデータブロックはＲＡＭに保存され、相互参照テーブルの対応する部分も同様に保存される（ステップＳ３５）。そのＰＤＦデータに関連するタグは破棄される。プリプロセッサモジュールは、ＰＤＦデータブロックが保存された場所を記録するためにメモリ割り当てデータベース１２３を更新する（ステップＳ３６）。ステップＳ３４からＳ３６までＰＤＦデータの同ページ分の全データブロックが受信され保存されるまで繰り返される（ステップＳ３７の「Ｙ」）。
【００３４】
他方、ステップＳ３２においてプリプロセッサモジュールが、ＰＤＦデータの次ページのサイズが残りの利用可能なＲＡＭのサイズよりも大きいと判断した場合（ステップＳ３２の「Ｙ」）、プリプロセッサモジュールは、次ページのどのデータブロックがＲＡＭに保存され、どのデータブロックがディスクに保存されるべきかを決定するために、リソース使用量参照テーブルを検査する（ステップＳ３３Ａ）。プリプロセッサモジュールは、クライアントコンピュータからタグ付きの次のＰＤＦデータブロックおよび相互参照テーブルの対応する部分を受信する（ステップＳ３４Ａ）。タグに基づき、プリプロセッサモジュールは、同ブロックがＲＡＭに保存されるべきかまたはディスクに保存されるべきかを判断し、その結果に応じてデータを保存する（ステップＳ３５Ａ）。ステップＳ３５において、プリプロセッサモジュールは、相互参照テーブルの対応する部分を保存する。プロプロセッサモジュールは，ＰＤＦデータブロックが保存された場所を記録するため、メモリ割り当てデータベース１２３を更新する（ステップＳ３６Ａ）。ステップＳ３４ＡからＳ３７ＡまではＰＤＦデータの同ページ分の全データブロックが受信され保存されるまで繰り返される（ステップＳ３７Ａの「Ｙ」）。
【００３５】
図３には示されていないが、過密状態が生じるのを防止するため、ステップＳ３２は、確保されたＲＡＭが満杯であるかどうか（つまり、データブロックを保存するために利用可能な空き容量が十分でないかどうか）の判断も行う。ＲＡＭが満杯である場合、その後に受信された全データはディスクに保存されることになる。プリプロセッサモジュールは、データブロックがＲＡＭではなくディスクに保存された場合を除き、ステップＳ３４〜ステップＳ３７と同様のステップを繰り返す。
【００３６】
更新ステップＳ３６およびＳ３６Ａは、メモリ割り当てデータベースを更新するために、データブロックに関連するタグに含まれる情報を利用する。前述の通り、メモリ割り当てデータベースは、ＰＤＦデータの各ブロックを元のＰＤＦファイル内でのオフセット値により特定し、データブロックが保存される（ＲＡＭまたはディスク内の）保存場所を明示する。
【００３７】
ステップＳ３５およびＳ３５Ａにおいて、相互参照テーブルの対応する部分は、ＲＡＭまたはディスクに保存されるが、同部分はレンダリング処理中に頻繁に参照されるためＲＡＭに保存されることが好ましい。印刷順番に含まれるデータブロックに対応する相互参照テーブルの全部分は、元のＰＤＦファイル内の相互参照テーブルが印刷順番に含まれるデータブロックに対応する部分のみを含む場合は別として、一箇所に保存され、元のＰＤＦファイル内の相互参照テーブルと同様の新たな相互参照テーブルを形成することが好ましい。新たな相互参照テーブルの記憶場所は、メモリ割り当てデータベースに記録されることができる。
【００３８】
上述の実施形態において、ＰＤＦパーサ１０２は、リソース使用量参照テーブルおよびＰＤＦデータの各ブロックに関連するタグを生成する。より一般的に、ＰＤＦパーサ１０２は、伝送されるＰＤＦデータの内容を示す適切なメタデータを生成するが、同メタデータは上述のリソース使用量参照テーブルおよびタグの特定の形式により制限されるものではない。プリプロセッサモジュール１２１は、パーサ１０２から伝送されたＰＤＦデータの受信時にこのメタデータを検査する。
【００３９】
図４は、ダイレクト印刷用ＰＤＦファイルのレンダリングのためにプリンタコントローラ１２０のレンダリングモジュール１２２により実行される処理を図示する。既に、ＰＤＦデータファイルからのデータブロックは、ＲＡＭおよびディスクに記憶されており、メモリ割り当てデータベース１２３は、図３に示された処理に従ってプリプロセッサモジュールにより構築されている。また、既に、上述のように新たな相互参照テーブルが生成されている。本レンダリング処理は、ＰＤＦデータのポストスクリプト（ＰＳ）データまたは他のページ記述言語（ＰＤＬ）への変換、およびビットマップ画像を生成するためのＰＳまたはＰＤＬデータに対するラスタ画像プロセシング（ＲＩＰ）の実行等の従来のＰＤＦレンダリング処理と同様のステップを含むものである。従来のレンダリング処理では、ＰＤＦデータのブロックがレンダリングに必要であるとき、レンダリングモジュールは、同データのＰＤＦファイル内の場所を特定するために相互参照テーブルを参照する。図４に示されたレンダリング処理において、レンダリングモジュール１２２は、ＰＤＦデータのブロック、つまりリソースまたはコマンドを必要とするときは常に、必要なデータブロックのオフセット値を取得するために相互参照テーブルを参照する。そして、レンダリングモジュールはメモリ割り当てテーブルにアクセスし、そして、データブロックの特定に役立つオフセット値を用いてプリンタコントローラ側におけるデータブロックの保存場所を取得する（Ｓ４２）。そして、レンダリングモジュールは、必要なデータを適切な保存場所から読み出す（ステップＳ４３）。その後、レンダリングモジュールは、読み出したデータブロックを従来のレンダラと同様の方法で処理する（つまり、コマンドを解釈するか、またはブロックに含まれるリソースを利用する）（ステップＳ４４）。
【００４０】
本レンダリング処理は、既存のＰＤＦレンダリング用ライブラリを改良することにより実施されることができる。最新のＰＤＦレンダリング用ライブラリは、全リソース／コマンドがディスクに保存された単一のＰＤＦファイル内に存在し、リソースおよびコマンドにアクセスするためにｆｒｅａｄ（）、ｆｓｅｅｋ（）等のディスク操作を使用することを前提としている。本発明の実施形態に係る改良されたＰＤＦレンダリングライブラリは、このようなディスク操作を図４に示されたステップＳ４１〜Ｓ４３で置き換える。
【００４１】
図５は、ＲＡＭ使用量の監視およびディスクからＲＡＭへのデータ伝送のためのレンダリング処理中にレンダリングモジュール１２２により実行される監視方法を図示する。レンダリングモジュールは、１ブロック分（または１ページ分）のデータをディスクからＲＡＭに移動させるために十分なＲＡＭが存在するかどうかを判断するためにＲＡＭ使用量を監視する（ステップＳ５１）。十分なＲＡＭが存在する場合（ステップＳ５２の「Ｙ」）、レンダリングモジュールは、どのブロックがディスクからＲＡＭに移動させられるべきかを判断する（ステップＳ５３）。レンダリングモジュールが１ページ分のＰＤＦデータを同時に移動させるような実施形態において、ステップＳ５３は、移動させるべき次ページ分のＰＤＦデータを印刷順番に従って決定することを含む。レンダリングモジュールが１ブロック分のデータを同時に（つまり、１ページ分のデータには十分なＲＡＭの空き容量がなくても、１ブロック分のデータに十分なＲＡＭの空き容量があり次第）移動させるような別の実施形態において、レンダリングモジュールは、ＲＡＭに移動させるべきデータブロックを決定するために、前述の使用頻度ルールを採用する。そして、レンダリングモジュールは移動対象のブロックのディスク内の保存場所を特定するために（ステップＳ５４）、メモリ割り当てデータベース１２３にアクセスする（ステップＳ５５）。レンダリングモジュールは、移動させられたブロックの新たな保存場所を記録することによりメモリ割り当てデータベース１２３を更新する（ステップＳ５７）。
【００４２】
また、レンダリングモジュール１２２は、あるリソースがページ印刷順番に含まれるそれを利用予定の全コマンドによって利用された後に、同リソースをＲＡＭから削除することが可能である。これは、リソース使用量参照テーブルが、各リソースがページ印刷順番に含まれる全コマンドによって利用される合計回数を明示しているため可能となる。レンダリングモジュール１２２は、例えば、リソースが使用される都度、各リソースの使用回数を追跡し、その使用回数はリソースが削除可能であることを意味するゼロに達するまで１ずつ減じられる。
【００４３】
本発明の実施形態によるＰＤＦデータ分配方法およびメモリ割り当てスキームの利点は、ＰＤＦダイレクト印刷用ジョブのレンダリング速度が向上する点である。ＲＡＭからのデータアクセス（読み出しおよび書き込み）は、ハードディスクからのアクセスよりも数倍高速である。そのため、ＲＡＭへのデータ保存は、クライアントコンピュータからプリンタコントローラへのＰＤＦデータの伝送に必要な時間を低減する。スプールされたＰＤＦデータのレンダリングモジュールによる読み出しも、ＰＤＦデータがハードディスクではなくＲＡＭに存在する場合には、より高速になる。非常に大きな印刷ジョブにとっては、ハードディスクではなくＲＡＭの内部および外部へのデータの書き込みおよび読み出しを行うことにより節約できる時間は顕著となりうる。
【００４４】
本発明の１つの大きな特徴は、ＰＤＦダイレクト印刷用データをプリンタコントローラのＲＡＭに保存することであるが、ＰＤＦダイレクト印刷用データのＲＡＭおよびディスクへの分配は、多数の代替的手法によっても達成されうる。上述したＰＤＦデータ分配アルゴリズムのうちのいくつか、および他の変形例が実行可能である。さらに、クライアントコンピュータ側でインテリジェントＰＤＦパーサを用いることなくＰＤＦデータ分配方法を実行することが可能である。クライアントコンピュータにインテリジェントＰＤＦパーサが実装されていない場合、プリプロセッサモジュールは、従来のＰＤＦダイレクト印刷方法と同様に，ＰＤＦファイル全体をプリンタコントローラに伝送してからＰＤＦデータ分配アルゴリズムを実行してＰＤＦデータの一部をＲＡＭに移動するように命令する。つまり、図２および３に示されたステップが統合され、プリンタコントローラのプリプロセッサモジュール１２１により実行される。このような代替的な実施方法は、ＰＤＦファイルの全ページが印刷されない場合に、使用されないページまでもがクライアントからプリンタコントローラに伝送されるという不都合を伴う。他方、クライアントにインテリジェントＰＤＦパーサが実装されていない場合であってもプリンタコントローラのみによりＰＤＦデータ分配方法が実行可能になるという利点がある。クライアント側のパーサ１０２が使用される場合、ＰＤＦデータはクライアント側のパーサから適切な順番で伝送されることになるため、分配処理に要する時間が短くなり、ＰＤＦデータがクライアント側のパーサから受信され次第ＰＤＦレンダリング処理を開始できるようになる。他方、レンダリングモジュールが（伝送中のＰＤＦファイルではなく）別のジョブのレンダリングのために稼動している（つまり、スプールモードである）場合であっても、レンダリング処理開始の遅れはほとんど生じない。レンダリングモジュールが未稼働でありスプール済みジョブを実行可能である場合は、既にプリプロセッサモジュールがＰＤＦデータのインテリジェント分配アルゴリズムに従ってスプール済みの同ジョブのＰＤＦデータの一部をＲＡＭに移動させた可能性が非常に高い。よって、その場合、ＰＤＦレンダリング性能は、クライアント側のパーサが関与したかどうかとは無関係に、ＰＤＦデータのＲＡＭへの保存による恩恵を受けることができる。
【００４５】
プリンタ側のみでの実施（つまり、クライアント側のパーサが存在しない）のための別の変形例は、プリプロセッサモジュール１２１が、ＲＡＭが満杯になるまでクライアントからのＰＤＦデータをＲＡＭに保存し、残りのＰＤＦデータをディスクに保存するというものである。クライアントから受信されたデータはページ印刷順番を考慮したものではないため、使用されないページの不要なデータがＲＡＭに保存される場合がある。そのため、プリプロセッサモジュール１２１は、前述のＰＤＦデータ分配アルゴリズムを用いてより適切な保存方法を実現するため、ＰＤＦデータをＲＡＭとディスクの間で移動させるための第２段階のプロセスを実行する。例えば、プリプロセッサモジュール１２１は、ＲＡＭに保存された不要なデータの削除、および／またはＲＡＭに保存されたもののページ印刷順番の後方にある一部のＰＤＦデータの移動、およびディスク内に保存されたＰＤＦデータのＲＡＭスペース解放後のＲＡＭへの移動を実行しうる。
【００４６】
さらに別の代替的手法として、クライアントコンピュータは、プリンタコントローラから印刷順番情報を受信し、ＰＤＦファイルの全ページを伝送することなく印刷対象のページを伝送するＰＤＦパーサを有しうるが、クライアントコンピュータ側の同パーサは、使用頻度情報を生成するためにＰＤＦデータの内容の解析を行うわけではない。プリプロセッサモジュールは、クライアントからＰＤＦデータのページを受信した後に、ＰＤＦデータの一部をＲＡＭに移動させるためにＰＤＦデータ分配アルゴリズムを実行する。
【００４７】
このようなＰＤＦデータ分配方法のプリンタコントローラ側での実行は、プリンタコントローラが存在するコンピュータのハードウェア能力を有効活用したものであることが好ましい。コンピュータがマルチコアのアーキテクチャを有する場合、１つのコアで監視およびデータ移動のタスクを実行し、別のコアでレンダリング機能を実行することが可能となる。このような設計によれば、ディスクからＲＡＭへのデータ移動がレンダリングモジュールからＣＰＵ時間を奪うことはなくなる。シングルコアのアーキテクチャは、レンダリングモジュールが印刷セクションによるフレームバッファ内のレンダリング済み画像を印刷するのを待機する場合であっても、プリンタコントローラは、その待ち時間を有効活用して監視およびデータ移動タスクを実行することができる。
【００４８】
上記説明ではＰＤＦ文書のダイレクト印刷を例に挙げたが、本方法はＰＤＦダイレクト印刷に限定されない。本方法は、他の種類の文書、特に、非シーケンシャルな方法で文書にアクセスするためのインタープリタを必要とする形式の文書に適用可能である。
【００４９】
本発明の精神および範囲から逸脱することなく本発明のダイレクト印刷方法及び装置の範囲内で様々な改良例および変形例が実現可能であることは当業者にとり自明である。そのため、本発明は、添付の請求項に記載された範囲および均等の範囲に含まれる改良例および変形例を対象とするよう意図されている。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施形態に係るクライアントコンピュータおよびプリンタコントローラからなるシステムを図示する。
【図２】本発明の一実施形態に係る、ダイレクト印刷用ＰＤＦファイルをクライアントからプリンタコントローラに伝送するためのクライアントコンピュータによる処理を図示する。
【図３】本発明の一実施形態に係る、クライアントコンピュータから伝送されたＰＤＦダイレクト印刷用データを受信し保存するためのプリンタコントローラによる処理を図示する。
【図４】本発明の一実施形態に係るＰＤＦダイレクト印刷用ファイルのレンダリングのための処理を図示する。
【図５】本発明の一実施形態に係る、ＲＡＭ使用量をモニタリングし、ディスクからＲＡＭにデータを伝送するためのレンダリング処理時のモニタリング方法を図示する。
【図１】
2008276747.tif 000003
【図２】
2008276747.tif 000004
【図３】
2008276747.tif 000005
【図４】
2008276747.tif 000006
【図５】
2008276747.tif 000007
【外国語明細書】
2008276747000001.pdf
2008276747000002.pdf
2008276747000003.pdf
2008276747000004.pdf