JP4164467B2 - 画像処理装置、画像処理制御方法、及びプログラム - Google Patents

画像処理装置、画像処理制御方法、及びプログラム Download PDF

Info

Publication number
JP4164467B2
JP4164467B2 JP2004093215A JP2004093215A JP4164467B2 JP 4164467 B2 JP4164467 B2 JP 4164467B2 JP 2004093215 A JP2004093215 A JP 2004093215A JP 2004093215 A JP2004093215 A JP 2004093215A JP 4164467 B2 JP4164467 B2 JP 4164467B2
Authority
JP
Japan
Prior art keywords
filter
data stream
request data
print request
image processing
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.)
Expired - Fee Related
Application number
JP2004093215A
Other languages
English (en)
Other versions
JP2005284384A (ja
Inventor
雅仁 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to JP2004093215A priority Critical patent/JP4164467B2/ja
Application filed by Canon Inc filed Critical Canon Inc
Priority to PCT/JP2005/006221 priority patent/WO2005093560A1/en
Priority to KR1020087001692A priority patent/KR100815728B1/ko
Priority to CNB2005800096094A priority patent/CN100533365C/zh
Priority to US10/585,645 priority patent/US8373874B2/en
Priority to EP05727481A priority patent/EP1735687A4/en
Priority to KR1020067022221A priority patent/KR100852795B1/ko
Publication of JP2005284384A publication Critical patent/JP2005284384A/ja
Application granted granted Critical
Publication of JP4164467B2 publication Critical patent/JP4164467B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Description

本発明は、画像処理装置、画像処理制御方法、及びプログラムに関し、特に、プリンタ等の機能を有する画像処理装置、該画像処理装置に適用される画像処理制御方法、及び該画像処理制御方法をコンピュータに実行させるためのプログラムに関する。
従来、画像処理装置のソフトウェアはリアルタイムオペレーティングシステム(OS)の上に静的かつ固定的ないわゆるファームウェアとして構築されることが主流であった。このようなファームウェアは内部的に複数のモジュールから構成されている場合でも、全体が、単一のロードモジュールに静的にリンクされた状態で装置の不揮発性メモリに記憶され、ファームウェアは、システムの起動時にハードディスクなどの不揮発性メモリからRAMにロードされ実行されるか、または、ROMなどの不揮発性メモリ上で直接実行される。特に低価格な画像処理装置のような組み込みシステムを構成するファームウェアは一般に、その経済性や安全性などのために、部分的なモジュールの動的なロードやリンクを行わないように構成されている。すなわち、ダイナミックリンクを実現するために必要なシンボルテーブルの記憶容量や、シンボルのアドレスへの解決を行うための処理に関するオーバヘッドなどが、装置のコストパフォーマンスを悪化させ、また、追加してロードおよびリンクされるサブモジュールによって、そのサブモジュールをリンクする以前には十分に評価され達成されていたシステム全体の品質やセキュリティが脅かされる危険があるため、上記のようにファームウェアが構成される。
そこで、本出願人が例えば特許文献1や特許文献2などによって開示しているように、組み込みシステムのファームウェアのリアルタイムOS上にさらにもう一層のソフトウェア動作環境を設け、この追加されたソフトウェア動作環境において、ダイナミックローディングやダイナミックリンキングや動的なメモリ操作などのソフトウェアの動的な特性をサポートする画像処理装置が開発されている。上記追加されたソフトウェア動作環境は、インタプリタとひとそろいのアプリケーションプログラミングインタフェース(API)群やフレームワーク群とから構成され、その上で動作するソフトウェアのために、一種のOSあるいはコンピューティングプラットフォームというべきものを提供する。インタプリタは、所定の命令セットに含まれる命令からなる一連の命令列を逐次的に読み出し解釈し実行する。この命令セットをハードウェアのCPUのための命令セットと同等の位置づけに捉える場合、インタプリタは特に仮想マシン(virtual machine)と呼ばれることもある。ひとそろいのAPI群およびフレームワーク群は、このソフトウェア動作環境の下層に内在する実際のリアルタイムOSが提供する資源やハードウェア資源を抽象化した各種の資源群に対するアクセスを、ソフトウェア動作環境上で動作するソフトウェアのために提供する。資源にはプロセッサによる命令実行コンテクストやメモリ、ファイルシステム、ネットワークインタフェースを含む各種入出力(I/O)などがある。特に、命令実行コンテクストでは、実際のCPUとリアルタイムOSが提供するマルチタスク機構とは独立に、ソフトウェア動作環境が独自にインタプリタ上の命令実行コンテクストを管理できる。また、メモリでも同様に、ソフトウェア動作環境が独自のメモリ管理を提供できる。
このようなソフトウェア実行環境上で動作するソフトウェアは、インタプリタによって逐次的に読み込み解釈実行されるため、これらの処理の過程で命令列を監視し、システムに悪影響を与える動作を除外できる可能性がある。また、ソフトウェア実行環境上のソフトウェアから各種資源に対するアクセスでは、ソフトウェア実行環境が提供するAPI群やフレームワーク群を経由して間接的に資源を操作するため、この過程でシステムに悪影響を与える動作を除外できる可能性がある。したがって、ファームウェア内部に、インタプリタおよびAPI群とフレームワーク群とからなるソフトウェア実行環境の階層を設けるアプローチは、基本的には静的かつ固定的に構成されるべき低コスト組み込みシステムのファームウェアにおいて、ソフトウェアの動的な特性を部分的に導入するために非常に有効である。
上記アプローチにおいて、ソフトウェア実行環境の階層を実現するためにインタプリタとしてJava(登録商標)仮想マシンを採用し、Java(登録商標)に関連するAPI群やフレームワーク群を採用することができる。本出願人は2003年に、画像処理装置のファームウェア内部にJava(登録商標)プラットフォームを内蔵した複合機であるMEAP(Multifunctional Embedded Application Platform、登録商標)を製品化している。
一方、例えば特許文献3には、ネットワークコンピュータ内蔵プリンタおよびこれを備えたコンピュータネットワークシステムが開示されている。これによれば、内部にネットワークコンピュータを備えたアプリケーションダウンロード型プリンタを用い、コンピュータネットワークから、印刷すべきデータファイルと該データファイルに対応したアプリケーションとを上記プリンタ内にダウンロードし、上記ネットワークコンピュータ上で上記アプリケーションを立ち上げることにより該データファイルを開いてラスタイメージに変換し印刷することが行われる。この特許文献3には、アプリケーションが「Java(登録商標)アプレット」である場合も開示され、またアプリケーションが印刷データファイルとともにクライアントからプッシュされる場合も、プリンタがアプリケーションサーバなどからプルする場合も開示されている。
さらに、特許文献4には、複数の周辺機器および周辺機器を動作させるソフトウェアを搭載した複数の端末装置および少なくとも周辺装置を動作させるソフトウェアに関するデータベースを備えたサーバ装置を伝送路に接続させ、所定の通信プロトコルに基づいてネットワーク通信を行うネットワーク通信システムが開示される。これによれば、周辺機器は、サーバ装置から周辺機器を動作させるソフトウェアの全部/一部、あるいはソフトウェアが使用するモジュールに対応する最新モジュール情報を要求・獲得するクライアント制御部と、獲得した最新モジュールを端末装置に配付するソフトウェア配信エージェントとを備えている。またこの特許文献4には、周辺機器を操作するソフトウェアが使用するクライアント側モジュールとして、「java(登録商標)アプレット」や「java(登録商標)アプリケーション」が供給可能であることも開示されている。
特開平11−282684号公報 特開2003−256216号公報 特開平11−53132号公報 特開平11−306107号公報
ところで、ページ記述言語(PDL)プリンタにおいて、カスタマイズや微細な修正などの個別対応が求められる事例がある。すなわち、顧客のプリンティング環境およびそれぞれの環境における要求は多種多様である。たとえば基幹系の業務システムでは、顧客環境のそれぞれにおいて独自に開発された業務アプリケーションが直接にプリントデータを生成するように作られている場合がある。また、業務アプリケーションがプリンタドライバを介してプリントデータを生成する場合であっても、ひとたび正常に稼働しはじめたシステム全体の安定性を維持したいという要望が非常に強く、プリンタドライバを簡単に変更することは許されないことがある。また、プリンタには他社の開発したPDLを解釈してプリントする機能を備えるものがあるが、顧客のシステムによっては、そのプリンタ専用に開発されたプリンタドライバではなく、またPDL開発元が開発したものでもない第三者の開発したプリンタドライバを経由してプリントを行うようにシステムが構築されており、そしてそのドライバの変更が許されない場合もある。すなわち、現実の顧客環境は多種多様であり、個別対応が求められる。
このような現実のプリンティング環境の制約の中で、プリンタのベンダは、顧客環境の側に対応を求めるのではなく、プリンタ側の対応によって各種の顧客要望に応えるべき使命がある。たとえば、プリンタの新製品が提供する新しい機能として両面印刷や製本などのフィニッシング機能があった場合、同時に開発された専用のプリンタドライバ経由でプリントジョブを投入したり、顧客の業務アプリケーションが新規追加されたコマンド列を含むPDLデータを生成するように更新されたりすれば、これらの新機能を使いこなせることは当然である。しかしながら、顧客システムに影響をおよぼさず、プリンタ側の対応によって装置の新機能を利用可能とすることが求められる。
あるいは、あるPDL仕様に対応したプリンタを複数のベンダが供給している場合、個々のベンダの解釈の差異などに基づく互換性の問題は常に存在しうる。この種の問題は問題が顕在化し現実に業務の支障となる顧客環境に対しては、仮に個別対応であってもプリンタ側が対応して回避しなければならない。
また、ごく稀にプリンタファームウェアの実装上の問題によって、特定のパターンのPDLデータに対して顕在化するバグを含んだまま製品が出荷されてしまう場合もある。十分な品質評価を経て製品化される以上、このような特定のパターンは多くの顧客環境の通常の利用においては現れることがなく、まったく問題とならないが、それでも例えば上記業務システムなどにおいて顕在化する場合があり得、そしてそのようなケースに対しては特にその顧客環境においては可能な限りすみやかに対策されなければならない。
さらにまた、特定のアプリケーションが生成するPDLデータには、プリンタの実装の特性上、最適化できる余地のあるデータパターンが含まれる場合がありえる。たとえば冗長な記述が行われたPDLデータと最適な記述が行われたPDLデータとを比較した場合、そのプリントパフォーマンスの改善は著しいため、このような特定のアプリケーションを利用する顧客環境において、もしアプリケーションやプリンタドライバを更新できないのであれば、プリンタ側の対応によってPDLデータの最適化を行えることが望ましい。
これらの要望に、顧客システム側に影響を与えずプリンタ側で対応するためには、プリンタを構成するファームウェアを改造して個別対応リリースする方法があり、実際にこの方法がとられている場合もある。しかし、ファームウェアの改造による個別対応は、装置全体の品質の再評価を含め開発期間や開発費などが多くかかり、また顧客環境に納品した装置に組み込まれたファームウェアの更新には、フィールドエンジニアなどによる高度なメンテナンスの手間を要するため、顧客要望に速やかに応えるためにも、また費用対効果の面でも課題を残している。実際には、これらの要望のうちの一部に対しては、プリンタのファームウェア全体を変更するまでもなく、受信したPDLデータストリームを解釈する前の前処理を追加して、そこでPDLデータストリームそのものに変換を施すことによって対応できる。したがって、受信したPDLデータストリームを解釈する前の前処理を実現するソフトウェアだけを、他のファームウェアとは独立に柔軟かつ拡張可能に追加できる、より動的な機構が求められる。
しかしながら、従来の技術によって上記要請に応えようとしても、下記のような問題があった。
組み込みシステムのファームウェア内にJava(登録商標)プラットフォームのようなソフトウェア動作環境階層を内蔵するMEAPのような従来装置では、ソフトウェア動作環境上にファームウェアと独立した新たな装置組み込みアプリケーションを開発可能であり、APIによってJava(登録商標)アプリケーションから装置のプリント機能にアクセスすることはできた。しかしながら、Java(登録商標)プラットフォームがファームウェア内の組み込みアプリケーション階層に位置づけられているため、同階層においてネイティブの組み込みアプリケーションとして実現されているプリントデータ受信機能やプリントサーバ機能をJava(登録商標)アプリケーションのために流用できなかった。すなわち、たとえばネットワーク経由でプリントデータを受信するための各種プリントサービスプロトコルを実装したプリントサーバ機能をJava(登録商標)側にも再実装する必要があり、開発負荷や評価負荷ならびに実行時のメモリ面などでも非効率であった。
一方、その他の組み込みシステムのファームウェア内にソフトウェア動作環境階層を持たない従来装置においては、組み込みシステム全体がダイナミックリンクやプラグイン可能な構成になっており、システム全体が動的な構成になってしまっていた。動的な特性が求められる部分が、受信したPDLデータストリームを解釈する前の前処理を柔軟かつ拡張可能に追加する機構だけであることを前提とした場合には、これらの従来装置のアプローチはシステム全体を動的なソフトウェアとして構成するためのオーバヘッドに伴うコストアップや品質保証の難しさから低価格の小規模システムには向かなかった。
本発明はこのような問題点に鑑みてなされたものであって、PDLプリンタのカスタマイズの生産性を向上することを図った画像処理装置、画像処理制御方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、請求項1記載の発明によれば、クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、印刷要求データストリーム中の特定のデータを置換するフィルタ処理を行い、前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段と、前記受信手段が受信した印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、前記フィルタ手段によってフィルタ処理された印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段と、を備え、前記フィルタ手段はフィルタ処理を実行するためのフィルタプログラムをユーザによる操作に基づいて外部からインストールしたりアンインストールすることで、フィルタ処理の内容を変更することが可能であることを特徴とする画像処理装置が提供される。
また、請求項記載の発明によれば、クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈しジョブを制御する印刷ジョブ制御手段と、印刷要求データストリームをフィルタ処理して前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段と、前記受信手段によって受信された印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、1つ以上のフィルタ手段を印刷要求データストリームのデータパス中に配置可能に制御し、配置された1つ以上のフィルタ手段に逐次的に印刷要求データストリームを処理させるフィルタ管理手段と、前記フィルタ管理手段によって配置された1つ以上のフィルタ手段によってフィルタ処理された印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段と、を有することを特徴とする画像処理装置が提供される。
また、請求項12記載の発明によれば、クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、印刷要求データストリーム中の特定のデータを置換するフィルタ処理を行い、前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段とを備え、前記フィルタ手段はフィルタ処理を実行するためのフィルタプログラムをユーザによる操作に基づいて外部からインストールしたりアンインストールすることで、フィルタ処理の内容を変更することが可能である画像処理装置に適用される画像処理制御方法において、前記受信手段が受信した印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェースステップと、前記フィルタ手段によって生成された処理済の印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェースステップとを有することを特徴とする画像処理制御方法が提供される。
また、請求項14記載の発明によれば、クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈しジョブを制御する印刷ジョブ制御手段と、印刷要求データストリームをフィルタ処理して前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段とを備えた画像処理装置に適用される画像処理制御方法において、前記受信手段によって受信された印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェースステップと、前記フィルタ手段によって生成された処理済の印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェースステップと、1つ以上のフィルタ手段を印刷要求データストリームのデータパス中に配置可能に制御し、配置されたフィルタ手段に逐次的に印刷要求データストリームを処理させるフィルタ管理ステップとを有することを特徴とする画像処理制御方法が提供される。
さらに、上記画像処理制御方法をコンピュータに実行させるためのプログラムが提供される。
本発明によれば、プリンタが受信したPDLデータストリームに対する解釈前の前処理を行うフィルタ部を柔軟かつ拡張可能なソフトウェアとして実装し、安定性が求められるプリンタファームウェアのその他の部分の実装と明確に分離することによって、PDLプリンタのカスタマイズの生産性を向上できる。
以下、本発明を実施するための最良の形態について、図面を参照して説明する。
〔第1の実施の形態〕
図1は、本発明の第1の実施の形態に係る画像処理装置のハードウェア構成を示すブロック図である。
図中、プリンタ1000は、内部に、異なる制御系のプリンタコントローラ1600を含む。
プリンタコントローラ1600におけるネットワークプリントサーバ用CPU1は、書き換え可能なFlashROM3に記憶された制御プログラムに基づいて、複数の外部装置から送られる印刷データやプリンタ制御命令等の各種データ送受信要求を統括的に制御する。複数の外部装置は、ローカルエリアネットワーク(LAN)2000に接続されたホストコンピュータ等(不図示)であり、LAN2000は、システムバス4に接続されるネットワークコントローラ(LANC)5によって通信制御される。上記の各種データ送受信要求は、外部装置から所定のネットワーク通信プロトコルを用いて送信される。
またCPU1は、ROM9に記憶された制御プログラム等、またはディスクコントローラ(DKC)15を介して接続された外部メモリ10に記憶された制御プログラムやリソースデータ(資源情報)等に基づいて、システムバス4に接続される各種デバイスとのアクセスを統括的に制御し、また受信された印刷データに基づき、ラスタコントローラ12によって出力画像情報を生成し、マーキングエンジン16に対して画像信号を出力する。
RAM2は、CPU1の主メモリ、ワークエリア等の一時記憶領域として用いられる。
LED6は、プリンタコントローラ1600の動作状態を示す表示部として機能し、例えばネットワークコントローラ(LANC)5とローカルエリアネットワーク(LAN)2000との電気的な接続状態(LINK)や、ネットワーク通信モード(10Baseか100Base、全二重か半二重)等の各種動作状態を、点滅パターンや点灯色によって示す。
操作パネル(操作部)18は、プリンタ1000の動作モード等の設定や印刷データの取り消し等の操作を行なうためのボタンや液晶パネルに重ねあわされたタッチパネルから構成されるとともに、プリンタ1000の動作状態を示す液晶パネルやLED等の表示部から構成される。
なお、マーキングエンジン16は既知の印刷技術を利用して印刷を実行するためのものであり、例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華(熱転写)方式等により、転写紙への画像形成を行う。
図2は、図1に示す画像処理装置を動作させるためのソフトウェア(モジュール)の構成を示す階層図である。
図2において上位の階層に位置するモジュールは、下位の階層に位置するモジュールに依存していることを示す。また特に線によって接続したモジュール間には、強い依存関係が存在することを示す。
201はネイティブコード部である。この部分は、画像処理装置のファームウェアを構成する標準部分であり、ハードウェアであるCPU1によって直接実行されるネイティブコードからなる。このネイティブコード部201は、ファームウェアとして、画像処理装置の開発時に単一のロードモジュールにスタティックリンクされ、生産時には画像処理装置の持つ不揮発性メモリに格納される。ファームウェアは画像処理装置の起動時に不揮発性メモリからRAM2に展開され、画像処理装置の稼働中にはCPU1がRAM2からコードを逐次的に読み出して解釈実行を行うが、実行時のダイナミックリンクは行わない。あるいは、ROMのようなCPUが直接読み出しアクセス可能な不揮発性メモリにファームウェアを格納して、RAMへの展開は行わずにCPUがROMからコードを逐次的に読み出して解釈実行するように構成してもよい。
202はプリントアプリケーションである。プリントアプリケーション202は、画像処理装置にプリンタとしての中心機能を提供するための組み込みアプリケーションであり、クライアントからの要求に呼応してプリントサービスを提供する。プリントアプリケーション202は制御API204によって、クライアントから要求されたプリントジョブの実行を行う。
203は印刷要求受信モジュールであり、クライアントから投入されるプリントジョブを受信する。印刷要求受信モジュール203は、RTOS209を介してプロトコルスタック210に依存している。クライアントからの印刷要求は、物理的にはEthernet(登録商標)などのネットワークやUSB、IEEE1394などの各種インタフェースを介してクライアントからプリンタに送信されるが、それぞれの接続形態に応じてプリント要求を行うためのアプリケーションプロトコルが規定されている。印刷要求受信モジュール203は、このプリントのためのアプリケーションプロトコルのサーバ機能を実装している。プリントサービスのためのアプリケーションプロトコルには、たとえばネットワークプロトコルだけでもLPRやSMB、PAP、NetWareなど各種の仕様が存在し、その実現のためには膨大な開発コストと品質評価コストを要する。印刷要求受信モジュール203は、これら複数のインタフェースごとにそれぞれ各種存在するプリントサービスプロトコルからなるマルチプロトコルをサポートしている。
印刷要求受信モジュール203は、画像処理装置の記憶装置にプリントジョブの待ち行列を構成し、いわゆるスプール機能を実装するように構成してもよい。この場合、印刷要求受信モジュール203は、他のジョブを実行している最中のようにジョブをただちに実行できないときにも、クライアントからのプリントジョブ要求を受け付けて待ち行列に格納しクライアントを解放する。待ち行列に格納されたプリントジョブは、プリントジョブが実行可能となった時にスケジューリングアルゴリズムに応じて逐次処理される。
204は制御APIであり、画像処理装置が提供する装置サービスにアクセスするためのアプリケーションプログラミングインタフェースである。制御API204を構成する主要なインタフェースのひとつは、プリントジョブを実行したり制御したりするためのインタフェースである。
205はジョブ制御モジュールである。ジョブ制御モジュール205は、画像処理装置が提供する各種の画像処理ジョブを制御する。主要な画像処理ジョブはプリントジョブである。ジョブ制御モジュール205は、制御API204を介して実行を要求されたプリントジョブのデータストリームを解釈して、プリントジョブの記述と、プリントされるべき印刷データの記述とを分離する。プリントジョブ記述は、印刷データの解釈展開系の動作パラメータを指定する環境データや、プリントアウトに利用する転写紙の給紙の指定、両面プリントなどのプリントモードの指定、排紙トレイの指定、ソート(コレート)の指定、ステイプルや製本などのフィニッシングの指定などを含む。一方、印刷データはPDLによって記述されており、主にページごとの描画が記述されている。ジョブ制御モジュール205は、プリントジョブ記述に応じてトランスレータ206、レンダラ207、ME制御モジュール208を制御する。またジョブ制御モジュール205は、印刷データストリームがトランスレータ206、レンダラ207、ME制御モジュール208の順に流れ処理されるようにスケジュールする。
206はトランスレータである。トランスレータ206は、PDLによって記述された印刷データを解釈して、レンダリング処理に適した印刷用中間言語の記述に変換する。レンダリング処理に適した印刷用中間言語によるプリントデータの記述をディスプレイリストと呼ぶ。トランスレータ206は、各種のPDL仕様ごとにそれぞれ異なる固有の実装を持ち、どのトランスレータもそれぞれのPDLをレンダラに固有のディスプレイリストへと変換する。
207はレンダラである。レンダラ207はディスプレイリストをラスタ画像に展開する。レンダラ207はRTOS209を介してレンダラドライバ212に依存している。
208はマーキングエンジン(ME)制御モジュールである。ME制御モジュール208は、画像処理装置において転写紙への画像形成を行うマーキングエンジン16を制御する。ME制御モジュール208はRTOS209を介してMEドライバ213に依存している。
209はリアルタイム(RT)OSである。RTOS209は、画像処理装置のネイティブコードファームウェアの実行環境を提供するプラットフォームである。RTOS209は、その上で動作するソフトウェアのために、ソフトウェア構築のために利用する基本的なサービスや画像処理装置が持つハードウェア資源を抽象化したサービスを提供し、また、画像処理装置のハードウェアをソフトウェアから利用しやすいインタフェースに抽象化するためのデバイスドライバ構築のフレームワークも提供する。RTOS209が提供する機能には、CPU1による命令実行コンテクストを抽象化したタスク管理、複数の実行コンテクストを仮想的に同時動作させ並行処理(concurrent processing)を実現するマルチタスク機構、タスク間でメッセージのやり取りをしたり同期をとったりするためのタスク間通信(メッセージキューやセマフォなど)、各種のメモリ管理、タイマーやクロック、割り込み管理やDMAの制御などがある。
210はプロトコルスタックである。プロトコルスタック210は、RTOS209のフレームワークに組み込まれ、より下層の外部インタフェースドライバ211が制御する外部インタフェース上にトランスポート層以下のプロトコルを実装する。たとえばネットワークインタフェースの場合、TCP/IPやUDP/IPなどのプロトコルを実現し、組み込みアプリケーション層に対してはRTOS209を介してバークレイソケットなどのアプリケーションプログラミングのためのインタフェースを提供する。またたとえば外部インタフェースがUSBの場合にはIEEE規格1284.4などのプロトコルを実現する。
211は外部インタフェースドライバである。ネットワークインタフェースや、IEEE1394、USB、RS232C、セントロニクスなどの各種インタフェースへの接続を提供するハードウェアを駆動する。たとえばネットワークの場合、Ethernet(登録商標)などのネットワークに接続するためのネットワークインタフェースハードウェアを駆動して物理層のプロトコルを実現する。
212はレンダラドライバであり、レンダラ207を駆動する。レンダラ207はディスプレイリストをラスタ画像に展開するためのハードウェアである。レンダラ207はソフトウェアによって実現してもよい。
213はマーキングエンジン(ME)ドライバであり、転写紙への画像形成を行うマーキングエンジン16を駆動する。
214は操作パネルドライバである。画像処理装置が備える操作パネル18の表示部への出力とキーやタッチパネルなどからの入力イベントを処理する。
215はインタプリタ環境である。インタプリタ環境215は、各種のインタプリタ環境のなかでも、ここではJava(登録商標)プラットフォームのランタイム環境に基づいたソフトウェアプラットフォームであり、それに画像処理装置固有のAPI群とフレームワーク群とを追加して構成されている。このソフトウェアプラットフォームは、その上で動作するインタプリタ言語で記述されたプログラムに対して動的なソフトウェア動作環境を提供する。インタプリタ環境215は、ネイティブコードによって実装された部分(ネイティブコード部201に含まれる)と、そのインタプリタ言語で記述されたプログラムとして実装された部分(インタプリタコード部220に含まれる)とを含む。
216はインタプリタであり、所定の命令セットによって記述された命令列から逐次的に命令を読み出し解釈し実行する。ここではインタプリタ216は、Java(登録商標)仮想マシンによって構成され、命令セットはJava(登録商標)のバイトコードである。
217は標準のAPIライブラリとフレームワーク群であり、RTOS209が提供する抽象化された各種コンピューティング資源を、さらにインタプリタ環境215固有のモデルによって抽象化して、この上で動作するプログラムのための実行環境を提供する。ここではJava(登録商標)プラットフォームを構成する標準的なクラスライブラリ群と、OSGiのフレームワークとによって実現している。
このJava(登録商標)プラットフォームは、RTOS209相当の抽象化された機能を提供し、たとえば仮想マシンによる命令実行コンテクストを抽象化したスレッド管理、複数の実行コンテクストを仮想的に同時動作させ並行処理を実現するマルチスレッド機構、スレッド間でメッセージのやり取りをしたり同期をとったりするためのスレッド間通信、高度に抽象化された各種のメモリ管理(コレクションなど)、タイマーやクロック、例外管理、ファイルシステムやネットワークのアクセス、外部入出力装置とのインタフェースなどがある。
またOSGiフレームワークは、単一のJava(登録商標)仮想マシン上に複数のJava(登録商標)アプリケーション(サービス)を動作させる。またアプリケーションのライフサイクルの管理やアプリケーション間通信機能などを提供する。OSGiフレームワーク上には、複数のシステムサービスがプリインストールされている。システムサービスには、インタプリタ環境に新たなアプリケーションを追加したり更新したり削除したりするためのサービス管理サービスや、Appletインタフェースに従って実装されたJava(登録商標)クラスを画像処理装置の操作パネル18に表示して操作パネル18から操作可能に動作させるためのAppletビューアサービスや、Servletインタフェースに従って実装されたJava(登録商標)クラスをクライアントのブラウザから操作可能なWebアプリケーションとして動作させるためのHTTPサービスなどが用意されている。特にAppletインタフェースに従って実装されたJava(登録商標)アプリケーションは、AWTのAPIなどを経由して間接的に操作パネルドライバ214とインタフェースすることができる。
218はジョブ制御ライブラリである。ジョブ制御ライブラリ218は、制御API204に依存して、インタプリタ環境215上で動作するプログラムのために、画像処理ジョブの実行や制御を可能とするアプリケーションプログラミングインタフェースを提供する。
219はフィルタフレームワークである。フィルタフレームワーク219は、プリントアプリケーション202と通信して、プリントジョブ要求の実行に際してインタプリタ環境215上に実装したフィルタプログラムからのプリントデータストリームに対する介在を可能とする。
220はインタプリタコード部である。この部分は、インタプリタ216が解釈できるインタプリタ言語によって記述されたソフトウェアとして実装され、インタプリタ環境215を構成するAPIライブラリ群やフレームワーク群の一部と、インタプリタ環境215上で動作するプログラムとを含む。ネイティブコード部201とインタプリタコード部220とにまたがって位置づけられるソフトウェアは、それぞれの空間の間をインタフェースするためのモジュールをインタプリタ環境215が規定する固有のフレームワークとプログラミングモデルに従ってコーディングする必要がある。ここではJava(登録商標) Native Interface(JNI)に従って境界部分のプログラミングを行っている。
221はフィルタである。フィルタ221は、インタプリタ環境215上に実装されたプログラムであり、フィルタフレームワーク219の枠組みに従って実装されているため、プリントアプリケーション202が処理するプリントデータストリームに対する処理を実行することができる。
図3は、図2に示す画像処理装置におけるソフトウェアモジュール間のデータの流れを示す図である。
印刷要求受信モジュール203がクライアントから受信したプリントジョブデータストリームに対してフィルタ処理を施さない場合には、印刷要求受信モジュール203からプリントジョブデータストリーム301がジョブ制御モジュール205に流れる。プリントジョブデータストリーム301は、たとえばRTOS209が提供するメッセージキューなどのタスク間通信機能によって引き渡される。
ジョブ制御モジュール205はプリントジョブデータストリーム301を逐次的に解釈し、プリントジョブデータストリーム301中のジョブ記述の解釈を行い、それに応じて制御パス302を介してトランスレータ206、レンダラ207、ME制御モジュール208の制御を行う。
一方、プリントジョブデータストリーム301中の印刷データは、一般にPDLによって記述されたページ記述のコマンドシーケンス303であり、これはトランスレータ206に流れる。トランスレータ206は印刷データの解釈を行い、ディスプレイリスト304の生成を行う。生成されたディスプレイリスト304はレンダラ207に流れる。レンダラ207はディスプレイリスト304の展開を行い、ラスタ画像データ305の生成を行う。ラスタ画像データ305はページ単位に生成される場合もあれば、ページを副走査方向に複数の領域に区切ったバンド単位に生成される場合もある。生成されたラスタ画像データ305はME制御モジュール208に流れる。ME制御モジュール208はラスタ画像データ305をマーキングエンジン16に転送し、マーキングエンジン16において転写紙への画像形成が行われる。
以上の処理は、すべてネイティブコード部分201に実装されているソフトウェアによって実現される。
一方、プリントジョブデータストリームに対してフィルタ処理を施す場合には、印刷要求受信モジュール203がクライアントから受信したプリントジョブデータストリーム306はフィルタフレームワーク219に流れる。プリントジョブデータストリーム306は、たとえばRTOS209が提供するメッセージキューなどのタスク間通信機能によって引き渡される。
フィルタフレームワーク219のランタイムモジュールは、インタプリタ環境215上に実装されたフィルタプログラム群を管理している。フィルタフレームワーク215は、受け取ったプリントジョブデータストリーム306をプリントジョブデータストリーム307としてフィルタ221に流す。プリントジョブデータストリーム307は、たとえばインタプリタ環境215が提供するスレッド間通信機能によって引き渡される。なお複数のフィルタが配置されている場合には、それぞれのフィルタ間にもプリントジョブデータストリームが流れ、これらはインタプリタ環境215が提供するスレッド間通信機能によって引き渡される。
フィルタ221は、受け取ったプリントジョブデータストリーム307に対して所定の処理を施して出力する。フィルタ221が出力したデータストリーム308はフィルタフレームワーク219に流れる。データストリーム308は、たとえばインタプリタ環境215が提供するスレッド間通信機能によって引き渡される。
フィルタフレームワーク219は、フィルタ211から受け取ったデータストリーム308をデータストリーム309としてジョブ制御モジュール205に流す。データストリーム309は、たとえばRTOS209が提供するメッセージキューなどのタスク間通信機能によって引き渡される。以下はフィルタ221を介さない場合と同様にデータが流れる。
310はフィルタフレームワーク219から印刷要求受信モジュール203への制御パスであり、印刷要求受信モジュール203からジョブ制御モジュール205へのプリントジョブデータストリーム301の引き渡しを、フィルタフレームワーク219から制御するための制御パスである。すなわち、フィルタフレームワーク219が管理するフィルタ221が有効な状態で配置されている場合には、プリントジョブデータストリーム306が有効となり、プリントジョブデータストリーム306に対してフィルタ221による前処理が施される。一方、フィルタフレームワーク219が管理するフィルタ221が有効な状態で配置されていない場合には、プリントジョブデータストリーム301が有効となり、クライアントから受信したプリントジョブデータストリームは直接ジョブ制御モジュール205に流れる。この場合、フィルタフレームワーク219介在のオーバヘッドを避けられるため、フィルタ221によるカスタマイズをまったく行わない標準状態のプリンタのデータ処理性能を発揮できる。
図4は、インタプリタ環境215上に構築されるフィルタフレームワーク219のクラスを示す図である。
FilterManagerクラス401は、フィルタフレームワーク219のランタイム環境を実現するオブジェクトのクラスである。FilterManagerクラス401は、ひとつのConnectorクラス405のオブジェクトをコンポジション(composition)として持つ。また、複数(n個)のFilter抽象クラス402のオブジェクトへの参照と、複数(n−1個)のPipeクラス406のオブジェクトへの参照とからなる順序付けられたリストを持つ。またフィルタフレームワーク219のランタイムにインストールされた複数のFilter抽象クラス402の具体クラスを管理するためのinstalledFilter属性を備える。
Filter抽象クラス402は、各種のフィルタクラスを抽象化する抽象クラスである。Filter抽象クラス402は、フィルタ名称を示すname属性などを備える。また、input属性としてInputStream抽象クラス403を継承したクラスのオブジェクトへの参照を持ち、output属性としてOutputStream抽象クラス404を継承したクラスのオブジェクトへの参照を持つ。Filter抽象クラス402の具体クラスは、Runnableインタフェースを実装し、runメソッドを持つ。FilterManagerオブジェクトが、管理している各種のフィルタクラスのインスタンスを生成してデータストリームのフィルタ処理のために配置されるとき、配置されるそれぞれのフィルタオブジェクトに対応してスレッドを生成し、並行動作するスレッドの実行コンテクストでフィルタオブジェクトのrunメソッドを実行する。すなわち、コンストラクタのパラメータにフィルタオブジェクトを渡してjava.lang.Threadオブジェクトを生成し、スタートする。このようにして個々のフィルタオブジェクトは自律的に動作する。
InputStream抽象クラス403は、データストリームの入力元の抽象クラスである。InputStream抽象クラス403は、呼び出しのたびに逐次的にデータを読み出すことのできるreadメソッドを備える。
OutputStream抽象クラス404は、データストリームの出力先の抽象クラスである。OutputStream抽象クラス404は、呼び出しのたびに逐次的にデータを書き込むことのできるwriteメソッドを備える。
Connectorクラス405は、インタプリタ環境215のオブジェクトとネイティブコードとの間でデータストリームの交換を行うための接点を表現したオブジェクトのクラスである。Connectorクラス405は、InputStream抽象クラス403を継承した具体クラスであるConnectorInputStreamクラスのオブジェクトをコンポジションとして持ち、そのreadメソッドによってネイティブコードの印刷要求受信モジュール203から流れたデータストリーム306を逐次的に読み出すことができる。また、Connectorクラス405は、OutputStream抽象クラス404を継承したConnectorOutputStreamクラスのオブジェクトもコンポジションとして持ち、そのwriteメソッドによって逐次的に書き込んだデータストリームは、ネイティブコードのジョブ制御モジュール205へデータストリーム309として流れる。
Pipeクラス406は、データストリームに対して複数のフィルタリング処理を施す際にFilter抽象クラス402の一連のオブジェクト間を連結するために用いるオブジェクトのクラスである。Pipeクラス406は、OutputStream抽象クラス404を継承したPipedOutputStreamクラスとInputStream抽象クラス403を継承したPipedInputStreamクラスのそれぞれのオブジェクトをコンポジションとして持つ。PipeオブジェクトのPipedOutputStreamオブジェクトとPipedInputStreamオブジェクトとは接続されており、スレッド間通信を実現する。すなわちあるPipeオブジェクトに関して、あるFilterオブジェクトが、そのPipeオブジェクトが持つPipedOutputStreamオブジェクトへwriteメソッドによって逐次的に書き込んだデータストリームは、別のFilterオブジェクトが、そのPipeオブジェクトが持つPipedInputStreamオブジェクトからreadメソッドによって逐次的に読み出すことができる。
図5は、インタプリタ環境215上に構築されるフィルタフレームワーク219が管理するオブジェクトのインスタンスを示す図である。
図5(A)は、1つのフィルタが有効な状態のときフィルタフレームワーク219のランタイムが管理しているオブジェクト間の関係を示している。
Connectorオブジェクト501は、Connectorクラス405のオブジェクトである。
フィルタオブジェクト502は、Filter抽象クラス402を具体化した具体クラスのオブジェクトである。フィルタオブジェクト502のinput属性には、Connectorオブジェクト501が持つConnectorInputSteamオブジェクトの参照が保持されており、output属性にも、Connectorオブジェクト501が持つConnectorOutputStreamオブジェクトの属性が保持されている。Filterオブジェクト502は、信号inputの指すConnectorInputStreamオブジェクトから読み取ったデータストリームに対してフィルタ処理を施す。また、フィルタ処理を施したデータストリームを、信号outputの指すConnectorOutputStreamオブジェクトへと書き込む。
以上のようにして、プリントデータストリームのオブジェクト間での引き渡し(図の太い矢印)が実現される。
図5(B)は、2つのフィルタが有効な状態のときフィルタフレームワーク219のランタイムが管理しているオブジェクト間の関係を示している。
フィルタ1オブジェクト503は、Filter抽象クラス402を具体化した具体クラスのオブジェクトである。フィルタ1オブジェクト503のinput属性には、Connectorオブジェクト501が持つConnectorInputStreamオブジェクトの参照が保持されている。フィルタ1オブジェクト503は、信号inputの指すConnectorInputStreamオブジェクトから読み取ったデータストリームに対してフィルタ処理を施す。また、フィルタ1オブジェクト503のoutput属性には、Pipeオブジェクト504が持つPipedOutputStreamオブジェクトの参照が保持されている。フィルタ1オブジェクト503は、フィルタ処理を施したデータストリームを信号outputの指すPipeedOutputStreamオブジェクトへと書き込む。
Pipeオブジェクト504は、Pipeクラス406のオブジェクトである。Pipeオブジェクト504は、PipedOutputStreamオブジェクトとPipedInputStreamオブジェクトとを接続された状態で持つ。Pipeオブジェク504が持つPipedOutputStreamオブジェクトのwriteメソッドの呼び出しによって引き渡されたデータストリームは、Pipeオブジェクト504が持つPipeInputStreamオブジェクトのreadメソッドの呼び出しによってデータストリームとして読み出すことができる。
フィルタ2オブジェクト505は、Filter抽象クラス402を具体化した具体クラスのオブジェクトである。フィルタ2オブジェクト505のinput属性には、Pipeオブジェクト504が持つPipedInputStreamの参照が保持されている。フィルタ2オブジェクト505は、信号inputの指すPipeオブジェクト504から読み出したデータストリームに対してフィルタ処理を施す。フィルタ2オブジェクト505のoutput属性には、Connectorオブジェクト501が持つConnectorOutputStreamの参照が保持されている。フィルタ2オブジェクト505は、フィルタ処理を施したデータストリームを信号outputの指すConnectorオブジェクト501が持つConnectorOutputStreamへと書き込む。
以上のようにして、プリントデータストリームのオブジェクト間での引き渡し(図の太い矢印)が実現される。また、同様にして、間にPipeオブジェクトを挟みこみながらより多くのフィルタオブジェクトをデータストリーム処理のために配置することもできる。
図6は、フィルタフレームワーク219を操作するためのユーザインタフェースの一例を示す図である。
フィルタフレームワーク219の操作のためのユーザインタフェースは、標準ライブラリとフレームワーク217に含まれるHTTPサービスによってWebアプリケーション(Servlet)として実装されており、クライアントで動作するWebブラウザから操作される。なお、Applet型サービスとして実装して、画像処理装置の持つ操作パネルから操作するように構成してもよい。
図6(A)は、画像処理装置のフィルタフレームワーク219に新しいフィルタを追加インストールするためのユーザインタフェースを示す図である。
601はフィルタインストール画面の例である。
602はファイル名入力フィールドである。ユーザはこのファイル名入力フィールド602に、クライアントコンピュータのファイルシステムにあらかじめ格納されているインストールしたいフィルタクラスのクラスファイルのファイルパスを入力する。
603は参照ボタンである。ユーザがこの参照ボタン603をクリックすると、クライアントコンピュータのWebブラウザが提供するファイル選択ダイアログが開き、クライアントコンピュータのファイルシステム内をブラウズしてインストールしたいフィルタクラスのクラスファイルを選択することができる。ファイル選択ダイアログによってユーザが選択したファイルのファイルパスは自動的にファイル名入力フィールド602に入力される。
604はインストールボタンである。ユーザがこのインストールボタン604をクリックすると、クライアントコンピュータのWebブラウザによって、ファイル名入力フィールド602に入力されたファイルパスのクラスファイルが、画像処理装置上で待機している新規フィルタインストールのためのWebアプリケーションに送信される。クラスファイルを受信したWebアプリケーションは画像処理装置の不揮発性メモリに、受信したクラスファイルを格納する。また、クラスファイルをインタプリタ環境215に動的にロードしてオブジェクトインスタンスを生成し、生成したフィルタオブジェクトをフィルタフレームワーク219のランタイムが管理する有効フィルタ列のリストの最下流に配置する(もし既に有効なFilterオブジェクトがフィルタ列に存在するならば、新規Filterオブジェクトを連結するために新たなPipeオブジェクトの生成も行う)。
本ユーザインタフェースをWebアプリケーションとして実装している場合、フィルタの実装クラスを画像処理装置にアップロードする機構は、RFC(Requests for Comments)によって定められたHTMLフォームに基づくファイルアップロードの仕様を利用して実装している。したがって、この場合、ファイル名入力フィールド602と参照ボタン603とは、クライアントコンピュータのWebブラウザによって表示されており、インストールボタン604は、フォームのsubmitに対応している。
また、本ユーザインタフェースをApplet型のサービスとして実装する場合には、フィルタインストール画面601は画像処理装置の操作パネル18の表示部に表示される。ファイル名入力フィールド602に指定されるファイルは、画像処理装置がリムーバブル記憶装置を備える場合はリムーバブル記憶メディア中のファイルパスを指定してもよいし、あるいは、ネットワーク経由で画像処理装置からHTTPやFTPなどのファイル転送プロトコルによって読み出しアクセス可能な共有ファイルをURLなどによって指定するように構成してもよい。
図6(B)は、画像処理装置のフィルタフレームワーク219にインストールされているフィルタを配置するためのユーザインタフェースを示す図である。
605はフィルタ配置画面の例である。
606は、フィルタフレームワーク219のランタイムにインストールされているフィルタ群を一覧するための表である。表606の各行は、インストールされているフィルタのそれぞれに対応している。表606の「選択」列にはチェックボックスが並び、チェックされた行のフィルタが後述する操作の対象として選択される。表606の「順序」列には、フィルタが無効状態にある場合には「無効」の表示と、有効状態にある場合にはそのデータストリーム処理の上流から下流にむけて昇順につけられた番号が表示される。表606の「名称」列には、フィルタオブジェクトのname属性に記述されたフィルタ名称が表示される。
607から611は、選択されたフィルタに対する操作を指示するためのボタンであり、表606の選択列のチェックボックスがチェックされた行のフィルタを対象とする操作を指示する。
607は詳細表示ボタンである。ユーザがこの詳細表示ボタン607をクリックすると、選択されたフィルタに関する詳細情報が表示される。詳細情報としては、フィルタの名称やバージョン、説明、クラス名、インストール元のクラスファイル名(ファイルパスやURL)、インストールされた日時などがある。
608は上へボタンである。ユーザがこの上へボタン608をクリックすると、選択されたフィルタのフィルタ列内における順序を、データストリーム処理の上流方向に一段階変更する。
609は下へボタンである。ユーザがこの下へボタン609をクリックすると、選択されたフィルタのフィルタ列内における順序を、データストリーム処理の下流方向に一段階変更する。
610は有効/無効のトグルボタンである。ユーザがこのトグルボタン610をクリックすると、選択されたフィルタが有効状態にある場合は無効状態に変更し、無効状態にある場合には有効状態に変更する。無効状態にされたフィルタオブジェクトは削除されるが、フィルタクラスはインストールされた状態で残り、フィルタフレームワーク219のランタイムの管理下に留まる。
611はアンインストールボタンである。ユーザがこのアンインストールボタン611をクリックすると、選択されたフィルタのクラスファイルを画像処理装置のインタプリタ環境215から削除する。
図7は、フィルタ処理の主要な手順を示すフローチャートである。
この手順は具体的なフィルタクラスのrunメソッドとして実装されている。フィルタフレームワーク219は、有効なフィルタクラスのオブジェクトを生成し、その入力ストリームと出力ストリームとをセットアップした後に、このオブジェクトのrunメソッドを実行するためにスレッド(Threadオブジェクト)を割り当てる。これにより、フィルタフレームワーク219が管理する各フィルタオブジェクトにおいて、本手順がそれぞれ自律的に並行処理で動作することになる。
ステップS701では、必要な前処理を行う。前処理には、フィルタが内部的に利用する属性の初期化や、パターンマッチングに使用するパターン記述に対する前処理、入力ストリームや出力ストリームをより使いやすくする機能を付け加える(たとえば入力ストリームを先読み可能にしたり、システムリソースを有効に利用するバッファリングを拡張したりする)ための修飾クラス(java.io.FilterInputStreamやjava.io.FilterOutputStreamの具体クラス)によってストリームをラップする処理などが含まれる。
ステップS702では、input属性にセットされている入力ストリームからパターンマッチング処理に必要な量のデータを読み出す。
ステップS703では、入力のデータストリーム中からこのフィルタが操作するべきデータパターンの出現を発見するためにパターンマッチングを行う。フィルタが操作するべきデータパターンは固定のデータ列そのものでもよいし、正規表現(regular expression)などの形式言語による記述でもよい。パターン記述に合致するデータの出現をデータストリーム中から発見する各種の実装が広く知られている(grep、sed、AWK、Perlなどが有名である)。
パターンマッチングを効率よく行うためのアルゴリズムはよく研究されている。固定のパターン記述の場合には、まずパターン記述と部分データストリームのそれぞれのハッシュ関数を比較して、ハッシュ値が一致した場合のみ両者の完全一致を判定する方法や、Knuth−Morris−Prattの方法や、Boyer−Mooreの方法などが知られている。正規表現などによるパターン記述の場合も、有限オートマトンなどの形式言語理論を背景とする各種のアルゴリズムが知られている。比較的最近のJava(登録商標)プラットフォームでは、正規表現を扱うためのクラスライブラリが標準に備わってもいる(java.util.regex)。たとえばデータストリームの上流のパターンに応じて状態が変化し、変化した状態に従って下流のパターンの解釈を変えなければならない場合など、正規表現などではかえって記述が困難なほど複雑なパターンマッチングが必要とされる場合には、そのパターンの特徴そのものを評価するアルゴリズムをJava(登録商標)プログラムとして書き下してもよい。どれほど複雑なパターンマッチングであっても素直に実装することができる。
ステップS704では、パターンマッチングの結果を判定し、パターン記述に合致するデータをデータストリーム中に発見した場合はステップS705に進む。そうでなければステップS706に進む。
ステップS705では、パターン記述に合致したデータストリーム中の部分データ列に対して、このフィルタの目的に応じた操作を施し、その結果で置き換える。
ステップS706では、処理済の部分データ列(すなわち、監視しているパターンが現れなかったデータ列、あるいは、監視しているパターンを含むデータ列に対してステップS705の処理を施したデータ列)を出力ストリームに書き込む。
ステップS707では、入力ストリームが終了したか否かを判定し、終端を迎えた場合は終了する。そうでなければステップS702に戻り、上記の手順を繰り返す。
図8は、本実施の形態における互換化フィルタが行う処理を説明する図である。
801は互換化フィルタクラスのオブジェクトであり、入力ストリームを読み出して、データストリーム中に現れる互換性の問題を解決する処理を施して出力ストリームに書き込む。互換性の問題として、ここでは代表的なPDLのひとつであるAdobeのPostScript仕様を実装した各ベンダのプリンタ間におけるベンダごとの解釈の差異に基づく問題を取上げ、その解決の例を説明する。
あるベンダのプリンタによれば、PostScriptのsetpagedeviceでは、/DeferredMediaSelectionが真のとき、カスタム用紙扱いとして、用紙要求をパネルに表示し、一方、偽のときには、指定されたサイズから±5の範囲で定型用紙を検索して、定型にない場合はPostScriptのPolicyに従うものと解釈して実装されていた。また別のベンダのプリンタによれば、/DeferredMediaSelectionが真のとき、指定されたサイズそのもののサイズ(範囲なし)で定型用紙を検索して、定型にない場合はカスタム用紙扱いとし、一方、偽のときには、±5の範囲で定型用紙を検索して、定型にない場合はPostScriptのPolicyに従うように実装されていた。
ここで、さらに別のベンダが供給する基幹系システムのためのインフラストラクチャ環境が、これらのうち後者の解釈に基づく挙動を前提として構築されたとすると、そのシステムにおける印刷要求に対して前者のプリンタでは、期待に反するシチュエーションでカスタム用紙扱いとなってしまい、「用紙なし」が操作パネルに表示されて印刷されないという顧客の不利益が生ずる。前者のプリンタのベンダは、この互換性の問題に対してできるだけ低コストでできるだけ速やかに解決を顧客に提供することが求められる。この要求は、印刷要求データストリーム中に現れるsetpagedeviceの/DeferredMediaSelectionパラメータをtrueからfalseに変換することで、少なくとも暫定的に、応えることができる。
互換化フィルタ801はこの問題解決のために働くフィルタオブジェクトであり、入力データストリーム中から/DefereedMediaSelectionがtrueで指定されたsetpagedeviceに対するパターンマッチングを行い、マッチした場合はfalseに置き換えて出力データストリームを出力する。
802はフィルタへの入力データストリームの例であり、PostScriptのプリントデータである。2行目にパターンに合致する部分データが出現する。
803はフィルタからの出力データストリームの例であり、フィルタ処理されたPostScriptのプリントデータである。2行目のデータの中でtrueという文字列がfalseへと置換されている。
図9は、本実施の形態における修正フィルタが行う処理を説明する図である。
上記の互換化フィルタでは、プリンタ間の仕様解釈の差異に基づく互換性の問題を解決するために、フィルタによるデータストリームのパターンマッチングと置換の技術を用いたが、同様の技術をプリンタ実装の不具合(ファームウェアのバグなど)を緊急回避するために用いることもできる。たとえば、あるプリンタのあるバージョンのリリースにおいて、LIPS言語の「イメージ領域確保命令(VDM)」に指定されるイメージの幅が8の倍数でなければ描画不正が発生するというバグがあったとする。仮にこのようなパターンのデータストリームが特定のアプリケーションの特定の利用においてだけ稀に出力されるものであったとしても、また、本来はトランスレータやレンダラというLIPS言語処理系のコア部分で修正するべきバグであったとしても、現実の顧客環境において迅速に対応しなければならない。こうした問題を、修正フィルタを用いて解決する。
901は修正フィルタであり、たとえば902のようなデータを含むLIPSデータストリームから、バグを発現させるパターンを発見(VDMのイメージ幅が「225」であって8の倍数でない)し、そのバグを顕在化させず同等の機能を達成する903のようなデータ(VDMのイメージ幅を8の倍数でより大きい値である「232」)に置換する。
以上のように、第1の実施の形態によれば、ファームウェアとして静的に実装されたプリント要求受信サーバで受信したデータストリームを、組み込みJava(登録商標)環境上に実装した動的ロードや動的リンク可能なフィルタソフトウェアに引き渡すインタフェースを設けたため、安定部分と動的部分とを明確に分離できる。したがって、装置ファームウェア全体を動的で冗長なソフトウェアに置き換える非効率を避けることができ、また、プリント要求受信サーバ機能をJava(登録商標)環境側に再実装して二重に持つ非効率も避けることができ、装置コスト的にも開発負荷的にも合理的なフィルタフレームワークを実現できる。さらにまた、顧客環境に納入済みの画像処理装置に対するフィルタの動的な追加や置き換えが容易になったため、低いサポートコストでよりすばやくソリューションを顧客のために提供できるようになる。
また、組み込みシステムのファームウェア開発環境よりも洗練されたJava(登録商標)環境でフィルタを実装するため、組み込みシステムでは通常困難な動的なメモリ管理が効果を発揮する高度なパターンマッチングアルゴリズムの実装が容易となり、また高度にモジュール化された再利用性の高いソフトウェアとして設計するために、オブジェクト指向パラダイムに基づくデザインパターンを採用することも容易となり、その結果、生産性高くフィルタ部を実装できるようになった。
またフィルタにおいて、パターンマッチングによって入力データストリーム中から他の実装との互換性問題を発現させるPDLデータを発見し、そのデータを置き換えることで、互換性の問題を低コストですばやく解消することができる。特にこうしたことを、顧客環境のシステムやアプリケーションやプリンタドライバに影響を及ぼすことなく、プリンタ側に閉じた対応だけで達成できる。
また、フィルタを配置しない場合には、印刷要求受信モジュールが受信したデータストリームを直接ジョブ制御モジュールに流れるように構成したため、フィルタを必要としない場合は、フィルタフレームワーク介在のオーバヘッドを避けられ、プリンタ本来のデータ処理性能を維持できる。
〔第2の実施の形態〕
次に本発明の第2の実施の形態を説明する。
第2の実施の形態の構成は、基本的に第1の実施の形態の構成と同じであるので、第2の実施の形態の説明においては、第1の実施の形態の構成と同一部分には同一の参照符号を付してその説明を省略し、異なる部分だけを説明する。
図10は、第2の実施の形態におけるフィルタが行う処理を説明する図である。
1001は最適化フィルタクラスのオブジェクトであり、入力ストリームを読み出してデータストリーム中に現れる冗長に記述されたPDLデータを発見し、それをより効率のよい同機能のデータに変換して出力ストリームに書き込む。プリンタドライバが生成するPDLデータストリームは、クライアントのプリント要求システムやアプリケーション側の都合によって、どうしても繰り返しなどの冗長な処理パターンを含む傾向にある。最適化フィルタクラスのオブジェクト1001では、このような冗長な記述パターンを一種の「慣用表現」として認識し、それをより高効率の等価な表現に置き換える。
1002は、最適化フィルタクラスのオブジェクト1001への入力データストリームの例である。この入力データストリーム1102では、1003のように、横長の長方形を塗りつぶすために3つの正方形の塗りつぶしを繰り返す記述が行われている。
1004は、最適化フィルタクラスのオブジェクト1001からの出力データストリームの例であり、最適化フィルタクラスのオブジェクト1001が冗長な繰り返しパターンを検出し、それを等価な1つの横長の矩形の塗りつぶしに書き換えている。
以上のように、第2の実施の形態によれば、Java(登録商標)環境に柔軟に拡張可能なフィルタにおいて、冗長な記述パターンを一種の「慣用表現」として認識し、それをより高効率の等価な表現に置き換えることによって、PDL処理系のコアにはまったく触れずにプリントパフォーマンスを改善できる。また、プリンタ側に閉じて最適化処理を行うので、顧客環境のシステムやアプリケーションやプリンタドライバを改造する必要もない。また、フィルタの生産性が高くインストールなどのメンテナンスも容易であるため、顧客の利用形態に即して個別対応した最適化が提供できる可能性もある。
〔第3の実施の形態〕
次に本発明の第3の実施の形態を説明する。
第3の実施の形態の構成は、基本的に第1の実施の形態の構成と同じであるので、第3の実施の形態の説明においては、第1の実施の形態の構成と同一部分には同一の参照符号を付してその説明を省略し、異なる部分だけを説明する。
図11は、第3の実施の形態におけるフィルタが行う処理を説明する図である。
1101は機能拡張フィルタクラスのオブジェクトであり、入力ストリームを読み出して、そのデータに応じて新たな機能を付加するためのデータ変換やデータ追加などの処理を施して、出力ストリームに書き込む。ここでは機能拡張の例として、顧客システムが専用のPDLドライバを抱えていて、そのドライバが新しいプリンタの両面印刷や各種フィニッシングなどの新しい能力に未対応のときに、そのドライバを変更することなく、プリンタ側のフィルタ対応によって画像処理装置の新機能を活かす例をとりあげる。
機能拡張フィルタ1101は、該フィルタが稼動しているプリンタの新しい能力を活かすための印刷ジョブ設定をその属性として持つ。フィルタオブジェクトの属性値は、画像処理装置の不揮発性メモリにも保存され、画像処理装置の電源が落とされて再起動された場合であっても、オブジェクトの状態は保存される。
ジョブ種類属性は、「印刷」「セキュアプリント」などの値をとり、プリンタが備える各種ジョブのタイプを表す。部数属性は、印刷物のコピーを何セット生成するかを表す。ページレイアウト属性は、「1ページ/枚」「2ページ/枚」「4ページ/枚」など1枚の用紙に複数ページを面付けするための指定や、「ポスター(2x2)」「ポスター(3x3)」など1ページを拡大して複数枚の用紙に分割印刷するための指定といった、ページレイアウト指定を表す。配置順属性は、「左上から右向き」「左上から下向き」「右上から左向き」「右上から下向き」などの値をとり、ページレイアウト時の各面の配置指定を表す。印刷方法属性は、「片面印刷」「両面印刷」「製本印刷」などの値をとり、印刷方法を表す。とじ方向属性は、「長辺とじ(左)」「長辺とじ(右)」「短辺とじ(上)」「短辺とじ(下)」などの値をとり、フィニッシング処理において複数枚の用紙を綴じる方向を表す。排紙方法属性は、「指定しない」「ソート」「ステイプル」「パンチ穴」などの値をとり、フィニッシングの方法を表す。給紙属性は、「自動」「手差しトレイ」「カセット」「デッキ」あるいは「普通紙」「厚紙」「色紙」「OHP」などの値をとり、画像形成対象とする用紙(転写紙)の給紙指定を表す。
1102は機能拡張フィルタ1101への入力データストリーム例であり、その内容は旧来のアプリケーションやプリンタドライバが生成する単にページごとの画像形成記述を中心とするPDLやテキストからなる印刷データストリームである。
1103は機能拡張フィルタ1101が逐次処理を行って出力する出力データストリーム例である。入力データに存在した単純な印刷データストリームに加えて、プリンタの新機能を使いこなすための各種のプリントジョブ記述データが挿入されている。プリントジョブ記述は入れ子構造を表現できるようになっており、ジョブ単位、複数の文書をまとめたフィニッシングなどの処理単位、個々の文書単位のそれぞれの階層において機能拡張フィルタ1101の属性のような各種属性の指定が可能である。
1行目は、ジョブの開始を表すデータである。2行目は、ジョブ単位の設定の開始を表すデータである。3行目は、この位置に各種のジョブ単位の設定データが存在することを示す。4行目は、複数文書をひとまとめにする単位の開始を表すデータである。5行目は、複数文書をまとめた単位に対する設定の開始を表すデータである。6行目は、この位置に複数文書をまとめた単位に対する設定データが存在することを示す。7行目は、文書の開始を表すデータである。8行目は、文書単位の設定の開始を表すデータである。9行目は、この位置に文書を単位とする設定データが存在することを示す。10行目は、文書記述データの開始を表すデータである。11行目は、文書そのものを表現する文書記述データがこの位置に存在し、ここでは入力データストリーム1102に存在した印刷データストリームがこの位置に存在することを示す。12行目は、文書の終了を表すデータである。13行目は、複数文書をまとめる単位の終了を表すデータである。14行目は、ジョブの終了を表すデータである。
図12は、機能拡張フィルタ1101を操作するためのユーザインタフェースの一例を示す図である。
フィルタ操作のためのユーザインタフェースは、標準ライブラリとフレームワーク217(図2)に含まれるHTTPサービスによってWebアプリケーション(Servlet)として実装されており、クライアントで動作するWebブラウザから操作される。あるいは、Applet型サービスとして実装して、画像処理装置の持つ操作パネル18から操作するように構成してもよい。
1201は機能拡張フィルタ1101の基本操作画面であり、フィルタオブジェクト属性の確認や変更などを操作できる。
位置1202ではジョブ種類属性の操作を行う。
位置1203では部数属性の操作を行う。
位置1204ではページレイアウト属性の操作を行う。
位置1205では配置順属性の操作を行う。
位置1206では印刷方法属性の操作を行う。
位置1207ではとじ方向属性の操作を行う。
位置1208では排紙方法属性の操作を行う。
位置1209では給紙属性の操作を行う。
1210はヘルプボタンであり、このヘルプボタン1210を押すと、この機能拡張フィルタ1101の使い方、機能、属性の意味などの説明が表示される。
1211は「標準に戻す」ボタンであり、この「標準に戻す」ボタン1211を押すと、各種属性がデフォルトの値に設定される。
1212は適用ボタンであり、この適用ボタン1212を押すと、属性値の変更操作が適用され、新しい値が実際にフィルタオブジェクトの属性に設定される。
1213はプレビューアイコンであり、各種属性の確認を助けるために、いくつかの重要な属性について、その値に応じた模式図が表示される。
以上のように、第3の実施の形態によれば、Java(登録商標)環境に柔軟に拡張可能なフィルタにおいて、新機能を活かすために必要なデータを追加することで、プリンタの新機能に対応していない顧客環境のシステムやアプリケーションやプリンタドライバと組み合わせる場合であっても、新しい機能を使いこなすことが可能となる。
また、Java(登録商標)環境が、ファームウェア内のさらにもう一層のソフトウェアプラットフォームとして、その上で動作するフィルタのためにユーザインタフェースを実装する手段を用意するため、追加機能の設定を操作するためのユーザインタフェースをフィルタに備えることができる。
また、フィルタの生産性が高くインストールなどのメンテナンスも容易であるため、顧客の利用形態に即して個別対応した機能拡張が提供できる可能性もある。
〔他の実施の形態〕
なお、印刷データストリーム中の制御データでなく、印字対象文字データ列中から特定の文字列パターンの出現を発見し、特定の文字列パターンに合致した場合は、その文字列に相当する制御データを生成して置換または挿入するような機能拡張フィルタを構成することもできる。この場合たとえば、顧客がワードプロセッサのような通常のアプリケーションにおいて単なるテキストとして特定文字列を入力し、それを通常のプリンタドライバ経由でプリントするだけで、プリンタ側のフィルタにおいて、たとえば特定文字列を相当する画像(ロゴやマークや透かしなど)を描画するためのベクタ描画命令などの命令列に変換してもよい。
また、上記各実施の形態では、ファームウェア内部のインタプリタ環境215としてJava(登録商標)の仮想マシンと環境を用いたが、これに限定されるものではない。他のスクリプト言語などのインタプリタ環境をファームウェアに組み込んで構成した場合であっても、動的なフィルタ追加とファームウェア部分の分離など、同様の効果が得られる。
また、オブジェクト指向など高効率の開発を可能とするインタプリタ環境は他にも多く、これらを用いてもフィルタ生産性など同様の効果が得られる。特にパターンマッチングに基づくデータストリームの処理に関しては、sed、AWK、Perlなどの選択肢も適している。
さらに、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPU、MPU等)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体およびプログラムは本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
本発明の第1の実施の形態に係る画像処理装置のハードウェア構成を示すブロック図である。 図1に示す画像処理装置を動作させるためのソフトウェア(モジュール)の構成を示す階層図である。 図2に示す画像処理装置におけるソフトウェアモジュール間のデータの流れを示す図である。 インタプリタ環境上に構築されるフィルタフレームワークのクラスを示す図である。 インタプリタ環境上に構築されるフィルタフレームワークが管理するオブジェクトのインスタンスを示す図である。 フィルタフレームワークを操作するためのユーザインタフェースの一例を示す図である。 フィルタ処理の主要な手順を示すフローチャートである。 第1の実施の形態における互換化フィルタが行う処理を説明する図である。 第1の実施の形態における修正フィルタが行う処理を説明する図である。 第2の実施の形態におけるフィルタが行う処理を説明する図である。 第3の実施の形態におけるフィルタが行う処理を説明する図である。 機能拡張フィルタを操作するためのユーザインタフェースの一例を示す図である。
符号の説明
1 CPU(印刷要求データストリーム受信手段、印刷ジョブ制御手段、フィルタ手段、第1のインタフェース手段、第2のインタフェース手段)
2 RAM
3 FlashROM
4 システムバス
5 ネットワークコントローラ(LANC)
6 LED
9 ROM
12 ラスタコントローラ
15 ディスクコントローラ(DKC)
16 マーキングエンジン
18 操作パネル
1000 プリンタ(画像処理装置)
1600 プリンタコントローラ
2000 ローカルエリアネットワーク(LAN)

