JP2006268467A - 画像処理装置 - Google Patents
画像処理装置 Download PDFInfo
- Publication number
- JP2006268467A JP2006268467A JP2005086054A JP2005086054A JP2006268467A JP 2006268467 A JP2006268467 A JP 2006268467A JP 2005086054 A JP2005086054 A JP 2005086054A JP 2005086054 A JP2005086054 A JP 2005086054A JP 2006268467 A JP2006268467 A JP 2006268467A
- Authority
- JP
- Japan
- Prior art keywords
- data stream
- filter
- sub
- print request
- request 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.)
- Withdrawn
Links
Images
Landscapes
- Image Processing (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
- Record Information Processing For Printing (AREA)
Abstract
【課題】印刷装置において、PDLデータのカスタマイズを容易にする機構であるプリントデータの変換(フィルタリング)を多重化する際の相互干渉を防止する。
【解決手段】フィルタリング(フィルタ挿入)可能な印刷装置において、ひとつのフィルタリング終了時に変換を行った文字列の前後に識別用タグを挿入する手段、別のフィルタリング時に識別用タグで指定された領域のフィルタリング作業を禁止する手段により構成される。
【選択図】 図1
【解決手段】フィルタリング(フィルタ挿入)可能な印刷装置において、ひとつのフィルタリング終了時に変換を行った文字列の前後に識別用タグを挿入する手段、別のフィルタリング時に識別用タグで指定された領域のフィルタリング作業を禁止する手段により構成される。
【選択図】 図1
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を製品化している。
特許文献3では、内部にネットワークコンピュータを備えたアプリケーションダウンロード型プリンタを用い、コンピュータネットワークから、印刷すべきデータファイルと該データファイルに対応したアプリケーションとを上記プリンタ内にダウンロードし、上記ネットワークコンピュータ上で上記アプリケーションを立ち上げることにより該データファイルを開いてラスタイメージに変換し、印刷するネットワークコンピュータ内蔵プリンタおよびこれを備えたコンピュータネットワークシステムが開示されている。アプリケーションが「Java(登録商標)アプレット」である場合も開示されている。アプリケーションは印刷データファイルとともにクライアントからプッシュされる場合も、プリンタがアプリケーションサーバなどからプルする場合も開示されている。
特許文献4では、複数の周辺機器および周辺機器を動作させるソフトウェアを搭載した複数の端末装置および少なくとも周辺装置を動作させるソフトウェアに関するデータベースを備えたサーバ装置を伝送路に接続させ、所定の通信プロトコルに基づいてネットワーク通信を行うネットワーク通信システムであって、周辺機器は、サーバ装置から周辺機器を動作させるソフトウェアの全部/一部、あるいはソフトウェアが使用するモジュールに対応する最新モジュール情報を要求・獲得するクライアント制御部と、獲得した最新モジュールを端末装置に配付するソフトウェア配信エージェントと、を備えたネットワーク通信システムが開示されている。周辺機器を操作するソフトウェアが使用するクライアント側モジュールとして、「java(登録商標)アプレット」や「java(登録商標)アプリケーション」が供給可能であることも開示されている。
特願2004−093215号では、ページ記述言語(PDL)プリンタにおいて、カスタマイズや障害回避などの個別対応が求められる場合に対応した事例である。物理的なプロセッサによって処理されるネイティブ命令に基づいて構築されたファームウェアであるネイティブ環境中で、独立に定義された命令セットに基づいて構築されたプログラムを動的にロードしてリンクして実行するインタプリタ環境を内蔵し、クライアントからの印刷要求データストリームを受信する印刷要求データストリーム受信手段と、前記印刷要求データストリームを解釈し画像形成を行うジョブを制御する印刷ジョブ制御手段と、インタプリタ環境上のプログラムであって、印刷要求データストリームをデータ処理して処理済の印刷要求データストリームを生成するフィルタ手段と、受信された印刷要求データストリームをフィルタ手段に引き渡す第1のインタフェース手段と、フィルタ手段が処理した処理済のデータストリームを印刷ジョブ制御手段に引き渡す第2のインタフェースを設ける事によりカスタマイズおよび障害回避を容易に行うための仕組みを提供している。
特開平11−282684号公報
特開2003−256216号公報
特開平11−53132号公報
特開平11−306107号公報
ページ記述言語(PDL)プリンタにおいて、カスタマイズや障害回避などの個別対応が求められる事例に対する解決手段として前節のような提案がみられる。
しかしながら、前記のフィルタ技術を用いて複数の多段に用いる場合において、複数の独立したサードパーティから様々な効果のフィルタが供給された場合には、相互の互換性が十分に行えない場合がある。そのような場合に、複数のフィルタをインストールして使用すると、お互いの変換結果が干渉しあい意図しない作用が発生する事がある。
本発明は、上記に鑑みてなされたものであって、フィルタが複数のフィルタを多段に用いた場合に生じる前記不都合を解消し、且つ相互のフィルタの干渉作用によって、使用者の意図しない動作を防止し、PDLプリンタのカスタマイズの生産性を向上させる事ができる。
上記の目的を達成するために本発明は以下の手段を持つことを特徴とする。
物理的なプロセッサによって処理されるネイティブ命令に基づいて構築されたファームウェアであるネイティブ環境中にあって前記ネイティブ命令とは独立に定義された命令セットに基づいて構築されたプログラムを動的にロードしてリンクして実行するインタプリタ環境を内蔵した画像処理装置において、前記ネイティブ環境中にあって、クライアントからの印刷要求データストリームを受信する印刷要求データストリーム受信手段と、前記ネイティブ環境中にあって、前記印刷要求データストリームを解釈し画像形成を行うジョブを制御する印刷ジョブ制御手段と、前記インタプリタ環境上のプログラムであって、前記印刷要求データストリームをデータ処理して処理済の印刷要求データストリームを生成するフィルタ手段と、前記印刷要求データストリーム受信手段が受信した前記印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、前記フィルタ手段が処理した前記処理済のデータストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段とから構成されることを特徴とする画像処理装置において、
前記フィルタ手段が互いに別の機能を持つ第1から第Nのサブフィルタにより構成され、前記第一から第Nに含まれる第nのサブフィルタ手段が、第2n−1の文字列を第2nの文字列に変換する第nの文字列変換手段を有し、前記第一から第Nに含まれる前記第nの文字列を識別する文字列識別記号を挿入する第nの文字列識別記号挿入手段と、前記第一から第Nに含まれる第mのサブフィルタ手段が、前記文字列識別記号を判定する第mの文字列識別記号判定手段と、前記第mの文字列識別記号判定手段の結果に基づいて、第mのサブフィルタ手段の文字列変換手段を禁止する第mの文字列変換禁止手段と、前記第一から第Nに含まれる第pのサブフィルタ手段が、前記文字列識別記号を除去する文字列識別記号除去手段を有する。
前記フィルタ手段が互いに別の機能を持つ第1から第Nのサブフィルタにより構成され、前記第一から第Nに含まれる第nのサブフィルタ手段が、第2n−1の文字列を第2nの文字列に変換する第nの文字列変換手段を有し、前記第一から第Nに含まれる前記第nの文字列を識別する文字列識別記号を挿入する第nの文字列識別記号挿入手段と、前記第一から第Nに含まれる第mのサブフィルタ手段が、前記文字列識別記号を判定する第mの文字列識別記号判定手段と、前記第mの文字列識別記号判定手段の結果に基づいて、第mのサブフィルタ手段の文字列変換手段を禁止する第mの文字列変換禁止手段と、前記第一から第Nに含まれる第pのサブフィルタ手段が、前記文字列識別記号を除去する文字列識別記号除去手段を有する。
プリンタが受信したPDLデータストリームに対する解釈前の前処理を行うフィルタ部を柔軟かつ拡張可能なソフトウェアとして実装し、安定性が求められるプリンタファームウェアのその他の部分の実装と明確に分離することによって、PDLプリンタのカスタマイズの生産性を向上できた。
以下本発明を実施するための最良の形態を、実施例により詳しく説明する。
図1は画像処理装置のハードウェア構成を説明するブロック図である。
1000はプリンタで、内部でプリンタコントローラ1600からなる異なる制御系を司る機器で構成されている。
1はネットワークプリントサーバ用CPUで、書き換え可能なFlashROM3に記憶された制御プログラムに基づいてシステムバス4に接続されるネットワークコントローラ(LANC5)を介してローカルエリアネットワーク(LAN2000)に接続されたホストコンピュータ等の複数の外部装置(不図示)と所定のネットワーク通信プロトコルを用いて、前記外部装置から送られる印刷データやプリンタ制御命令等の各種データ送受信要求を統括的に制御する。またROM9に記憶された制御プログラム等あるいはディスクコントローラ(DKC15)を介して接続された外部メモリ10に記憶された制御プログラムやリソースデータ(資源情報)等に基づいてシステムバス11に接続される各種デバイスとのアクセスを統括的に制御し、受信される印刷データを基にラスタコントローラ12によって出力画像情報を生成し、マーキングエンジン16に対して画像信号を出力する。
RAM2はCPU1の主メモリ、ワークエリア等の一時記憶領域をして用いられる。
LED6はコントローラの動作状態を示す表示部として用いられており、例えばネットワークコントローラ(LANC5)とローカルエリアネットワーク(LAN2000)の電気的な接続状態(LINK)やネットワーク通信モード(10Baseや100Base、全二重、半二重)等の各種動作状態をLEDの点滅パターンや色で示すこと可能となっている。
18は操作パネル(操作部)でプリンタ1000の動作モード等の設定や印刷データの取り消し等の操作を行なうためのボタンや液晶パネルに重ねあわされたタッチパネル、およびプリンタ1000の動作状態を示す液晶パネルやLED等の表示部が配されている。
なお、本図で示したマーキングエンジン16は既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華方(熱転写)方式等が挙げられる。
図2は画像処理装置コントローラのソフトウェア構造を示す階層図である。
図において上位のモジュールは下位のモジュールに依存していることを示す。また特に線によって接続したモジュール間には依存関係が存在することを示す。
201はネイティブコード部である。この部分は画像処理装置のファームウェアを構成する標準部分であり、ハードウェアであるCPUによって直接実行されるネイティブコードである。この部分はファームウェアとして、装置の開発時に単一のロードモジュールにスタティックリンクされ、生産時に装置の持つ不揮発性メモリに格納されている。ファームウェアは装置の起動時に不揮発性メモリからRAMに展開され、装置の稼働中はCPUがRAMからコードを逐次的に読み出して解釈実行を行うが、実行時のダイナミックリンクは行わない。あるいは、ROMのようなCPUが直接読み出しアクセス可能な不揮発性メモリにファームウェアを格納して、RAMへの展開は行わずにCPUがROMからコードを逐次的に読み出して解釈実行するように構成してもよい。
202はプリントアプリケーションである。プリンタとしての画像処理装置の中心機能を提供するための組み込みアプリケーションであり、クライアントからの要求に呼応してプリントサービスを提供する。プリントアプリケーション202は制御API204によって、クライアントから要求されたプリントジョブの実行を行う。
203は印刷要求受信モジュールであり、クライアントから投入されるプリントジョブを受信する。印刷要求受信モジュール203は、RTOS209を介してプロトコルスタック210に依存している。クライアントからの印刷要求は、物理的にはEthernet(登録商標)などのネットワークやUSB、IEEE1394などの各種インタフェースを介してクライアントからプリンタに送信されるが、それぞれの接続形態に応じてプリント要求を行うためのアプリケーションプロトコルが規定されている。印刷要求受信モジュールはこのプリントのためのアプリケーションプロトコルのサーバ機能を実装している。プリントサービスのためのアプリケーションプロトコルには、たとえばネットワークプロトコルだけでもLPRやSMB、PAP、NetWareなど各種の仕様が存在し、その実現のためには膨大な開発コストと品質評価コストを要する。印刷要求受信モジュール203はこれら複数のインタフェースごとにそれぞれ各種存在するプリントサービスプロトコルからなるマルチプロトコルをサポートしている。印刷要求受信モジュール203は装置の記憶装置にプリントジョブの待ち行列を構成し、いわゆるスプール機能を実装するように構成してもよい。この場合、印刷要求受信モジュール203は他のジョブを実行している最中のようにジョブをただちに実行できないときにもクライアントからのプリントジョブ要求を受け付けて待ち行列に格納しクライアントを解放する。待ち行列に格納されたプリントジョブはプリントジョブが実行可能となった時にスケジューリングアルゴリズムに応じて逐次処理される。
204は制御APIであり、画像処理装置が提供する装置サービスにアクセスするためのアプリケーションプログラミングインタフェースである。制御APIを構成する主要なインタフェースのひとつはプリントジョブを実行したり制御したりするためのインタフェースである。
205はジョブ制御モジュールである。ジョブ制御モジュールは画像処理装置が提供する各種の画像処理ジョブを制御する。主要な画像処理ジョブはプリントジョブである。ジョブ制御モジュール205は、制御API204を介して実行を要求されたプリントジョブのデータストリームを解釈して、プリントジョブの記述と、プリントされるべき印刷データの記述とを分離する。プリントジョブ記述は印刷データの解釈展開系の動作パラメータを指定する環境データや、プリントアウトに利用する転写紙の給紙の指定、両面プリントなどのプリントモードの指定、排紙トレイの指定、ソート(コレート)の指定、ステイプルや製本などのフィニッシングの指定などを含む。一方、印刷データはPDLによって記述されており、主にページごとの描画が記述されている。ジョブ制御モジュール205はプリントジョブ記述に応じてトランスレータ206、レンダラ207、ME制御モジュール208を制御する。またジョブ制御モジュール205は、印刷データストリームがトランスレータ206、レンダラ207、ME制御モジュール208の順に流れ処理されるようにスケジュールする。
206はトランスレータである。トランスレータはPDLによって記述された印刷データを解釈して、レンダリング処理に適した印刷用中間言語の記述に変換する。レンダリング処理に適した印刷用中間言語によるプリントデータの記述をディスプレイリストと呼ぶ。トランスレータ206は各種のPDL仕様ごとにそれぞれ異なる固有の実装を持ち、どのトランスレータもそれぞれのPDLをレンダラに固有のディスプレイリストへと変換する。
207はレンダラである。レンダラはディスプレイリストをラスタ画像に展開する。レンダラ207はRTOS209を介してレンダラドライバ212に依存している。
208はマーキングエンジン(ME)制御モジュールである。ME制御モジュールは画像処理装置において転写紙への画像形成を行うマーキングエンジンを制御する。ME制御モジュールはRTOS209を介してMEドライバ213に依存している。なお、マーキングエンジンは既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華(熱転写)方式などが挙げられる。
209はリアルタイムOSである。リアルタイムOSは、画像処理装置のネイティブコードファームウェアの実行環境を提供するプラットフォームである。リアルタイムOSは、その上で動作するソフトウェアのために、ソフトウェア構築のために利用する基本的なサービスや装置が持つハードウェア資源を抽象化したサービスを提供し、また、装置のハードウェアをソフトウェアから利用しやすいインタフェースに抽象化するためのデバイスドライバ構築のフレームワークも提供する。RTOS209が提供する機能には、CPUによる命令実行コンテクストを抽象化したタスク管理、複数の実行コンテクストを仮想的に同時動作させ並行処理(concurrent processing)を実現するマルチタスク機構、タスク間でメッセージのやり取りをしたり同期をとったりするためのタスク間通信(メッセージキューやセマフォなど)、各種のメモリ管理、タイマーやクロック、割り込み管理やDMAの制御などがある。
210はプロトコルスタックである。プロトコルスタックはRTOS209のフレームワークに組み込まれ、より下層の外部インタフェースドライバ211が制御する外部インタフェース上にトランスポート層以下のプロトコルを実装する。たとえばネットワークインタフェースの場合、TCP/IPやUDP/IPなどのプロトコルを実現し、組み込みアプリケーション層に対してはRTOS209を介してバークレイソケットなどのアプリケーションプログラミングのためのインタフェースを提供する。またたとえば外部インタフェースがUSBの場合には1284.4などのプロトコルを実現する。
211は外部インタフェースドライバである。ネットワークインタフェースや、IEEE1394、USB、RS232C、セントロニクスなどの各種インタフェースへの接続を提供するハードウェアを駆動する。たとえばネットワークの場合、Ethernet(登録商標)などのネットワークに接続するためのネットワークインタフェースハードウェアを駆動して物理層のプロトコルを実現する。
212はレンダラドライバであり、レンダラを駆動する。レンダラはディスプレイリストをラスタ画像に展開するためのハードウェアである。レンダラはソフトウェアによって実現してもよい。
213はマーキングエンジンドライバであり、転写紙への画像形成を行うマーキングエンジンを駆動する。
214は操作パネルドライバである。画像処理装置が備える操作パネルの表示部への出力とキーやタッチパネルなどからの入力イベントを処理する。
215はインタプリタ環境である。各種のインタプリタ環境、ここではJava(登録商標)プラットフォームのランタイム環境に基づき、それに画像処理装置固有のAPI群とフレームワーク群を追加して構成されているソフトウェアプラットフォームである。このソフトウェアプラットフォームは、その上で動作するインタプリタ言語で記述されたプログラムに対して動的なソフトウェア動作環境を提供する。インタプリタ環境は、ネイティブコードによって実装された部分(201に含まれる)と、そのインタプリタ言語で記述されたプログラムとして実装された部分(220に含まれる)とを含む。
216はインタプリタであり、所定の命令セットによって記述された命令列から逐次的に命令を読み出し解釈し実行する。ここではインタプリタはJava(登録商標)仮想マシンによって構成され、命令セットはJava(登録商標)のバイトコードである。
217は標準のAPIライブラリとフレームワーク群である。RTOS209が提供する抽象化された各種コンピューティング資源をさらにインタプリタ環境固有のモデルによって抽象化して、この上で動作するプログラムのための実行環境を提供する。ここではJava(登録商標)プラットフォームを構成する標準的なクラスライブラリ群と、OSGiのフレームワークによって実現している。Java(登録商標)プラットフォームはRTOS209相当の抽象化された機能を提供し、たとえば仮想マシンによる命令実行コンテクストを抽象化したスレッド管理、複数の実行コンテクストを仮想的に同時動作させ並行処理を実現するマルチスレッド機構、スレッド間でメッセージのやり取りをしたり同期をとったりするためのスレッド間通信、高度に抽象化された各種のメモリ管理(コレクションなど)、タイマーやクロック、例外管理、ファイルシステムやネットワークのアクセス、外部入出力装置とのインタフェースなどがある。OSGiフレームワークは単一のJava(登録商標)仮想マシン上に複数のJava(登録商標)アプリケーション(サービス)を動作させる。またアプリケーションのライフサイクルの管理やアプリケーション間通信機能などを提供する。OSGiフレームワーク上には、複数のシステムサービスがプリインストールされている。システムサービスには、インタプリタ環境に新たなアプリケーションを追加したり更新したり削除したりするためのサービス管理サービスや、Appletインタフェースに従って実装されたJava(登録商標)クラスを画像処理装置の操作パネルに表示して操作パネルから操作可能に動作させるためのAppletビューアサービスや、Servletインタフェースに従って実装されたJava(登録商標)クラスをクライアントのブラウザから操作可能なWebアプリケーションとして動作させるためのHTTPサービスなどが用意されている。特にAppletインタフェースに従って実装されたJava(登録商標)アプリケーションは、AWTのAPIなどを経由して間接的に操作パネルドライバ214とインタフェースすることができる。
218はジョブ制御ライブラリである。ジョブ制御ライブラリは制御API204に依存して、インタプリタ環境上で動作するプログラムのために、画像処理ジョブの実行や制御を可能とするアプリケーションプログラミングインタフェースを提供する。
219はフィルタフレームワークである。フィルタフレームワークはプリントアプリケーション202と通信して、プリントジョブ要求の実行に際してインタプリタ環境上に実装したフィルタプログラムからのプリントデータストリームに対する介在を可能とする。
220はインタプリタコード部である。この部分はインタプリタが解釈できるインタプリタ言語によって記述されたソフトウェアとして実装され、インタプリタ環境を構成するAPIライブラリ群やフレームワーク群の一部とインタプリタ環境上で動作するプログラムとを含む。ネイティブコード部201とインタプリタコード部220にまたがって位置づけられるソフトウェアはそれぞれの空間の間をインタフェースするためのモジュールをインタプリタ環境が規定する固有のフレームワークとプログラミングモデルに従ってコーディングする必要がある。ここではJava(登録商標) Native Interface(JNI)に従って境界部分のプログラミングを行っている。
221はフィルタである。221はインタプリタ環境上に実装されたプログラムであり、フィルタフレームワーク219の枠組みに従って実装されているためプリントアプリケーション202が処理するプリントデータストリームに対する処理を行うことができる。
図3は画像処理装置コントローラのソフトウェアモジュール間のデータの流れを示す図である。
前述のモジュールには同一の符号をつけて説明を省略する。
印刷要求受信モジュール203がクライアントから受信したプリントジョブデータストリームは、フィルタを介さない場合、301によってジョブ制御モジュール205に流れる。データストリーム301は、たとえばRTOS208が提供するメッセージキューなどのタスク間通信機能によって引き渡される。ジョブ制御モジュールはプリントジョブデータストリームを逐次的に解釈し、データストリーム中のジョブ記述の解釈を行いそれに応じて制御パス302によってトランスレータ206、レンダラ207、ME制御モジュール208の制御を行う。一方データストリーム中の印刷データは一般にPDLによって記述されたページ記述のコマンドシーケンスでありこれは303によってトランスレータ206に流れる。トランスレータ206は印刷データの解釈を行いディスプレイリストの生成を行う。生成されたディスプレイリストは304によってレンダラ207に流れる。レンダラ207はディスプレイリストの展開を行いラスタ画像データの生成を行う。ラスタ画像データはページ単位に生成される場合もあれば、ページを副走査方向に複数の領域に区切ったバンド単位に生成される場合もある。生成されたラスタ画像データは305によってME制御モジュール208に流れる。ME制御モジュールはラスタ画像データをマーキングエンジンに転送し、マーキングエンジンにおいて転写紙への画像形成が行われる。以上の処理はすべてネイティブコード部分201で実装されている。
一方、プリントジョブデータのストリームに対するフィルタ処理を施す場合には、印刷要求受信モジュール203がクライアントから受信したプリントジョブデータストリームは306によってフィルタフレームワーク219に流れる。データストリーム306は、たとえばRTOS208が提供するメッセージキューなどのタスク間通信機能によって引き渡される。フィルタフレームワークのランタイムモジュール219はインタプリタ環境上に実装されたフィルタプログラム群を管理している。フィルタフレームワークはプリントジョブデータストリームを307によってフィルタ221に流す。データストリーム307は、たとえばインタプリタ環境219が提供するスレッド間通信機能によって引き渡される。複数のフィルタが配置されている場合には、それぞれのフィルタ間にもデータストリームが流れ、これらはインタプリタ環境219が提供するスレッド間通信機能によって引き渡される。フィルタの実装221は入力として受け取ったデータストリームに対して所定の処理を施して出力する。フィルタ221が出力したデータストリームは308によってフィルタフレームワーク219に流れる。データストリーム308は、たとえばインタプリタ環境219が提供するスレッド間通信機能によって引き渡される。フィルタフレームワーク219はフィルタ211から受け取ったデータストリームを309によってジョブ制御モジュール205に流す。データストリーム309は、たとえばRTOS208が提供するメッセージキューなどのタスク間通信機能によって引き渡される。以下はフィルタを介さない場合と同様にデータが流れる。
310はフィルタフレームワーク219の状態に応じて印刷要求受信モジュール203からジョブ制御モジュール205にいたるデータストリームを制御するための制御パスである。フィルタフレームワーク219が管理するフィルタが有効な状態で配置されている場合はデータストリーム306が有効となりフィルタによる前処理が施される。フィルタフレームワーク219が有効なフィルタを配置していない場合には、データストリーム301が有効となり、クライアントから受信したデータストリームは直接ジョブ制御モジュール205に流れる。この場合、フィルタフレームワーク介在のオーバヘッドを避けられるため、フィルタによるカスタマイズをまったく行わない標準状態のプリンタのデータ処理性能を発揮できる。
図4はインタプリタ環境上に構築されるフィルタフレームワークのクラス図である。
FilterManagerクラス401はフィルタフレームワークのランタイム環境を実現するオブジェクトのクラスである。FilterManagerクラス401はひとつのConnectorクラス405のオブジェクトをコンポジション(composition)として持つ。また、複数(n個)のFilterクラス402のオブジェクトへの参照と、複数(n−1個)のPipeクラス406のオブジェクトへの参照とからなる順序付けられたリストを持つ。またフィルタフレームワークランタイムにインストールされた複数のFilterクラスの具体クラスを管理するためのinstalledFilter属性を備える。
Filter抽象クラス402は各種のフィルタクラスを抽象化する抽象クラスである。Filter抽象クラス402はフィルタ名称を示すname属性などを備える。また、input属性としてInputStream抽象クラス403を継承したクラスのオブジェクトへの参照を持ち、output属性としてOutputStream抽象クラス404を継承したクラスのオブジェクトへの参照を持つ。Filter抽象クラスの具体クラスたちはRunnableインタフェースを実装しrunメソッドを持つ。FilterManagerオブジェクトが、管理している各種のフィルタクラスのインスタンスを生成してデータストリームのフィルタ処理のために配置するとき、配置されるそれぞれのフィルタオブジェクトに対応してスレッドを生成し並行動作するスレッドの実行コンテクストでフィルタオブジェクトのrunメソッドを実行する(すなわち、コンストラクタのパラメータにフィルタオブジェクトを渡してjava(登録商標).lang.Threadオブジェクトを生成し、startする)。このようにして個々のフィルタオブジェクトは自律的に動作する。
InputStream抽象クラス403はデータストリームの入力元の抽象クラスである。InputStream抽象クラス403は、呼び出しのたびに逐次的にデータを読み出すことのできるreadメソッドを備える。
OutputStream抽象クラス404はデータストリームの出力先の抽象クラスである。OutputStream抽象クラス404は、呼び出しのたびに逐次的にデータを書き込むことのできるwriteメソッドを備える。
Connectorクラス405はインタプリタ環境のオブジェクトとネイティブコードとの間でデータストリームの交換を行うための接点を表現したオブジェクトのクラスである。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はインタプリタ環境上に構築されるフィルタフレームワークが管理するオブジェクトのインスタンス図である。
図5(a)は1つのサブフィルタが有効な状態のときフィルタフレームワークのランタイムが管理しているオブジェクト間の関係を示している。
Connectorオブジェクト501はConnectorクラス405のオブジェクトである。
サブフィルタオブジェクト502はFilter抽象クラス402を具体化した具体クラスのオブジェクトである。サブフィルタオブジェクト502のinput属性にはConnectorオブジェクト501が持つConnectorInputSteamオブジェクトの参照が保持されており、output属性にもConnectorオブジェクト501が持つConnectorOutputStreamオブジェクトの属性が保持されている。Filterオブジェクトはinputの指すConnectorInputStreamオブジェクトからreadしたデータストリームに対してフィルタ処理を施す。フィルタ処理を施したデータストリームをoutputの指すConnectorOutputStreamオブジェクトへとwriteする。
以上のようにして、プリントデータストリームのオブジェクト間での引き渡し(図の太い矢印)が実現される。
図5(b)は2つのサブフィルタが有効な状態のときフィルタフレームワークのランタイムが管理しているオブジェクト間の関係を示している。
サブフィルタ1オブジェクト503はFilter抽象クラス402を具体化した具体クラスのオブジェクトである。サブフィルタ1オブジェクト503のinput属性にはConnectorオブジェクト501が持つConnectorInputStreamオブジェクトの参照が保持されている。サブフィルタ1オブジェクト503はinputの指すConnectorInputStreamオブジェクトからreadしたデータストリームに対してフィルタ処理を施す。サブフィルタ1オブジェクト503のoutput属性にはPipeオブジェクト504が持つPipedOutputStreamオブジェクトの参照が保持されている。サブフィルタ1オブジェクト503はフィルタ処理を施したデータストリームをoutputの指すPipeedOutputStreamオブジェクトへとwriteする。
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からreadしたデータストリームに対してフィルタ処理を施す。サブフィルタ2オブジェクト505のoutput属性にはConnectorオブジェクト501が持つConnectorOutputStreamの参照が保持されている。サブフィルタ2オブジェクト505はフィルタ処理を施したデータストリームをoutputの指すConnectorオブジェクト501が持つConnectorOutputStreamへとwriteする。
以上のようにして、プリントデータストリームのオブジェクト間での引き渡し(図の太い矢印)が実現される。また、同様にして間にPipeオブジェクトを挟みこみながらより多くのサブフィルタオブジェクトをデータストリーム処理のために配置することもできる。
図6はフィルタフレームワークを操作するためのユーザインタフェース例を示す図である。
フィルタフレームワーク操作のためのユーザインタフェースは、標準ライブラリとフレームワーク217に含まれるHTTPサービスによってWebアプリケーション(Servlet)として実装されており、クライアントで動作するWebブラウザから操作される。あるいは、Applet型サービスとして実装して、画像処理装置の持つ操作パネルから操作するように構成してもよい。
図6(a)は画像処理装置のフィルタフレームワークに新しいサブフィルタを追加インストールするためのユーザインタフェースを示している。
601はサブフィルタインストール画面の例である。
602はファイル名入力フィールドである。ユーザはこの欄にクライアントコンピュータのファイルシステムにあらかじめ格納されているインストールしたいフィルタクラスのクラスファイルのファイルパスを入力する。
603は参照ボタンである。ユーザがこのボタンをクリックすると、クライアントコンピュータのWebブラウザが提供するファイル選択ダイアログが開き、クライアントコンピュータのファイルシステム内をブラウズしてインストールしたいフィルタクラスのクラスファイルを選択することができる。ファイル選択ダイアログによってユーザが選択したファイルのファイルパスは自動的にファイル名入力フィールド602に入力される。
604はインストールボタンである。ユーザがこのボタンをクリックすると、クライアントコンピュータのWebブラウザによって、602に入力されたファイルパスのクラスファイルが画像処理装置上で待機している新規サブフィルタインストールのためのWebアプリケーションに送信される。クラスファイルを受信したWebアプリケーションは画像処理装置の不揮発性メモリに受信したクラスファイルを格納する。また、クラスファイルをインタプリタ環境に動的にロードしてオブジェクトインスタンスを生成し、生成したサブフィルタオブジェクトをフィルタフレームワークランタイムが管理する有効サブフィルタ列のリストの最下流に配置する(もし既に有効なFilterオブジェクトがサブフィルタ列に存在すれば、新規Filterオブジェクトを連結するために新たなPipeオブジェクトの生成も行う)。
本ユーザインタフェースをWebアプリケーションとして実装している場合、フィルタの実装クラスを装置にアップロードする機構はRFCによって定められたHTMLフォームに基づくファイルアップロードの仕様を利用して実装している。したがって、この場合602と603はクライアントコンピュータのWebブラウザによって表示されており、604はフォームのsubmitに対応している。
また、本ユーザインタフェースをApplet型のサービスとして実装する場合には、601は画像処理装置の操作パネルの表示部に表示される。602に指定されるファイルは、画像処理装置がリムーバブル記憶装置を備える場合はリムーバブル記憶メディア中のファイルパスを指定してもよいし、あるいは、ネットワーク経由で画像処理装置からHTTPやFTPなどのファイル転送プロトコルによって読み出しアクセス可能な共有ファイルをURLなどによって指定するように構成してもよい。
図6(b)は画像処理装置のフィルタフレームワークにインストールされているサブフィルタを配置するためのユーザインタフェースを示している。
605はサブフィルタ配置画面の例である。
606はフィルタフレームワークのランタイムにインストールされているサブフィルタ群を一覧するための表である。表の各行はインストールされているサブフィルタのそれぞれに対応している。表の「選択」列にはチェックボックスが並び、チェックされた行のサブフィルタが後述する操作の対象として選択される。表の「順序」列にはサブフィルタが無効状態にある場合には「無効」の表示と、有効状態にある場合にはそのデータストリーム処理の上流から下流にむけて昇順につけられた番号が表示される。表の「名称」列にはフィルタオブジェクトのname属性に記述されたサブフィルタ名称が表示される。
607から610は選択サブフィルタに対する操作を指示するためのボタンであり、表606の選択列がチェックされた行のサブフィルタを対象とする操作を指示する。
607は詳細表示ボタンである。ユーザがこのボタンをクリックすると、選択されたサブフィルタに関する詳細情報が表示される。詳細情報としては、サブフィルタの名称やバージョン、説明、クラス名、インストール元のクラスファイル名(ファイルパスやURL)、インストールされた日時などがある。
608は優先ボタンである。ユーザがこのボタンをクリックすると、選択されたサブフィルタのサブフィルタ列内における優先順位を高位に変更する。この時他のフィルタが高位に設定されていた場合には、通常のレベルへ変更する。
609は有効/無効のトグルボタンである。ユーザがこのボタンをクリックすると、選択されたサブフィルタが有効状態にある場合は無効状態に変更し、無効状態にある場合には有効状態に変更する。無効状態にされたフィルタオブジェクトは削除されるがフィルタクラスはインストールされた状態で残りフィルタフレームワークランタイムの管理下に留まる。
610はアンインストールボタンである。ユーザがこのボタンをクリックすると、選択されたサブフィルタのクラスファイルを画像処理装置のインタプリタ環境から削除する。
図7は本実施例に適用可能なフィルタが行う処理を説明する図である。
701は機能拡張フィルタクラスのオブジェクトであり、入力ストリームを読み出して、そのデータに応じて新たな機能を付加するためのデータ変換やデータ追加などの処理を施して、出力ストリームに書き込む。機能拡張の例として、顧客システムが専用のPDLドライバを抱えていてそのドライバが新しい画像処理装置の両面印刷や各種フィニッシングなどの新しい能力に未対応のときに、そのドライバを変更することなく画像処理装置側のフィルタ対応によって装置の新機能を活かす例をとりあげる。
機能拡張フィルタ701は、そのフィルタが稼動している画像処理装置の新しい能力を活かすための印刷ジョブ設定をその属性として持つ。フィルタオブジェクトの属性値は装置の不揮発性メモリにも保存され、装置の電源が落とされて再起動された場合であってもオブジェクトの状態は保存される。ジョブ種類属性は「印刷」「セキュアプリント」などの値をとり、画像処理装置が備える各種ジョブのタイプを表す。部数属性は印刷物のコピーを何セット生成するかを表す。ページレイアウト属性は「1ページ/枚」「2ページ/枚」「4ページ/枚」など1枚の用紙に複数ページを面付けするための指定や「ポスター(2x2)」「ポスター(3x3)」など1ページを拡大して複数枚の用紙に分割印刷するための指定といった、ページレイアウト指定を表す。配置順属性は、「左上から右向き」「左上から下向き」「右上から左向き」「右上から下向き」などの値をとり、ページレイアウト時の各面の配置指定を表す。印刷方法属性は「片面印刷」「両面印刷」「製本印刷」などの値をとり、印刷方法を表す。とじ方向属性は「長辺とじ(左)」「長辺とじ(右)」「短辺とじ(上)」「短辺とじ(下)」などの値をとり、フィニッシング処理において複数枚の用紙を綴じる方向を表す。排紙方法属性は「指定しない」「ソート」「ステイプル」「パンチ穴」などの値をとり、フィニッシングの方法を表す。給紙属性は「自動」「手差しトレイ」「カセット」「デッキ」あるいは「普通紙」「厚紙」「色紙」「OHP」などの値をとり、画像形成対象とする用紙(転写紙)の給紙指定を表す。
702は機能拡張フィルタへの入力データストリーム例であり、その内容は旧来のアプリケーションや画像処理装置ドライバが生成する単にページごとの画像形成記述を中心とするPDLやテキストからなる印刷データストリームである。
703は機能拡張フィルタが逐次処理を行って出力する出力データストリーム例である。入力データに存在した単純な印刷データストリームに加えて、画像処理装置の新機能を使いこなすための各種のプリントジョブ記述データが挿入されている。プリントジョブ記述は入れ子構造を表現できるようになっており、ジョブ単位、複数の文書をまとめたフィニッシングなどの処理単位、個々の文書単位のそれぞれの階層において機能拡張フィルタ701属性のような各種属性の指定が可能である。1行目はジョブの開始を表すデータである。2行目はジョブ単位の設定の開始を表すデータである。3行目はこの位置に各種のジョブ単位の設定データが存在することを示す。4行目は複数文書をひとまとめにする単位の開始を表すデータである。5行目は複数文書をまとめた単位に対する設定の開始を表すデータである。6行目はこの位置に複数文書をまとめた単位に対する設定データが存在することを示す。7行目は文書の開始を表すデータである。8行目は文書単位の設定の開始を表すデータである。9行目はこの位置に文書を単位とする設定データが存在することを示す。10行目は文書記述データの開始を表すデータである。11行目は文書そのものを表現する文書記述データがこの位置に存在し、ここでは入力データストリーム702に存在した印刷データストリームがこの位置に存在する。12行目は文書の終了を表すデータである。13行目は複数文書をまとめる単位の終了を表すデータである。14行目はジョブの終了を表すデータである。
本実施例では、図7で示す構造を持つサブフィルタが複数インストールされた場合の画像処理装置の例について解説している。上記複数のサブフィルタに相矛盾する設定が為されている場合には、フィルタの適用順位によって結果が異なる場合がある。本発明では、図6を用いて説明したように各フィルタの優先順位を指定可能なユーザインタフェースを有しており、
図8は実施例のサブフィルタのフィルタ処理の主要な手順を示すフローチャートである。
図8は実施例のサブフィルタのフィルタ処理の主要な手順を示すフローチャートである。
この手順は具体的なフィルタクラスのrunメソッドとして実装されている。フィルタフレームワーク219は、有効なフィルタクラスのオブジェクトを生成しその入力ストリームと出力ストリームをセットアップした後に、このオブジェクトのrunメソッドを実行するためにスレッド(Threadオブジェクト)を割り当てる。これにより、フィルタフレームワークが管理する各フィルタオブジェクトにおいて本手順がそれぞれ自律的に並行処理で動作することになる。
ステップ801では、必要な前処理を行う。前処理には、フィルタが内部的に利用する属性の初期化や、パターンマッチングに使用するパターン記述に対する前処理、入力ストリームや出力ストリームをより使いやすくする機能を付け加える(たとえば入力ストリームを先読み可能にしたりシステムリソースを有効に利用するバッファリングを拡張したりする)ための修飾クラス(java(登録商標).io.FilterInputStreamやjava(登録商標).io.FilterOutputStreamの具体クラス)によってストリームをラップする処理などが含まれる。
ステップ802では、input属性にセットされている入力ストリームからパターンマッチング処理に必要な量のデータを読み出す。
ステップ803では、入力のデータストリームの中に特定の状態を示す識別記号の一つである置換禁止領域開始TAGが含まれるか否かを検出して、含まれている場合にはステップ811へ進む。
ステップ804では、入力のデータストリーム中からこのフィルタが操作するべきデータパターンの出現を発見するためにパターンマッチングを行う。フィルタが操作するべきデータパターンは固定のデータ列そのものでもよいし、正規表現(regular expression)などの形式言語による記述でもよい。パターン記述に合致するデータの出現をデータストリーム中から発見する各種の実装が広く知られている(grep、sed、AWK、Perlなどが有名である)。パターンマッチングを効率よく行うためのアルゴリズムはよく研究されている。固定のパターン記述の場合には、まずパターン記述と部分データストリームのそれぞれのハッシュ関数を比較してハッシュ値が一致した場合のみ両者の完全一致を判定する方法や、Knuth−Morris−Prattの方法や、Boyer−Mooreの方法などが知られている。正規表現などによるパターン記述の場合も、有限オートマトンなどの形式言語理論を背景とする各種のアルゴリズムが知られている。比較的最近のJava(登録商標)プラットフォームでは、正規表現を扱うためのクラスライブラリが標準に備わってもいる(java(登録商標).util.regex)。たとえばデータストリームの上流のパターンに応じて状態が変化し変化した状態に従って下流のパターンの解釈を変えなければならない場合など、正規表現などではかえって記述が困難なほど複雑なパターンマッチングが必要とされる場合には、そのパターンの特徴そのものを評価するアルゴリズムをJava(登録商標)プログラムとして書き下してもよい。どれほど複雑なパターンマッチングであっても素直に実装することができる。
ステップ805では、パターンマッチングの結果を判定しパターン記述に合致するデータをデータストリーム中に発見した場合はステップ806に進む。そうでなければステップ806に進む。
ステップ806では、パターン記述に合致したデータストリーム中の部分データ列に対してこのフィルタの目的に応じた操作を施しその結果で置き換える。
ステップ807では、このサブフィルタが優先指定されているか否かを判定して、優先指定されていればステップ808へ進み、そうでなければステップ809へ進む。
ステップ808では、置換後のデータの前方に置換領域開始TAGを追加し、後方に置換禁止領域終了TAGを追加する。
ステップ809では、処理済の部分データ列(すなわち、監視しているパターンが現れなかったデータ列、あるいは、監視しているパターンを含むデータ列に対してステップ808の処理を施したデータ列)を出力ストリームに書き込む。
ステップ810では、入力ストリームが終了したかどうかを判定し、終端を迎えた場合は終了する。そうでなければステップ802に戻り、上記の手順を繰り返す。
ステップ811では、入力ストリームから次のデータを読み出す。
ステップ812では、入力したデータに特定の状態を示す識別記号の一つである置換禁止領域終了TAGがあるか否かを判断する。置換禁止領域終了TAGが含まれるのであれば、ステップ813に進み、そうでなければステップ811に進む。
ステップ813では、入力ストリームが終了したかどうかを判定し、終端を迎えた場合は終了する。そうでなければステップ811に戻る。
以上が本サブフィルタの動作である。
以上が本サブフィルタの動作である。
次に、図9を用いて特定の状態を示す識別記号の一つである置換禁止領域開始TAG及び置換禁止領域終了TAGを取り除く為の、特殊なフィルタの動作について説明する。これは通常その他の機能を持ったサブフィルタの最後に置かれる。
ステップ901では、前述の必要な前処理を行う。
ステップ902では、input属性にセットされている入力ストリームから必要な量のデータを読み出す。
ステップ903では、入力のデータストリーム中から除去対象の識別記号の出現を発見するために前述のパターンマッチング処理を行う。
ステップ904では、入力のデータストリームの中に特定の状態を示す識別記号の一つである置換禁止領域開始TAGが含まれるか否かを判断して、それが含まれている場合にはステップ905へ進む。
ステップ905では、検出された識別記号を除去する。
ステップ906では、処理済の部分データ列(すなわち、監視しているパターンが現れなかったデータ列、あるいは、監視しているパターンを含むデータ列に対してステップ908の処理を施したデータ列)を出力ストリームに書き込む。
ステップ907では、入力ストリームが終了したかどうかを判定し、終端を迎えた場合は終了する。そうでなければステップ902に戻り、上記の手順を繰り返す。
1 CPU
2 RAM
3 FlashROM
4 システムバス
5 LANC
6 LED
10 外部メモリ
11 システムバス
12 ラスタコントローラ
15 DKC
16 マーキングエンジン
18 操作パネル
1000 プリンタ
1600 プリンタコントローラ
2000 LAN
2 RAM
3 FlashROM
4 システムバス
5 LANC
6 LED
10 外部メモリ
11 システムバス
12 ラスタコントローラ
15 DKC
16 マーキングエンジン
18 操作パネル
1000 プリンタ
1600 プリンタコントローラ
2000 LAN
Claims (10)
- 物理的なプロセッサによって処理されるネイティブ命令に基づいて構築されたファームウェアであるネイティブ環境中にあって前記ネイティブ命令とは独立に定義された命令セットに基づいて構築されたプログラムを動的にロードしてリンクして実行するインタプリタ環境を内蔵し、
前記ネイティブ環境中にあって、クライアントからの印刷要求データストリームを受信する印刷要求データストリーム受信手段と、
前記ネイティブ環境中にあって、前記印刷要求データストリームを解釈し画像形成を行うジョブを制御する印刷ジョブ制御手段と、
前記インタプリタ環境上のプログラムであって、前記印刷要求データストリームをデータ処理して処理済の印刷要求データストリームを生成するフィルタ手段と、
前記印刷要求データストリーム受信手段が受信した前記印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、
前記フィルタ手段が処理した前記処理済のデータストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段とから構成されることを特徴とする画像処理装置において、
前記フィルタ手段が互いに別の機能を持つ第1から第Nのサブフィルタにより構成され、
前記第一から第Nに含まれる第nのサブフィルタ手段が、第2n−1の文字列を第2nの文字列に変換する第nの文字列変換手段を有し、
前記第一から第Nに含まれる前記第nの文字列を識別する文字列識別記号を挿入する第nの文字列識別記号挿入手段と、
前記第一から第Nに含まれる第mのサブフィルタ手段が、前記文字列識別記号を判定する第mの文字列識別記号判定手段と、
前記第mの文字列識別記号判定手段の結果に基づいて、第mのサブフィルタ手段の文字列変換手段を禁止する第mの文字列変換禁止手段と、
前記第一から第Nに含まれる第pのサブフィルタ手段が、前記文字列識別記号を除去する文字列識別記号除去手段を有することを特徴とする画像処理装置。 - 前記印刷要求データストリーム受信手段が受信した印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第3のインタフェース手段から構成されることを特徴とする請求項1に記載の画像処理装置。
- 前記第1から第Nのサブフィルタ手段のデータ処理は、
前記データストリーム中に現れる特定データパターンを発見するパターンマッチングと、
パターンにマッチした部分データストリームに対応する新たな部分データストリームを生成し置換する処理を含むことを特徴とする請求項1に記載の画像処理装置。 - 前記インタプリタ環境は、その上で動作するプログラムをユーザが操作するためのユーザインタフェース構築手段を備え、
前記第1から第Nのサブフィルタ手段はそのデータ処理の処理パラメータを操作するために前記ユーザインタフェース構築手段によって構築されたユーザインタフェースを備えることを特徴とする請求項1に記載の画像処理装置。 - 前記インタプリタ環境はその上で動作するプログラムのために命令の読み出し解釈実行をそれぞれ並行して処理するスレッド機構を提供し、
前記フィルタ手段は前記インタプリタ環境が提供するスレッド機構による独立した実行コンテクストの下で自律的にそのデータ処理を実行することを特徴とする請求項1に記載の画像処理装置。 - 前記インタプリタ環境はJava(登録商標)プラットフォームに基づくことを特徴とする請求項1に記載の画像処理装置。
- クライアントからの印刷要求データストリームを受信する印刷要求データストリーム受信手段と、
前記印刷要求データストリームを解釈し画像形成を行うジョブを制御する印刷ジョブ制御手段と、
前記印刷要求データストリームをデータ処理して処理済の印刷要求データストリームを生成するフィルタ手段と、
前記印刷要求データストリーム受信手段が受信した前記印刷要求データストリームを前記フィルタ手段に引き渡す第1のインタフェース手段と、
前記フィルタ手段が処理した前記処理済のデータストリームを前記印刷ジョブ制御手段に引き渡す第2のインタフェース手段と、
0個以上の前記第一から第Nのサブフィルタ手段を管理して、0個以上の前記第一から第Nのサブフィルタ手段を前記データストリームのデータパス中に配置し、配置された前記第一から第Nのサブフィルタ手段が逐次的に前記データストリームを処理するように制御するサブフィルタ管理手段とから構成されることを特徴とする画像処理装置。 - 前記サブフィルタ管理手段に管理している0個以上の前記第一から第Nのサブフィルタ手段の中から0個以上のサブフィルタ手段を選択的に配置させる操作を行うサブフィルタ配置操作手段から構成されることを特徴とする請求項7に記載の画像処理装置。
- 前記印刷要求データストリーム受信手段が受信した印刷要求データストリームを前記印刷ジョブ制御手段に引き渡す第3のインタフェース手段から構成され、
前記サブフィルタ管理手段が前記サブフィルタを1つも配置していない場合には前記第3のインタフェース手段によって前記印刷要求データストリーム受信手段が受信した印刷要求データストリームが前記印刷ジョブ制御手段に直接引き渡されることを特徴とする請求項7に記載の画像処理装置。 - 前記サブフィルタ手段を外部から装置内に導入して前記サブフィルタ管理手段の管理下に置くためのサブフィルタ導入手段から構成されることを特徴とする請求項7に記載の画像処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005086054A JP2006268467A (ja) | 2005-03-24 | 2005-03-24 | 画像処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005086054A JP2006268467A (ja) | 2005-03-24 | 2005-03-24 | 画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006268467A true JP2006268467A (ja) | 2006-10-05 |
Family
ID=37204368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005086054A Withdrawn JP2006268467A (ja) | 2005-03-24 | 2005-03-24 | 画像処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006268467A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010173206A (ja) * | 2009-01-30 | 2010-08-12 | Riso Kagaku Corp | プリンタコントローラ |
JP2012507060A (ja) * | 2008-10-27 | 2012-03-22 | サトーホールディングス株式会社 | プログラムスクリプト言語を用いたラベルプリンタapi |
JP2012076468A (ja) * | 2012-01-11 | 2012-04-19 | Canon Inc | 印刷装置、印刷方法、及びプログラム |
JP2012109749A (ja) * | 2010-11-16 | 2012-06-07 | Konica Minolta Business Technologies Inc | 画像処理システム、画像処理サーバ、画像形成装置、画像処理方法及び画像処理プログラム |
JP2020087376A (ja) * | 2018-11-30 | 2020-06-04 | 株式会社リコー | 情報処理装置、情報処理システム、および方法 |
-
2005
- 2005-03-24 JP JP2005086054A patent/JP2006268467A/ja not_active Withdrawn
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012507060A (ja) * | 2008-10-27 | 2012-03-22 | サトーホールディングス株式会社 | プログラムスクリプト言語を用いたラベルプリンタapi |
US9870522B2 (en) | 2008-10-27 | 2018-01-16 | Sato Holdings Kabushiki Kaisha | Label printer API using LUA program scripting language |
JP2010173206A (ja) * | 2009-01-30 | 2010-08-12 | Riso Kagaku Corp | プリンタコントローラ |
JP2012109749A (ja) * | 2010-11-16 | 2012-06-07 | Konica Minolta Business Technologies Inc | 画像処理システム、画像処理サーバ、画像形成装置、画像処理方法及び画像処理プログラム |
US8705103B2 (en) | 2010-11-16 | 2014-04-22 | Konica Minolta Business Technologies, Inc. | Image processing system, image processing server, image forming apparatus, image processing method, and recording medium |
EP2453642A3 (en) * | 2010-11-16 | 2015-09-02 | Konica Minolta Business Technologies, Inc. | Image processing system, image processing server, image forming apparatus, image processing method, and recording medium |
JP2012076468A (ja) * | 2012-01-11 | 2012-04-19 | Canon Inc | 印刷装置、印刷方法、及びプログラム |
JP2020087376A (ja) * | 2018-11-30 | 2020-06-04 | 株式会社リコー | 情報処理装置、情報処理システム、および方法 |
JP7215118B2 (ja) | 2018-11-30 | 2023-01-31 | 株式会社リコー | 情報処理装置、情報処理システム、プログラムおよび方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4164467B2 (ja) | 画像処理装置、画像処理制御方法、及びプログラム | |
JP4738773B2 (ja) | 画像処理装置及びその制御方法 | |
JP2007164526A (ja) | 情報処理装置及び方法 | |
US11016782B2 (en) | Information processing apparatus, information processing method, and storage medium | |
JP5094627B2 (ja) | 情報処理装置、方法、制御プログラム | |
US20120281251A1 (en) | Method and system for configuring printer drivers for multiple printing devices | |
JP2006268467A (ja) | 画像処理装置 | |
US20150355871A1 (en) | Information processing apparatus, method for controlling information processing apparatus, and storage medium | |
JP2008059238A (ja) | 通信システム及びそれに使用するプリンタ | |
JP2007164480A (ja) | 印刷システム及び印刷方法 | |
JP5700938B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP4425808B2 (ja) | 印刷情報処理装置、印刷情報処理プログラム及び記録媒体 | |
JP2006215720A (ja) | 画像処理装置及びその制御方法 | |
JP2009043078A (ja) | シミュレータプログラム及び記録媒体 | |
JP2005352693A (ja) | 画像処理システム及び画像処理システムにおける分散処理方法 | |
JP2012208950A (ja) | 情報処理装置、方法、制御プログラム | |
JP2006072526A (ja) | 情報処理装置およびセットアッププログラム | |
JP2011108174A (ja) | データ処理装置、方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080603 |