Claims (18)

  1. クライアントからの印刷要求データストリームを受信する受信手段と、
    印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、
    印刷要求データストリーム中の特定のデータを置換するフィルタ処理を行い、前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段と、
    前記受信手段が受信した印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、
    前記フィルタ手段によってフィルタ処理された印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段と、を備え、
    前記フィルタ手段はフィルタ処理を実行するためのフィルタプログラムをユーザによる操作に基づいて外部からインストールしたりアンインストールすることで、フィルタ処理の内容を変更することが可能であることを特徴とする画像処理装置。
  2. 前記画像処理装置は、プロセッサによって処理されるネイティブ命令で構成されるネイティブ環境中にあって、前記ネイティブ命令とは異なる命令セットに基づいて構築されたプログラムを実行するためのインタプリタ環境を内蔵し、
    前記印刷要求データストリーム受信手段および前記印刷ジョブ制御手段は前記ネイティブ環境中にあり、前記フィルタ手段は前記インタプリタ環境中にあることを特徴とする、請求項1に記載の画像処理装置。
  3. 前記受信手段が受信した印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第3のインタフェース手段を更に有することを特徴とする請求項1または請求項2に記載の画像処理装置。
  4. 前記フィルタ手段は、
    前記印刷要求データストリームにおいて所定のデータパターンに一致する部分を検出するパターンマッチング手段と、
    前記パターンマッチング手段によって検出された前記印刷要求データストリーム内の前記一致部分に対応する所定の部分データストリームを生成し、該一致部分と置換する置換手段と
    を含むことを特徴とする請求項1乃至請求項3のいずれか1項に記載の画像処理装置。
  5. 前記インタプリタ環境は、該インタプリタ環境上で動作するプログラムをユーザが操作するためのユーザインタフェースを構築するユーザインタフェース構築手段を有し、
    前記フィルタ手段は、前記印刷要求データストリームに対するデータ処理の処理パラメータが、前記ユーザインタフェース構築手段によって構築されたユーザインタフェースを用いてユーザによって操作されることを特徴とする請求項2に記載の画像処理装置。
  6. 前記インタプリタ環境は、該インタプリタ環境上で動作するプログラムのために命令の読み出し及び解釈を並行して実行するスレッド手段を有し、
    前記フィルタ手段は、前記スレッド手段による独立した実行コンテクストの下で、前記印刷要求データストリームに対するデータ処理を自律的に実行することを特徴とする請求項2に記載の画像処理装置。
  7. 前記インタプリタ環境は、Java(登録商標)プラットフォームに基づくことを特徴とする請求項2に記載の画像処理装置。
  8. クライアントからの印刷要求データストリームを受信する受信手段と、
    印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、
    印刷要求データストリームをフィルタ処理して前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段と、
    前記受信手段によって受信された印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、
    1つ以上のフィルタ手段を印刷要求データストリームのデータパス中に配置可能に制御し、配置された1つ以上のフィルタ手段に逐次的に印刷要求データストリームを処理させるフィルタ管理手段と、
    前記フィルタ管理手段によって配置された1つ以上のフィルタ手段によってフィルタ処理された印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段と、
    を有することを特徴とする画像処理装置。
  9. 前記フィルタ管理手段によって管理されている複数の前記フィルタ手段の中からフィルタ手段を印刷要求データストリームのデータパス中に選択的に配置させるユーザ操作を受け付けるフィルタ配置操作受付手段を更に有することを特徴とする請求項8に記載の画像処理装置。
  10. 前記フィルタ管理手段が印刷要求データストリームのデータパス中に前記フィルタ手段を1つも配置していない場合に、前記印刷要求データストリーム受信手段が受信した印刷要求データストリームを前記印刷ジョブ制御手段に直接引き渡す第3のインタフェース手段を更に有することを特徴とする請求項8または請求項9に記載の画像処理装置。
  11. フィルタ手段を前記画像処理装置の外部から前記画像処理装置内に導入して前記フィルタ管理手段の管理下に置くためのフィルタ導入手段を更に有することを特徴とする請求項8乃至請求項10のいずれか1項に記載の画像処理装置。
  12. クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、印刷要求データストリーム中の特定のデータを置換するフィルタ処理を行い、前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段とを備え、前記フィルタ手段はフィルタ処理を実行するためのフィルタプログラムをユーザによる操作に基づいて外部からインストールしたりアンインストールすることで、フィルタ処理の内容を変更することが可能である画像処理装置に適用される画像処理制御方法において、
    前記受信手段が受信した印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェースステップと、
    前記フィルタ手段によって生成された処理済の印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェースステップと
    を有することを特徴とする画像処理制御方法。
  13. 前記受信手段が受信した印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第3のインタフェースステップを更に有することを特徴とする請求項12に記載の画像処理制御方法。
  14. クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、印刷要求データストリームをフィルタ処理して前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段とを備えた画像処理装置に適用される画像処理制御方法において、
    前記受信手段によって受信された印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェースステップと、
    前記フィルタ手段によって生成された処理済の印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェースステップと、
    1つ以上のフィルタ手段を印刷要求データストリームのデータパス中に配置可能に制御し、配置されたフィルタ手段に逐次的に印刷要求データストリームを処理させるフィルタ管理ステップと
    を有することを特徴とする画像処理制御方法。
  15. 前記フィルタ管理手段によって管理されている複数の前記フィルタ手段の中からフィルタ手段を印刷要求データストリームのデータパス中に選択的に配置させるユーザ操作を受け付けるフィルタ配置操作受付ステップを更に有することを特徴とする請求項14に記載の画像処理制御方法。
  16. 前記フィルタ管理ステップによって印刷要求データストリームのデータパス中に前記フィルタ手段が1つも配置されない場合に、前記印刷要求データストリーム受信手段が受信した印刷要求データストリームを前記印刷ジョブ制御手段に直接引き渡す第3のインタフェースステップを更に有することを特徴とする請求項14または請求項15に記載の画像処理制御方法。
  17. クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、印刷要求データストリーム中の特定のデータを置換するフィルタ処理を行い、前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段とを備え、前記フィルタ手段はフィルタ処理を実行するためのフィルタプログラムをユーザによる操作に基づいて外部からインストールしたりアンインストールすることで、フィルタ処理の内容を変更することが可能である画像処理装置に適用される画像処理制御方法を、コンピュータに実行させるためのプログラムにおいて、
    前記画像処理制御方法は、
    前記受信手段が受信した印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェースステップと、
    前記フィルタ手段によって生成された処理済の印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェースステップと
    を有することを特徴とするプログラム。
  18. クライアントからの印刷要求データストリームを受信する受信手段と、印刷要求データストリームを解釈してジョブを制御する印刷ジョブ制御手段と、印刷要求データストリームをフィルタ処理して前記印刷ジョブ制御手段が解釈可能なフィルタ処理済の印刷要求データストリームを生成するフィルタ手段とを備えた画像処理装置に適用される画像処理制御方法を、コンピュータに実行させるためのプログラムにおいて、
    前記画像処理制御方法は、
    前記受信手段によって受信された印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェースステップと、
    前記フィルタ手段によって生成された処理済の印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェースステップと、
    1つ以上のフィルタ手段を印刷要求データストリームのデータパス中に配置可能に制御し、配置されたフィルタ手段に逐次的に印刷要求データストリームを処理させるフィルタ管理ステップと
    を有することを特徴とするプログラム。
JP2004093215A 2004-03-26 2004-03-26 画像処理装置、画像処理制御方法、及びプログラム Expired - Fee Related JP4164467B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2004093215A JP4164467B2 (ja) 2004-03-26 2004-03-26 画像処理装置、画像処理制御方法、及びプログラム
KR1020087001692A KR100815728B1 (ko) 2004-03-26 2005-03-24 화상 처리 장치, 화상 처리 방법, 및 기억 매체
CNB2005800096094A CN100533365C (zh) 2004-03-26 2005-03-24 图像打印设备及图像打印控制方法
US10/585,645 US8373874B2 (en) 2004-03-26 2005-03-24 Using a web browser on a client to enable and disable a filter program on a printer
PCT/JP2005/006221 WO2005093560A1 (en) 2004-03-26 2005-03-24 Image processing apparatus, image processing control method, program, and storage medium
EP05727481A EP1735687A4 (en) 2004-03-26 2005-03-24 IMAGE PROCESSING DEVICE, PICTURE PROCESSING PROCESS, PROGRAM AND STORAGE MEDIUM
KR1020067022221A KR100852795B1 (ko) 2004-03-26 2005-03-24 화상 처리 장치, 화상 처리 제어 방법, 및 기억 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004093215A JP4164467B2 (ja) 2004-03-26 2004-03-26 画像処理装置、画像処理制御方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2005284384A JP2005284384A (ja) 2005-10-13
JP4164467B2 true JP4164467B2 (ja) 2008-10-15

Family

ID=35056361

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004093215A Expired - Fee Related JP4164467B2 (ja) 2004-03-26 2004-03-26 画像処理装置、画像処理制御方法、及びプログラム

Country Status (6)

Country Link
US (1) US8373874B2 (ja)
EP (1) EP1735687A4 (ja)
JP (1) JP4164467B2 (ja)
KR (2) KR100815728B1 (ja)
CN (1) CN100533365C (ja)
WO (1) WO2005093560A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4738773B2 (ja) * 2004-08-06 2011-08-03 キヤノン株式会社 画像処理装置及びその制御方法
US20070268527A1 (en) * 2005-10-24 2007-11-22 Kyocera Mita Corporation Image forming device
JP2007145002A (ja) * 2005-10-24 2007-06-14 Kyocera Mita Corp 画像形成装置
JP2007164526A (ja) * 2005-12-14 2007-06-28 Canon Inc 情報処理装置及び方法
JP4751771B2 (ja) * 2006-06-07 2011-08-17 株式会社リコー 情報処理装置、情報処理システム、プログラム及びその記録媒体
US7962638B2 (en) * 2007-03-26 2011-06-14 International Business Machines Corporation Data stream filters and plug-ins for storage managers
JP5424546B2 (ja) * 2007-09-13 2014-02-26 京セラドキュメントソリューションズ株式会社 画像処理装置及び画像形成システム
JP4918904B2 (ja) * 2007-10-01 2012-04-18 ブラザー工業株式会社 印刷データ生成装置とコンピュータプログラム
JP5132260B2 (ja) 2007-10-31 2013-01-30 株式会社リコー 画像処理装置、画像処理方法、画像処理プログラム
US8228555B2 (en) * 2008-03-31 2012-07-24 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for parallel display list rasterization
JP4663754B2 (ja) * 2008-04-16 2011-04-06 シャープ株式会社 印刷システム
US8479192B2 (en) * 2008-06-27 2013-07-02 Xerox Corporation Dynamic XPS filter
NZ591880A (en) * 2008-10-27 2013-12-20 Sato Kk Label printer api using program scripting language
JP5317641B2 (ja) * 2008-11-17 2013-10-16 キヤノン株式会社 画像処理方法及び画像処理装置ならびに該画像処理方法を実行するためのプログラム
JP5369782B2 (ja) * 2009-03-12 2013-12-18 株式会社リコー 画像形成装置、情報処理方法、及びプログラム
IL199616A0 (en) * 2009-06-28 2010-05-17 Chaim Shen Orr Pattern-free encryption
JP2011034554A (ja) * 2009-07-09 2011-02-17 Ricoh Co Ltd 画像形成装置及びプログラム
JP5651958B2 (ja) * 2010-01-20 2015-01-14 セイコーエプソン株式会社 印刷制御装置、印刷制御システム、印刷装置及び印刷制御方法
US8782605B2 (en) * 2010-05-28 2014-07-15 Salesforce.Com, Inc. Methods and systems for presenting different versions of an application
JP5593924B2 (ja) * 2010-07-28 2014-09-24 セイコーエプソン株式会社 印刷制御装置、印刷装置及び印刷装置における印刷制御方法
US9152437B2 (en) * 2010-10-28 2015-10-06 Hewlett-Packard Development Company, L.P. Dynamically installing image processing
US9535635B2 (en) * 2012-12-20 2017-01-03 Hewlett-Packard Development Company, L.P. Carrier images
JP6025547B2 (ja) * 2012-12-21 2016-11-16 キヤノンイメージングシステムズ株式会社 情報処理装置、デバイス制御装置、およびその制御方法、並びにデバイス制御システム
JP6381319B2 (ja) * 2014-06-30 2018-08-29 キヤノン株式会社 情報処理装置、処理方法、及びプログラム
JP6363888B2 (ja) * 2014-06-30 2018-07-25 キヤノン株式会社 情報処理装置、およびプログラム
JP6330790B2 (ja) * 2015-11-19 2018-05-30 コニカミノルタ株式会社 印刷制御システム、印刷制御装置およびプログラム
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
WO2019079960A1 (en) * 2017-10-24 2019-05-02 Intel Corporation MATERIAL ASSISTED VIRTUAL SWITCH
JP7009285B2 (ja) * 2018-03-30 2022-01-25 キヤノン株式会社 印刷装置、印刷装置の制御方法、および印刷システム
CN110941401A (zh) * 2018-09-25 2020-03-31 北京京东尚科信息技术有限公司 一种打印方法和装置
CN109783142B (zh) * 2018-12-21 2021-02-12 福建新大陆支付技术有限公司 一种基于pos机的多线程同步方法及pos机
US11288764B2 (en) * 2019-07-01 2022-03-29 Digimarc Corporation Watermarking arrangements permitting vector graphics editing
JP6901016B1 (ja) * 2020-03-09 2021-07-14 日本電気株式会社 サーバ装置、エッジ機器、処理パタン特定方法及び制御プログラム
CN113934379B (zh) * 2020-06-29 2024-01-02 天翼云科技有限公司 基于桌面虚拟化技术的网络打印方法、介质和装置
CN111949330B (zh) * 2020-08-11 2022-06-24 深圳市前海手绘科技文化有限公司 一种手绘草稿加载方法
CN112600989B (zh) * 2020-12-01 2023-04-07 珠海奔图电子有限公司 图像处理方法及图像形成装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3796813B2 (ja) * 1996-05-13 2006-07-12 富士ゼロックス株式会社 描画処理装置
US6611347B1 (en) * 1996-12-20 2003-08-26 Canon Kabushiki Kaisha Print control apparatus, print control method, storage medium, and computer readable program performing a form overlay process
JPH11119927A (ja) 1997-10-16 1999-04-30 Mitsubishi Electric Corp プリンタ装置
US6683696B1 (en) * 1998-10-27 2004-01-27 Hewlett-Packard Development Company, L.P. Filter based data imaging method for an image forming device
JP2000148424A (ja) 1998-11-13 2000-05-30 Nec Corp ネットワークプリントシステム、そのシステムで使用するプリンタ及びクライアント装置
US6661526B1 (en) 1999-05-04 2003-12-09 Hewlett-Packard Development Company, L.P. Printer drivers using filters that are operating system-independent and printer-independent
US6707568B1 (en) 1999-11-02 2004-03-16 Ricoh Company, Ltd. Printer driver filter and method of printing with the same
JP3731719B2 (ja) * 2000-03-29 2006-01-05 ノーリツ鋼機株式会社 写真プリントシステム
US7617446B2 (en) * 2001-03-26 2009-11-10 International Business Machines Corporation Method and system for pre-print processing of web-based documents to reduce printing costs
US6987588B2 (en) 2001-06-25 2006-01-17 Xerox Corporation Text and image quality enhancement
US20030182575A1 (en) * 2002-03-21 2003-09-25 Korfanta Craig M. Performing encryption-oriented action on document at host device prior to transmission to printer-related device over network
US20040001218A1 (en) * 2002-06-27 2004-01-01 Christiansen Robert Douglas System and method for customizing an imaging device
US6968150B2 (en) * 2003-12-23 2005-11-22 Sharp Laboratories Of America, Inc. Systems and methods for adding post-collation operations and interleaved imaging jobs to an imaging job

Also Published As

Publication number Publication date
EP1735687A1 (en) 2006-12-27
US8373874B2 (en) 2013-02-12
KR100852795B1 (ko) 2008-08-18
KR20070011399A (ko) 2007-01-24
CN100533365C (zh) 2009-08-26
WO2005093560A1 (en) 2005-10-06
CN1934531A (zh) 2007-03-21
KR20080011469A (ko) 2008-02-04
JP2005284384A (ja) 2005-10-13
KR100815728B1 (ko) 2008-03-20
EP1735687A4 (en) 2009-09-30
US20090180133A1 (en) 2009-07-16

Similar Documents

Publication Publication Date Title
JP4164467B2 (ja) 画像処理装置、画像処理制御方法、及びプログラム
JP4738773B2 (ja) 画像処理装置及びその制御方法
JP2007164526A (ja) 情報処理装置及び方法
US8804172B2 (en) Non-transitory computer readable recording medium stored with printer driver updating program and printer driver updating method
US20120281245A1 (en) Information processing apparatus, information processing method, and storage medium
US9122428B2 (en) Information processing apparatus allowing a user certain print setting operations in an environment where an image processing apparatus is undetermined
JP2004005417A (ja) バンドリングによるソフトウェア管理
JP2006164240A (ja) データ処理装置および印刷設定処理方法およびコンピュータが読み取り可能な制御プログラムを格納した記憶媒体および制御プログラム
CN101458615B (zh) 信息处理设备和信息处理设备控制方法
US20150355871A1 (en) Information processing apparatus, method for controlling information processing apparatus, and storage medium
JP2006268467A (ja) 画像処理装置
JP2008059238A (ja) 通信システム及びそれに使用するプリンタ
JP2006215720A (ja) 画像処理装置及びその制御方法
JP7393477B2 (ja) 情報処理装置とその制御方法、およびコンピュータプログラム
JP2019008673A (ja) 情報処理装置およびドライバーインストール方法
JP7171227B2 (ja) 情報処理装置、その制御方法およびアプリケーション
JP2019128856A (ja) プリンタードライバーのカスタマイズツール
JP2006072526A (ja) 情報処理装置およびセットアッププログラム
JP2010134607A (ja) 印刷システム

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070409

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20070626

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080121

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080715

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080728

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110801

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4164467

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120801

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120801

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130801

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees