(57)【要約】      （修正有）【課題】印刷コンピューティング・デバイスは、多機能印刷（ＭＦＰ）装置に接続してＭＦＰ装置によって提供されない付加機能性と付加能力をイネーブルする。【解決手段】システムにおいて、印刷コンピューティング・デバイス１０２は、ネットワークに接続してネットワーク内の外部のデバイスから印刷ジョブを受信する。印刷コンピューティング・デバイスは、印刷ジョブが適切に処理されるように規則に従って印刷ジョブを処理する。印刷コンピューティング・デバイスは、ＭＦＰ装置１０４によってサポートされない印刷ジョブがそれでも処理され得るようにＭＦＰ装置で利用できないファームウェアも含む。印刷コンピューティング・デバイスは、ＭＦＰ装置で利用できない機能を実行するために、着信印刷ジョブがＰＤＬの印刷ジョブかコマンドかどうか判定するエンジンも含む。【選択図】図１
2019149146.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された多機能印刷（ＭＦＰ）装置で外部のデバイスからの文書を印刷するための印刷コンピューティング・デバイスであって、
前記ネットワークを介して受信された印刷ジョブの予定を立てるための印刷ジョブマネージャーと、
前記印刷ジョブがページ記述言語（ＰＤＬ）の印刷ジョブを含むかどうか判定するためのエンジンと、
前記印刷ジョブマネージャーからの前記ＰＤＬの印刷ジョブを処理するためのＰＤＬインタープリターとグラフィックス・レンダリング・コンポーネントを含むラスター画像処理（ＲＩＰ）ファームウェアと、
前記処理されたＰＤＬの印刷ジョブを前記接続されたＭＦＰ装置にダウンロードするための通信レイヤと、
を備える印刷コンピューティング・デバイス。
【請求項２】
請求項１に記載の印刷コンピューティング・デバイスであって、さらに、
電源を備える印刷コンピューティング・デバイス。
【請求項３】
請求項２に記載の印刷コンピューティング・デバイスであって、さらに、
前記電源を前記ＭＦＰ装置に接続するためのコネクタを備える印刷コンピューティング・デバイス。
【請求項４】
請求項１乃至３のいずれか１項に記載の印刷コンピューティング・デバイスであって、さらに、
オペレーティングシステムを備える印刷コンピューティング・デバイス。
【請求項５】
請求項１乃至４のいずれか１項に記載の印刷コンピューティング・デバイスであって、
前記エンジンは、前記ＭＦＰ装置に対応する規則に従って前記ＰＤＬの印刷ジョブを遮断するように構成されている印刷コンピューティング・デバイス。
【請求項６】
請求項１乃至５のいずれか１項に記載の印刷コンピューティング・デバイスであって、
前記エンジンは、前記ＭＦＰ装置に対応する規則に従って前記ＰＤＬの印刷ジョブを前記通信レイヤにパススルーするように構成されている印刷コンピューティング・デバイス。
【請求項７】
請求項１乃至６のいずれか１項に記載の印刷コンピューティング・デバイスであって、さらに、
前記ＰＤＬの印刷ジョブを記憶するためのファイルのバッファを有するメモリを備える印刷コンピューティング・デバイス。
【請求項８】
多機能印刷（ＭＦＰ）装置のために、ネットワークを介して外部のデバイスに接続されている印刷コンピューティング・デバイスで印刷ジョブを処理するための方法であって、
前記外部のデバイスから受信された印刷ジョブがページ記述言語（ＰＤＬ）の印刷ジョブを含むかどうかエンジンを用いて判定する工程と、
前記印刷コンピューティング・デバイス内のラスター画像処理（ＲＩＰ）ファームウェアを用いて前記ＰＤＬの印刷ジョブを処理するかどうか判定する工程と、
前記ＲＩＰファームウェアを用いて前記ＰＤＬの印刷ジョブを処理する工程と、
前記ＭＦＰ装置へのダウンロードのために前記処理されたＰＤＬの印刷ジョブを通信レイヤに送信する工程と、
を備え、
前記処理されたＰＤＬの印刷ジョブは、前記ＭＦＰ装置による印刷の準備ができたフォーマットになっている方法。
【請求項９】
請求項８に記載の方法であって、
判定する工程は、前記ＰＤＬの印刷ジョブであるかどうかを判定するために前記印刷ジョブのヘッダを分析する工程を含む方法。
【請求項１０】
請求項８又は９に記載の方法であって、さらに、
前記ＭＦＰ装置に対応する規則に従って印刷コンピューティング・デバイス内の前記エンジンによって前記ＰＤＬの印刷ジョブを遮断する工程を備える方法。
【請求項１１】
請求項８乃至１０のいずれか１項に記載の方法であって、さらに、
前記ＰＤＬの印刷ジョブ向けの前記フォーマットを判定する工程を備え、
前記フォーマットは、前記ＭＦＰ装置によってサポートされている方法。
【請求項１２】
請求項８乃至１１のいずれか１項に記載の方法であって、
前記処理する工程は、前記ＰＤＬの印刷ジョブを前記ＭＦＰ装置によってサポートされるネイティブＰＤＬに翻訳する工程を含む方法。
【請求項１３】
請求項８乃至１２のいずれか１項に記載の方法であって、
前記処理する工程は、前記ＭＦＰ装置によってサポートされる画像フォーマットで前記処理されたＰＤＬの印刷ジョブを生成する工程を含む方法。
【請求項１４】
請求項８乃至１３のいずれか１項に記載の方法であって、
前記処理する工程は、前記ＭＦＰ装置によってサポートされるネイティブフォーマットで前記処理されたＰＤＬの印刷ジョブを生成する工程を含む方法。
【請求項１５】
請求項８乃至１４のいずれか１項に記載の方法であって、
前記処理する工程は、前記ＭＦＰ装置によってサポートされるサードパーティのＰＤＬに前記ＰＤＬの印刷ジョブを翻訳する工程を含む方法。
【請求項１６】
印刷ジョブを多機能印刷（ＭＦＰ）装置に送信するために、外部のデバイスを有するネットワーク内の前記ＭＦＰ装置と共に印刷コンピューティング・デバイスを使用するための方法であって、
前記印刷コンピューティング・デバイス内の印刷ジョブマネージャーで印刷ジョブを受信する工程と、
前記印刷ジョブマネージャーによって予定を立てられた場合には、エンジンを用いて前記印刷ジョブのヘッダを分析する工程と、
前記ヘッダに従って、前記印刷ジョブがＰＤＬの印刷ジョブを含むかどうかを判定する工程と、
前記ＭＦＰ装置に基づき前記エンジンによって前記ＰＤＬの印刷ジョブ向けのフォーマットを判定する工程と、
前記印刷コンピューティング・デバイス内のラスター画像処理（ＲＩＰ）ファームウェアを用いて前記フォーマットに従って前記ＰＤＬの印刷ジョブを処理する工程と、
前記印刷コンピューティング・デバイス内の通信レイヤを用いて前記ＭＦＰ装置に前記処理されたＰＤＬの印刷ジョブをダウンロードする工程と、
を備える方法。
【請求項１７】
請求項１６に記載の方法であって、さらに、
前記処理されたＰＤＬの印刷ジョブのために少なくとも一つの印刷ジョブパラメータを生成する工程を備える方法。
【請求項１８】
請求項１７に記載の方法であって、
前記少なくとも一つの印刷ジョブパラメータは、前記ＭＦＰ装置によって受信された場合には、前記ＰＤＬの印刷ジョブのＲＩＰファームウェア処理が完了していることを示す方法。
【請求項１９】
請求項１７又は１８に記載の方法であって、
前記少なくとも一つの印刷ジョブパラメータは、モードのジョブパラメータ又はジョブ識別のジョブパラメータを含む方法。
【請求項２０】
請求項１６乃至１９のいずれか１項に記載の方法であって、さらに、
前記エンジンによって指示された場合には、前記印刷ジョブを前記通信レイヤまで通過させる工程を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページ記述言語とラスター画像プロセッサシステムを有し、多機能印刷デバイスに接続して付加能力と付加機能性を提供する携帯型デバイスに関する。
【背景技術】
【０００２】
プリンタ及び関連設備はアップグレードのサイクルがゆっくりで古いプリンタエンジンを保持している。プリンタエンジンの初期費用が高いために、使用されていなくても事業所で古いプリンタエンジンが長期間維持される結果となっている。新しいプリンタエンジンやその他の機能に対する需要は少ない。さらに、ハードウェア及びソフトウェアの開発課題のために製品のリリース間隔が数か月にわたる場合がある。さらに、ファームウェアの問題の解決あるいはファームウェアのアップグレードを行う費用が高い場合がある。ハードウェアの交換あるいはソフトウェアのアップデートという点のみならず、技術者がこれらの活動を実行するために顧客を訪問する点も合わせてである。
【発明の概要】
【０００３】
ネットワークに接続された多機能印刷（ＭＦＰ）装置で外部のデバイスからの文書を印刷するための印刷コンピューティング・デバイスを開示する。前記印刷コンピューティング・デバイスは、前記ネットワークを介して受信された印刷ジョブの予定を立てるための印刷ジョブマネージャーを含む。前記印刷コンピューティング・デバイスは、前記印刷ジョブがページ記述言語（ＰＤＬ）の印刷ジョブであるかどうか判定するためのエンジンも含む。前記印刷コンピューティング・デバイスは、前記印刷ジョブマネージャーからの前記ＰＤＬの印刷ジョブを処理するためのラスター画像処理（ＲＩＰ）ファームウェアも含む。前記ＲＩＰファームウェアは、ＰＤＬインタープリターとグラフィックス・レンダリング・コンポーネントを含む。前記印刷コンピューティング・デバイスは、前記処理されたＰＤＬの印刷ジョブを前記接続されたＭＦＰ装置にダウンロードするための通信レイヤも含む。
【０００４】
ＭＦＰ装置のために、印刷コンピューティング・デバイスで印刷ジョブを処理するための方法を開示する。前記印刷コンピューティング・デバイスはネットワークを介して外部のデバイスに接続されている。前記方法は、前記外部のデバイスから受信された印刷ジョブがＰＤＬの印刷ジョブであるかどうかエンジンを用いて判定する工程を含む。前記方法は、前記印刷コンピューティング・デバイス内のラスター画像処理（ＲＩＰ）ファームウェアを用いて前記ＰＤＬの印刷ジョブを処理するかどうか判定する工程も含む。前記方法は、前記ＲＩＰファームウェアを用いて前記ＰＤＬの印刷ジョブを処理する工程も含む。前記方法は、前記ＭＦＰ装置へのダウンロードのために前記処理されたＰＤＬの印刷ジョブを通信レイヤに送信する工程も含む。前記処理されたＰＤＬの印刷ジョブは前記ＭＦＰ装置による印刷の準備ができたフォーマットになっている。
【０００５】
ＭＦＰ装置に印刷ジョブを送信するために、外部のデバイスを有するネットワーク内の前記ＭＦＰ装置と共に印刷コンピューティング・デバイスを使用するための方法を開示する。前記方法は、前記印刷コンピューティング・デバイス内の印刷ジョブマネージャーで印刷ジョブを受信する工程を含む。前記方法は、前記印刷ジョブマネージャーによって予定を立てられた場合には、エンジンを用いて前記印刷ジョブのヘッダを分析する工程も含む。前記方法は、前記ヘッダに従って前記印刷ジョブがＰＤＬの印刷ジョブであるかどうか判定する工程も含む。前記方法は、前記ＭＦＰ装置に基づき前記エンジンによって前記ＰＤＬの印刷ジョブ向けのフォーマットを判定する工程も含む。前記方法は、前記印刷コンピューティング・デバイスのＲＩＰファームウェアを用いて前記フォーマットに従って前記ＰＤＬの印刷ジョブを処理する工程も含む。前記方法は、前記印刷コンピューティング・デバイス内の通信レイヤを用いて前記ＭＦＰ装置に前記処理されたＰＤＬの印刷ジョブをダウンロードする工程も含む。
【図面の簡単な説明】
【０００６】
本発明の他の様々な機能及び付随する利点は、添付図面と併せて考慮するとより十分に理解されるであろう。
【図１】本開示の実施形態に係る印刷コンピューティング・デバイスを使用して印刷動作を実行するためのシステムのブロック図を示す。
【図２】本開示の実施形態に係る印刷コンピューティング・デバイスと併せて使用されるＭＦＰのコンポーネントのブロック図を示す。
【図３】本開示の実施形態に係る印刷コンピューティング・デバイス用のコンポーネントのブロック図を示す。
【図４】本開示の実施形態に係るモバイル・アプリケーション・システム・サービスとともに使用するためのコンポーネントのブロック図を示す。
【図５】本開示の実施形態に係るＭＦＰに接続された場合の印刷コンピューティング・デバイスを構成するためのフローチャートを示す。
【図６】本開示の実施形態に係る印刷コンピューティング・デバイスを使用して印刷ジョブ及びｐｒｉｎｔｃａｓｔコマンドを処理するためのフローチャートを示す。
【図７】本開示の実施形態に係る印刷コンピューティング・デバイスを用いてＭＦＰで印刷ジョブを処理するためのフローチャートを示す。
【図８】本開示の実施形態に係る印刷コンピューティング・デバイスにおいてＰＤＬの印刷ジョブを処理するためのフローチャートを示す。
【図９】本開示の実施形態に係る印刷コンピューティング・デバイスを使用してＰＤＬの印刷ジョブをネイティブＰＤＬに翻訳するためのフローチャートを示す。
【図１０】本開示の実施形態に係る印刷コンピューティング・デバイスを使用して印刷ジョブから、サポートされる画像フォーマットでラスター画像を生成するためのフローチャートを示す。
【図１１】本開示の実施形態に係る印刷コンピューティング・デバイスを使用してネイティブフォーマットの印刷ジョブを生成するためのフローチャートを示す。
【図１２】本開示の実施形態に係る印刷コンピューティング・デバイスを使用してサードパーティのＰＤＬに印刷ジョブを翻訳するためのフローチャートを示す。
【０００７】
本発明の具体的な実施形態について詳細に説明する。これらの実施形態の例は添付図面に示されている。本発明について十分な理解が得られるように具体的な詳細を数多く記載する。実施形態は図面と併用して説明するが、以下の説明は本発明をいずれか一つの実施形態に限定することを意図していないことは理解されよう。逆に、以下の説明は、添付の請求項の主旨と範囲内に含まれ得る代替、変更、及び同意義を含めることを意図するものである。本発明ついて十分な理解が得られるように具体的な詳細を数多く記載する。
【０００８】
本開示の実施形態は、ページ記述言語（ＰＤＬ）システム及びラスター画像プロセッサ（ＲＩＰ）システムを有する印刷コンピューティング・デバイスを含む。印刷コンピューティング・デバイスはコンピュータ処理装置、メモリ、及びオペレーティングシステムを備える外部コンピューティング・デバイスであり得る。印刷コンピューティング・デバイスは、既存のプリンタ装置に接続するための接続インターフェースも含む。また、印刷コンピューティング・デバイスは、別のプリンタ装置としてネットワーク上で自身を公表するネットワーク能力も履行する。
【０００９】
印刷コンピューティング・デバイスという用語は、ＭＦＰ又は他の任意の装置に装着された、下記に開示された機能を有する携帯型デバイスを指してもよい。「ｐｒｉｎｔｃａｓｔ」という用語は、また、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス又はｐｒｉｎｔｃａｓｔコンピューティング・デバイス等の印刷コンピューティング・デバイスを指すために本明細書内使用してもよい。印刷コンピューティング・デバイスは、携帯型印刷コンピューティング・デバイス又は携帯型印刷コンピューティング・システム等の携帯型デバイスとしても知られているであろう。
【００１０】
開示されたｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、プリンタ装置との接続インターフェース及び新しいＰＤＬ技術をサポートする。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、また、エンジンファームウェアのアップグレード又はメンテナンスを行うために、ファームウェア・アップグレードをサーバから受信する。接続されたとき、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、プリンタ装置でサポートされるネイティブＰＤＬを検知し、そのＰＤＬに対するパススルーを提供する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、サポートされていないＰＤＬを、ネイティブＰＤＬ、又はプリンタエンジンによりサポートされているＪＰＥＧ／ＴＩＦＦのような基本的なラスターフォーマットに翻訳することができる。この機能により、すべてのプリンタ（他の製造会社のプリンタでも）との互換性が可能になる。
【００１１】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、また、デバイスのＰＤＬのＲＩＰファームウェアがより「最新版」で、プリンタエンジンに欠けている新しい機能を含む場合エンジンファームウェアコンポーネントに優先してもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、また、ファームウェア・アップグレードがエンジンに対して最終のファームウェア・アップグレードとしてインストールされる前にファームウェア・アップグレードをテストするのにも役立つ。ダムプリンタは、ＲＩＰ機能がプリンタの外部に存在して動作するようにＲＩＰオーバーライド機能付きで開発されてもよい。また、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、プリンタエンジンに出力するために、モバイル・アプリケーション、ウェブアプリケーション、あるいはデスクトップデバイスから画像若しくはデータを受信する画像アプリケーションをホストしてもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、デバイスの管理容易性のために企業のプリンタ管理ツールに登録してもよい。
【発明を実施するための形態】
【００１２】
既存のプリンタドライバ及びそれに関連付けられた印刷キューは、通常どおり、依然として利用可能であろう。換言すると、ユーザがプリンタドライバに関連付けられた印刷キューを選択する場合、ユーザは、印刷キュー向け古いプリンタエンジンとプリンタドライバが提供するものと同じプリンタ機能と能力を持つことになる。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス向けの対応するプリンタドライバを有する印刷キューは、古い又はサードパーティのプリンタ装置に新しい機能と能力が追加されることを可能とするためのプリンタ装置のように見えるであろう。ユーザが印刷ジョブに対する宛先としてｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスの印刷キューを選択する場合、プリンタエンジンに必ずしも存在しないあるいはサポートされていないがｐｒｉｎｔｃａｓｔコンピューティング・デバイスによってサポートされている新しい機能は、ユーザにとって利用可能となるであろう。ユーザは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスがプリンタエンジンを用いて実行、印刷できる新しいプリンタ機能にアクセスできる。
【００１３】
別の実施形態において、通常、ＭＦＰ又はプリンタ用に構成されているプリンタポートを有する印刷キュー又はプリンタドライバは、その代わりに、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス用のプリンタポートを有するように構成されてもよい。本開示の実施形態がプリンタドライバからｐｒｉｎｔｃａｓｔデバイスまでの印刷をサポートすることを確保するのは技術的正確性のためである。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるプリンタポート等、プリンタポートは、ポートモニタによって管理されてプリンタドライバ又は印刷キューとプリンタ間の接続としての機能を果たす。プリンタポートは、また、プリンタドライバ又は印刷キューとｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスとの間の接続手段でもあり得る。この構成では、プリンタドライバは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスのＩＰアドレスとして構成されたポートを介して、プリンタドライバが生成した印刷ジョブをネットワークに接続されたｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスに送信する。本構成において、ユーザはプリンタドライバの機能を利用することができると同時に、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスの機能を適用し利用することができるであろう。この機能は任意のプリンタドライバをネットワークに接続されたｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスに向けることができ、さらに関連付けることができることも意味する。
【００１４】
定義
ＭＦＰ―多機能（若しくは機能的）プリンタ及び印刷デバイス．
ＰＤＬ―ページ記述言語、印刷ジョブにおける文書及びページを記述するプログラミング言語の種類。ＰＤＬの例としては、プリンタ・コマンド言語（ＰＣＬ）５、ＰＣＬＸＬ、又はＰＣＬ６、及びポストスクリプトがある。ポータブル・ドキュメント・フォーマット（ＰＤＦ）及びＸＭＬペーパー仕様（ＸＰＳ）もまたこのグループに属する。ＪＰＧ及びＴＩＦＦ等の画像フォーマットは、印刷も可能であるが、ＰＤＬによって取り扱われる特殊なケースである。
ＲＩＰ―ラスター画像プロセッサ、ＰＤＬインタープリターを含むファームウェアコンポーネント。この機能は以下において詳細に開示する。
印刷ファイル、印刷ジョブ、及びテストファイルーＰＤＬコマンドを含むコンピュータファイルでＭＦＰに対する未処理の印刷可能データである。印刷ジョブはプリンタドライバの出力である。ＰＣＬ、ＰＤＦ、又はＸＰＳ等のＰＤＬフォーマットの一つの２進表現である。
グラフィックス・レンダリング・コンポーネント―ＰＤＬコマンド及びデータをＭＦＰエンジンが理解できるバイナリデータに変換するＲＩＰファームウェアの内部コンポーネント。これは、コンピューティング・デバイスが理解できるようにプログラミング言語が翻訳される機械語と同様である。バイナリデータはグラフィックス・レンダリング・レベルがハードウェアによって理解されて用紙上で実際の図あるいはピクセルに変換されるものである。このコンポーネントは以下で詳細に開示する。
ＧＥＵ―グラフィックス・実行ユニット、グラフィックス・レンダリング・コンポーネントにより生成されるオーダーリストを実行して印刷ジョブ又は文書のラスター表現を作成するエンジンにあるハードウェアコンポーネント。
プリンタドライバ―文書を印刷ジョブに変換するＷｉｎｄｏｗｓ（商標）又は他のオペレーティングシステムのデバイスドライバ。
グラフィックス・オーダーリスト―ＰＤＬコマンドがグラフィック・レンダリング・コンポーネントにより変換されるバイナリデータ表現。グラフィックス・オーダーリストは、ＭＦＰのハードウェアがページ上で実際のマーキングに変換するために理解し処理する下位レベルのグラフィックス指示である。コンピュータの機械語のように、グラフィックス・オーダーリストはＭＦＰが理解する言語である。
バンドデータ―グラフィックス・オーダーリストの処理の結果のバイナリデータの行。ページのピックスマップすなわちビットマップ画像表現のように見える。ページはバンドデータの行から成る。各行の大きさは、１２８バイト等同じであってもよい。実施形態によっては、各バンドの高さはダイナミックである。幅は、レンダリングされるページの幅であってもよい。
ダムプリンタ―ＲＩＰファームウェアを持たないプリンタエンジンという考えである。ラスター画像処理はプリンタの外部で行われる。プリンタは、プリンタエンジンが用紙上で実際のマーキングに対して処理ができるグラフィックス・オーダーリスト形式及びラスター形式（バンドデータ）のいずれかで完全にレンダリングされたページを受信する。
【００１５】
本開示の実施形態は、古い又はサードパーティのＭＦＰに対して新しいＰＤＬ技術を付加してもよい。この機能は、プリンタエンジン又はＭＦＰを記憶装置又はトラッシュの中に配置することとは対照的に古いプリンタエンジンの寿命を延長することができる。古いプリンタを除去することをためらい保持する会社が多い。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは会社が古いプリンタを保持して使用することを可能とする。本開示の実施形態は、ｐｒｉｎｔｃａｓｔ印刷デバイスを通して管理されるデバイスの一部としてサードパーティのＭＦＰの使用も可能とする。
【００１６】
本開示のｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスは、最新のＲＩＰファームウェアを使用して、古い、又は能力が低いＲＩＰファームウェアをオーバーライドすることも可能にしてもよい。この機能は、プリンタＲＩＰファームウェアを置き換え又はオーバーライドしてダムプリンタを使用又は構成することができる完全なＲＩＰファームウェアの機能性を提供する。本開示のデバイスは、エンジンハードウェアコンポーネントよりも良い性能も提供する。その理由は、携帯型コンピューティング・デバイスは最新のＣＰＵ、より大きなメモリ容量、及びアップグレードされたグラフィックス・プロセッシング・ユニット等のその他のコンポーネントを有するからである。本開示のデバイスは、通常のプリンタ（非ＭＦＰ）にモバイル・アプリケーションの「スキャンから印刷まで」の能力のような新しい能力を付加し得る。エンジンは、プリンタにおけるハードウェアやソフトウェアのアップグレードとは対照的に情報技術のツールによって管理することができる。
【００１７】
本開示のデバイスに具現化されたｐｒｉｎｔｃａｓｔ印刷技術は、プリンタ及びＭＦＰのユーザに対するいくつかの状況や問題を避けることができる。例えば、ＭＦＰ若しくはプリンタのエンジンが、使われなくなったファームウェア、ハードウェアのバグを含む場合にエンジンの問題が回避されるであろう、あるいは本明細書で開示されたｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスによって印刷することによって性能の問題が回避されるであろう。ファームウェアのアップグレード行う必要がある場合、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスのオペレーティングシステム又はアプリケーションは、ＩＴ企業のサーバに問い合わせる、または通知を受信することができる。そして、ファームウェアをダウンロードして新しいファームウェアでエンジンを更新することができる。この機能により、会社は、現場に技術者を派遣する費用を節約することができる。
【００１８】
会社の環境が古い又はサードパーティのエンジンを有するのみの場合、本開示の印刷デバイスは、特にユーザが新しいＰＤＬフォーマットの一つで印刷を望む場合に、新しいＰＤＬやファイルフォーマットを翻訳して後方互換性のある印刷ジョブを古い及びサードパーティのエンジンにダウンロードすることができる。古くて能力が低いプリンタは、当該印刷デバイスが提供できる新しい技術によって付加用途を有することになるであろう。エンジンのファームウェアやハードウェアは古くなりあるいは使われなくなる。より良いハードウェアやファームウェアコンポーネントが開発される。一定の期間が過ぎると、古いプリンタやシステムはサポートさえされなくなる。新しいネットワーク及び印刷のソフトウェア技術はプリンタのファームウェアやハードウェアの開発速度よりも早く開発される。企業は、新しい技術を適用するために古いエンジンをめったにアップグレードしない。例えば、古いプリンタのエンジンは最新の印刷プラットフォームやプロトコルをサポートし得ない。本開示の印刷デバイスを使用することによって、大幅なアップグレードの必要なく古い又はサードパーティのエンジンを利用できるであろう。
【００１９】
アップグレードはｐｒｉｎｔｃａｓｔデバイスを介して提供されるので、ユーザに対してより安い代替手段が提供される。本開示の実施形態は、新しいＭＦＰのエンジンのハードウェアより費用を少なくすることができる。企業の管理ツールによって、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスに提供される技術と類似の能力及び機能を有する共通のデバイスのセットの一環として古い及びサードパーティのＭＦＰさえも管理することが可能になるであろう。当該デバイスのアプリケーションをｗｉｆｉ及びネットワークの能力でホストすることによって、エンジンのファームウェアにそれらの機能を付加する必要なく、エンジンに対するクラウドのサポートを有効にすることが可能である。
【００２０】
図１は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を用いて印刷動作を実行するためのシステム１００のブロック図を示す。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、「ｐｒｉｎｔｃａｓｔデバイス」、又は「デバイス」とも呼ばれる。システム１００は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２をＭＦＰ１０４と併せて使用する方法を示すためのネットワーク・アーキテクチャの例であり得る。図で示されるように、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２はＭＦＰ１０４に装着可能な別個のコンポーネントである。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＵＳＢポートをＭＦＰ１０４に連結するＵＳＢデバイスでもよい。
【００２１】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、また、ネットワーク１０８に接続してモバイルデバイス１１０、コンピュータ１１２、及びサーバ１１４等のシステム１００内の他のコンポーネントと通信する。理解できるように、システム１００はＭＦＰ１０４にタスクを送信する多くの付加コンポーネントを含んでもよい。モバイルデバイス１１０は、ＭＦＰ１０４によって処理するためのファイルを送信するスマートフォン等のハンドヘルドすなわち携帯型のコンピューティング・デバイスであってもよい。例えば、モバイルデバイス１１０はＭＦＰ１０４で印刷される画像を送信してもよい。コンピュータ１１２は、同様にＭＦＰ１０４を利用するためにネットワーク１０８に接続されるデスクトップ又はラップトップコンピュータであってもよい。サーバ１１４はＭＦＰ１０４にアップグレードを提供するデータ記憶装置であってもよい。これらのアップグレードは、ソフトウェアのアップグレード及びＭＦＰ１０４のソフトウェア又はファームウェアコンポーネントのためのパッチであってもよい。サーバ１１４は、また、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２と通信してもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２とＭＦＰ１０４は記憶のためにサーバ１１４に情報を送信してもよい。モバイルデバイス１１０、コンピュータ１１２、及びサーバ１１４は、印刷及びスキャン動作を実行するために内部でアプリケーションを実行してもよい。クラウドストレージ１１６はインターネット又はクラウドベースの記憶場所であってもよい。
【００２２】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＭＦＰ１０４のエンジン１０６に直接接続する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、エンジン１０６及びＭＦＰ１０４のユーザで利用可能である新しいＰＤＬ及びモバイル・アプリケーション等の新しい技術のすべてを提供する。上で述べたように、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＭＦＰ１０４に装着される別個のコンピューティング・デバイスであってもよい。ネットワークに接続されるコンピューティング・デバイスとして、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、また、協調するデバイスのクラスター・フリートとして組織化されて、古い及び第３者のエンジンに対するサポートを含めて、ネットワーク１０８全体にわたって新しい技術を利用できるようにしてもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、遠隔処理のため、ｐｒｉｎｔｃａｓｔデバイス１０２Ｘ及び１０２Ｙ、及びＭＦＰ１２０等のプリンタ等の他のｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスから印刷ジョブ部分を受信してもよい。この機能は多忙なプリンタエンジン及び多忙な携帯型印刷デバイスの助けとなる。
【００２３】
このシナリオにおいて、既存のプリンタは、多くのユーザからネットワーク１０８を介して継続して印刷ジョブを受信することができる。多くのユーザが同じ印刷デバイスにタスクを送信することができるので、それが印刷に対するボトルネックとなる。接続されたｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は非常に多忙であるので、接続されているプリンタエンジン１０６にジョブを即座に送信することができないであろう。実施形態によっては、遠隔処理向けに一以上のｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイスにジョブを送信することが可能である。当該ジョブは元の印刷デバイスに戻される。当該印刷ジョブは事前に処理されるかあるいは事前にレンダリングされるかもしれない。ユーザはプリントアウトを受信するために長く待つ必要はないであろう。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は複雑な印刷ジョブを分割して他の携帯型印刷コンピューティング・デバイスに分散する能力を備える。
【００２４】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、外部ではあるが携帯型のソフトウェア、ファームウェア、及びデバイスとして様々な接続機能をサポートする。接続機能には、これに限定されないが、ｗｉｆｉ、ローカルエリア・ネットワーク、ＮＦＣ、パラレルポート、シリアルポート、ＵＳＢプリンタポート、ＵＳＢデータポート、ブルートゥース（登録商標）、インターネット等が挙げられる。さらなるプリンタ、コンピュータへの接続機能が、有線及び無線の両方で、追加され、統合され、サポートされ得る。
【００２５】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２の入力データは、接続部１２２から受信でき、接続部１２２は無線であってもよい。例えば、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２がＵＳＢコンピューティング・デバイスである場合、データは、ネットワーク１０８に接続された無線又は有線の接続部１２２を通して来てもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２がモバイルコンピュータである場合は、データは、無線又は有線の接続部１２２を介して接続されている入力ポートを通して来てもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、また、自身の様々な接続ポートを介して出力データを生成する。接続ポートは、ＵＳＢデータポート、ＵＳＢプリンタポート、ｗｉｆｉ、ＮＦＣ、ブルートゥース（登録商標）、ＴＣＰ／ＩＰ等であってもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＭＦＰ１０４のあらゆる入力ポートに接続してもよいし、また有線、無線、又は直接接続を含んでもよい。
【００２６】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＵＳＢコンピューティング・デバイス、ＨＤＭＩ（登録商標）コンピューティング・デバイス、ブラックベリーＰｉ（登録商標）デバイス、パーソナルコンピュータ、モバイル若しくはスマートフォンデバイス、タブレット、ミニパーソナルコンピュータ等であってもよい。実施形態によっては、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２をＭＦＰ１０４内部で統合することが可能であるかもしれない、なぜならば、ｐｒｉｎｔｃａｓｔデバイスはソフトウェア又はハードウェアで全体的に実行できる機能を含むからである。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＭＦＰファームウェアコンポーネントあるいはフラッシュメモリ領域に存在しホストされるアプリケーションであってもよい。局所的にホストされるアプリケーション又はファームウェアコンポーネントの挙動は、アップグレード可能で下記に開示する機能を提供する限り、下記に開示されるｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２のように機能することが可能である。開示された実施形態が提供することを意図している能力は、ＭＦＰ１０４のようなあらゆる画像装置又はプリンタエンジンに、有線又は無線のいずれかによって、接続可能なあらゆるコンピューティング・デバイスですべて実行可能である。
【００２７】
ＭＦＰ１０４のアーキテクチャの例を図２に示す。図２に示すアーキテクチャは、文書をスキャンして印刷、記憶、複写等の他の機能を実行するあらゆる多機能プリンタ又は画像形成装置に適用することができる。図示されているように、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、エンジン１０６に接続され、エンジン１０６は次にＭＦＰ１０４の他のコンポーネントに接続される。
【００２８】
ＭＦＰ１０４は、これらの機能をサポートするための動作を実行するコンピューティング・プラットフォーム２０１を含む。コンピューティング・プラットフォーム２０１は、コンピュータ処理装置（ＣＰＵ）２０２、画像形成部２０４、メモリ部２０６、及びネットワーク通信インターフェース２１０を含む。他のコンポーネントも含まれる場合があるが簡略化のために示されていない。ＭＦＰ１０４は、コンピューティング・プラットフォーム２０１を用いて、スキャン、複写、印刷、ファクシミリの送受信、あるいは文書処理等の様々な動作を実行するように構成することが可能である。そのため、ＭＦＰ１０４は、スキャナ、並びに複写機、ファクシミリ装置、及びプリンタの一以上の機能を含む印刷デバイス又は多機能周辺装置である場合がある。これらの機能を提供するために、ＭＦＰ１０４は、印刷動作を実行するプリンタコンポーネント２２０、複写動作を実行する複写コンポーネント２２２、スキャナ動作を実行するスキャナコンポーネント２２４、及びファクシミリ文書を送受信するファクシミリコンポーネント２２６を含む。ＣＰＵ２０２は、所望の動作を実行するためにこれらのコンポーネントに指示を出すことができる。
【００２９】
ＭＦＰ１０４は、また、フィニッシャ２１１及び一以上の給紙カセット２１２を含む。フィニッシャ２１１は回転可能な下流側のローラを含み、所望の動作後、表面に画像が形成された用紙をトレイに移動させる。フィニッシャ２１１は、また、仕上がった用紙のソーティング、ステイプルでの用紙綴じ、両面印刷、折り目付け、穴あけ、折り畳み等の付加動作を実行する場合がある。給紙カセット２１２は、用紙に画像が形成された表面を生成するために様々なコンポーネント２２０、２２２、２２４及び２２６の画像を形成するための用紙を供給する。給紙カセット２１２は、様々な大きさ、色、組成等を有する用紙を含む場合がある。給紙カセット２１２は必要に応じて、補充のために取り出すことができる。
【００３０】
文書プロセッサ入力給紙トレイ２３０は、処理される用紙及び文書を受け取るＭＦＰ１０４の物理的コンポーネントであってもよい。文書は、文書をＭＦＰ１０４内の他のコンポーネントに移動させる文書プロセッサ入力給紙トレイ２３０の上若しくは中に置かれる。文書プロセッサ入力給紙トレイ２３０からの文書の動きはユーザが入力した指示によって制御できる。例えば、文書はスキャン動作のためにスキャナのフラットベッドに動かすことができる。これにより、文書プロセッサ入力給紙トレイ２３０はスキャナコンポーネント２２４に文書を供給する。図２に示すように、文書プロセッサ入力給紙トレイ２３０はエンジン１０６と相互作用して所望の動作を実行することができる。
【００３１】
メモリ部２０６は指示２１５を記憶するためのメモリ記憶場所２１４を含む。指示２１５は、ＣＰＵ２０２及びコンポーネント２２０、２２２、２２４又は２２６内のあらゆるプロセッサ等、ＭＦＰ１０４に関連付けられている他のプロセッサで実行可能である。メモリ部２０６は、また、ＭＦＰ１０４に特有のデータと共に、様々なプログラム及びアプリケーションに関する情報を記憶することができる。例えば、メモリ記憶場所２１４は、ＭＦＰ１０４内のコンポーネントをサポートするために、コンピューティング・プラットフォーム２０１により実行されるオペレーティングシステムを動作させるためのデータを含む場合がある。
【００３２】
メモリ部２０６は揮発性及び非揮発性メモリで構成することができる。揮発性メモリはランダム・アクセス・メモリ（ＲＡＭ）を含んでもよい。非揮発性メモリの例としては、読み出し専用メモリ（ＲＯＭ），フラッシュメモリ，電気的消去・プログラム可能型読み出し専用メモリ（ＥＥＰＲＯＭ），デジタルテープ、ハードディスクドライブ（ＨＤＤ），あるいはソリッド・ステート・ドライブ（ＳＳＤ）を挙げることができる。メモリ部２０６は、また、他の可能性があるメモリデバイスと共に、読み込み可能又は書き込み可能な揮発性メモリ及び非揮発性メモリのあらゆる組み合わせを含む。
【００３３】
コンピューティング・プラットフォーム２０１は、ＣＰＵ２０２等の一以上のプロセッサをホストすることが可能である。これらのプロセッサは一以上のメモリ記憶場所２１４に記憶された指示２１５を実行することができる。これらの指示を実行することにより、プロセッサはＭＦＰ１０４に様々な動作を実行させる。プロセッサは、また、特定用途向け集積回路（ＡＳＩＣｓ）及びフィールド・プログラマブル・ゲートアレイ（ＦＰＧＡｓ）等の特定用途向けのプロセシングユニットを内蔵する場合がある。コンポーネント２２０、２２２、２２４、及び２２６に特有の動作を実行するためにその他のプロセッサが含まれる場合がある。換言すると、特定のプロセッサは、ＭＦＰ１０４にプリンタ、複写機、スキャナ、及びファクシミリ装置として動作させる。
【００３４】
ＭＦＰ１０４は、また、コンピューティング・プラットフォーム２０１に接続可能な操作パネル２０８を含む。操作パネル２０８は、ＭＦＰ１０４にコマンドを与えるために表示部２１６とユーザとの対話を促進するための入力部２１７を含む。表示部２１６は液晶ディスプレイ（ＬＣＤ）等のあらゆる電子映像表示部であってもよい。入力部２１７は、ボタン、タッチスクリーン、キーボード若しくはキーパッド、スイッチ、ダイアル等の、ユーザが操作パネル２０８に情報を入力できるデバイスのあらゆる組み合わせを含み得る。入力部２１７は、タッチを検知してユーザからの入力を受け付ける、表示部２１６に重なって表示されるタッチスクリーン・デジタイザを含んでいることが好ましい。この方法により、ユーザは表示部２１６と対話する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、操作パネル２０８を介してエンジン１０６に接続することができる。
【００３５】
ＭＦＰ１０４は、また、ネットワーク通信処理部２１８を含む。ネットワーク通信処理部２１８は、画像形成システムの一以上の他の画像形成装置及びサーバとの無線又は有線接続等のネットワーク通信を確立することができる。ＣＰＵ２０２は、ネットワーク通信処理部２１８に、ネットワーク通信インターフェース２１０を用いてネットワークを介して情報を送信又は取得するよう指示することができる。データはネットワークを介してコンピューティング・プラットフォーム２０１で受信されるので、ネットワーク通信処理部２１８は着信パケットを復号化してそれをＣＰＵ２０２に配信する。ＣＰＵ２０２は、それに応じて動作し、ＭＦＰ１０４で動作を生じさせる。ＣＰＵ２０２は、また、ＭＦＰ１０４に関する設定等、メモリ部２０６に記憶されている情報を取得することができる。
【００３６】
ＭＦＰ１０４は、また、エンジン１０６を含む。エンジン１０６は、タスクを遂行するために適切に動作するハードウェア、ファームウェア又はソフトウェアコンポーネントの組み合わせであってもよい。例えば、エンジン１０６は、文書を印刷するためのコンポーネントとソフトウェアから成る。エンジン１０６は、ユーザが操作パネル２０８を介して入力した後でコンピューティング・プラットフォーム２０１から指示を受信してもよい。代替案として、エンジン１０６は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２から指示を受信してもよい。
【００３７】
エンジン１０６は、用紙へトナーを配置するハードウェアコンポーネント等のＭＦＰエンジンの下位機構を管理し動作させる。エンジン１０６は、ハーフトナー、トナーカートリッジ、ローラ、スケジューラ、記憶装置、入力／出力動作等を管理し調整してもよい。ページ記述言語（ＰＤＬｓ）を解釈するラスター画像プロセッサ（ＲＩＰ）ファームウェアは、画像の実際のレンダリング及びＭＦＰ１０４での動作中に用紙へのトナーの塗布のために下位のエンジン１０６に対して指示を送信する。
【００３８】
図３は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２用のコンポーネントのブロック図を示す。付加コンポーネントがｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内に実装されてもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、デバイスが印刷ジョブを管理し、ＭＦＰ１０４及びエンジン１０６と相互作用することを可能にする機能性を提供するｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００を含む。実施形態によっては，ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、ｐｒｉｎｔｃａｓｔシステム３００と呼ばれる場合がある。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００については下記で詳細に開示する。
【００３９】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、デバイスがコンピューティング・デバイスとして単独で動作することを可能にしうる、プロセッサ３０２及びメモリ３０４等のコンポーネントも含む。プロセッサ３０２は、指示やコマンドを実行する。プロセッサ３０２は、他のコンポーネントに動作を実行するように指示もする。メモリ３０４は、プロセッサ３０２により実行される指示を記憶することができる。メモリ３０４は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内のコンポーネントが使用するためのデータ及び情報を記憶してもよい。プロセッサ３０２とメモリ３０４はバス３９０によって接続することができる。
【００４０】
バス３９０は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２の他のコンポーネントもプロセッサ３０２及びメモリ３０４に接続する。オペレーティングシステム３０６が提供される。オペレーティングシステム３０６は、他のプログラムがｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２上で動作するソフトウェアプラットフォームを提供するモバイル・オペレーティングシステムであってもよい。オペレーティングシステム３０６は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で利用可能な機能と特性を決定することに関与する。例えば、オペレーティングシステム３０６は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００がｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内で動作することを可能にする。
【００４１】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は電源３０８を含むことができる。実施形態によっては、電源３０８は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２が別の電源から電力を引き出す必要がないように、独立していてもよい。実施形態によっては、電源３０８は、ＭＦＰ１０４等の接続されたデバイスから電力を得てもよい。電源３０８は、電力を引き出すために一以上のコネクタ３１０を使用してもよい。例えば、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２がＵＳＢハブ若しくはポートに接続されている場合、コネクタ３１０は、ＭＦＰ１０４内の電力に接続するためにＵＳＢインターフェース内の２本の線であってもよい。
【００４２】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、また、接続されているＭＦＰ１０４に対してだけでなくネットワーク１０８を介してデータを送受してもよい。入力部３１２と出力部３１４は、無線接続部１２２を介して等、データをやりとりする能力を表す。入力部３１２と出力部３１４は、また、妥当な場合、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２からＭＦＰ１０４までＵＳＢケーブルによる線を有してもよい。出力部３１４が複数の出力ポートを含むことができると同時に入力部３１２も複数の入力ポートを含むことができる。入力部３１２と出力部３１４は、ネットワーク１０８から受信したときのデータを提供するだけでなくｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００からコマンドとデータを受信することもできる。
【００４３】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００がネットワーク１０８との接続をサポートすることを可能とし、またＭＦＰ１０４とエンジン１０６を管理するための詳細に開示された機能を提供することを可能とするコンポーネントを含む。これらのコンポーネントを図３に示す。
【００４４】
印刷ジョブマネージャー３２０は、ネットワーク１０８又はサポートされる接続方法のいずれかから印刷ジョブを受信するファームウェアコンポーネントである。印刷ジョブマネージャー３２０は、また、他のｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２から印刷ジョブを受信することができる。印刷ジョブマネージャー３２０は、着信データを独自の印刷ジョブに整える。印刷ジョブマネージャー３２０は、ジョブスケジューリング、文書追跡の目的、及びジョブ管理目的のためにジョブ識別（ＩＤ）、タイムスタンプ、ユーザ／所有者ＩＤ、及び同様なデータによって各印刷ジョブを特定することができる。これらのタスクを完了した後、印刷ジョブマネージャー３２０は、ＭＦＰ１０４への印刷ジョブの送信予定を立て、ＲＩＰファームウェア３２２にその予定を伝える。
【００４５】
ＲＩＰファームウェア３２２は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００に機能性を提供する完全なラスター画像プロセッサである。ＲＩＰファームウェア３２２は、用紙上での実際のレンダリングを除いて、プリンタエンジンのＲＩＰファームウェアのすべての能力を提供してもよい。レンダリングはＭＦＰ１０４のエンジン１０６によって行われてもよい。ＲＩＰファームウェア３２２は、以下のサブコンポーネント、ＰＤＬインタープリター３３０及びグラフィックス・レンダリング・コンポーネント３３２を含む。これらについては下記で詳細に開示する。
【００４６】
ＰＤＬインタープリター３３０は、印刷ジョブマネージャー３２０により管理される印刷ジョブの構文解析及び処理を実行する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００及びｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によりサポートされているページ記述言語は、既にインストールされ、エンジン１０６のファームウェアによりポートされているＰＤＬインタープリターのより新しいバージョンすなわちより最新のバージョンであるページ記述言語である。ＰＤＬインタープリター３３０は、また、エンジン１０６用にインストールされたものとは全く異なる、新しい、そしてサポートされていないＰＤＬインタープリターである場合がある。この後者のシナリオでは、ＰＤＬインタープリター３３０は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２により提供された新しい技術である。ＰＤＬインタープリター３３０は、新しいＸＰＳインタープリター，新しいＰＤＦインタープリター，カスタマイズされた印刷マークアップ言語（ＰＰＭＬ）インタープリター、及び何らかの将来のＰＤＬプロセッサであるかもしれない。実施形態によっては、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、ＭＦＰ１０４及びネットワーク１０８のニーズに関連するＰＤＬインタープリターを求めていくつかのＰＤＬインタープリターにアクセスすることができてもよい。
【００４７】
グラフィックス・レンダリング・コンポーネント３３２は、ＲＩＰファームウェア３２２の第２のサブコンポーネントである。ＰＤＬインタープリター３３０は、ＰＤＬコマンドの翻訳のためグラフィックス・レンダリング・コンポーネント３３２と相互作用をしてグラフィックス・オーダーリストを生成する。グラフィックス・オーダーリストは、グラフィックス・オーダーのリストである。グラフィックス・オーダーリストは、アッセンブリ言語又はコンピュータの機械語と同様に下位のバイナリデータである。グラフィックス・オーダーは、エンジン１０６が実行し処理することが可能な実コンフィギュレーションであり、また描画コマンドである。グラフィックス・レンダリング・コンポーネント３３２は、文書に適したページの論理表現―ラスター画像又は何らかの他の符号化表現であるがーを生成することができる。実施形態によっては、グラフィックス・レンダリング・コンポーネント３３２は、グラフィックス・オーダーリストを実行、処理して、用紙にマーキングを付ける最後の処理のためにＭＦＰ１０４のエンジン１０６にダウンロードできるいくつかのデータのバンドを生成する。
【００４８】
グラフィックス・レンダリング・コンポーネント３３２からの出力は、エンジン１０６に対して少なくとも２つの方法でパッケージ化されてもよい。一つの方法は、ターゲットのＭＦＰ１０４又はエンジン１０６が処理できるように翻訳されたＰＤＬの印刷ジョブであってもよい。もう一つの方法は、ＭＦＰ１０４に又はプリンタエンジン１０６で直接処理できる新しい種類の印刷ジョブの折返えされたラスター画像でもよい。ラスター画像は、ＰＤＬインタープリター３３０及びグラフィックス・レンダリング・コンポーネント３３２によって処理された後の着信印刷ジョブのバイナリデータ表現である。ＭＦＰ１０４がさらなるＲＩＰ処理を省略することを可能にする、エンジン１０６にダウンロードできる圧縮ラスター画像を生成することが可能である。ラスター画像は、印刷時、用紙へのマーキング付け又はインク付けのために直接処理されてもよい。この動作については下記で詳細に開示する。
【００４９】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００はｐｒｉｎｔｃａｓｔエンジン３２４も含む。ｐｒｉｎｔｃａｓｔエンジン３２４は、主要なｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００の機能及び機能性のための管理メカニズムである。ｐｒｉｎｔｃａｓｔエンジン３２４は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２の特定、設定および能力のためにプリンタドライバと通信する。ｐｒｉｎｔｃａｓｔエンジン３２４は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２をネットワークの別の印刷キューとして公表もする。ｐｒｉｎｔｃａｓｔエンジン３２４は、印刷ジョブマネージャー３２０から印刷ジョブを受信、処理して、ＰＤＬの印刷ジョブをパススルーするときあるいはＲＩＰファームウェア３２２でＰＤＬの印刷ジョブを処理することも決定する。ｐｒｉｎｔｃａｓｔエンジン３２４は、また、ホストされているモバイル・アプリケーション・システム・サービス３２６と共に、管理、立ち上げ、及び調整のサポートもする。ｐｒｉｎｔｃａｓｔエンジン３２４は、ネットワーク１０８を介してサーバ１１４からのより新しいバージョンで自身をアップグレードする。ｐｒｉｎｔｃａｓｔエンジン３２４は、許可されかつ適用可能な場合、ＭＦＰ１０４等の接続されている画像装置からファームウェアのアップグレードをダウンロードし、インストールする。
【００５０】
ｐｒｉｎｔｃａｓｔエンジン３２４は、印刷ジョブに関する少なくとも２種類のデータを受信する場合がある。これらの印刷ジョブはｐｒｉｎｔｃａｓｔコマンドの「印刷ジョブ」及びＰＤＬの印刷ジョブと呼ばれることがある。印刷ジョブは、それぞれがｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に遂行させるものにおいて異なる。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００に特定の動作を実行するよう指示するものもあれば、ＭＦＰ１０４に指示を送信するだけのものもある。ｐｒｉｎｔｃａｓｔエンジン３２４は、受信した印刷ジョブの種類を判定してそれに応じて動作する。各データの種類に関連付けられる機能については下記で詳細に開示する。
【００５１】
ｐｒｉｎｔｃａｓｔコマンドの印刷ジョブは、管理者、コンピュータ、ネットワーク１０８に接続されたデバイス又はモバイルデバイスから受信することができる。これらのコマンドは、「印刷エンジン」とも呼ばれるｐｒｉｎｔｃａｓｔエンジン３２４又はエンジン１０６に対して、アップグレード及び立ち上げ等の一定の動作を実行するようｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に要求する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、動作を実行する。アップグレードコマンドは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００にファームウェアのアップグレードを実行するよう指示し、またアップグレードパス等に関連する構文を持つことがある。パスのパラメータは任意であってもよく、またファームウェアのアップグレードパッケージに対するパス向けである。換言すると、「パス」は、システム１００におけるファームウェアのアップグレードパッケージの取得先をｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００に指示する。「パス」パラメータがない場合は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、サーバ１１４、相手先商標製品の製造会社（ＯＥＭ）のウェブサイト、又は安全なインターネット／クラウドストレージ１１６等の専用のローカルサーバからファームウェアのアップグレードパッケージを探す。スタンドアローンのｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２として、新しいツールは、ＭＦＰ１０４等の接続された画像装置のファームウェアのアップグレードを実行することができる可能性がある。
【００５２】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００に対する別のコマンドは、モバイル・アプリケーション・サービスを立ち上げるためのものである。このコマンドは、ａｐｐ＿ｓｅｒｖｉｃｅ＿ｎａｍｅという立ち上げの構文を持つことがある。パラメータ「ａｐｐ＿ｓｅｒｖｉｃｅ＿ｎａｍｅ」は、立ち上げるサービス・アプリケーションを決定することが求められている。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に対して、プロセッサ３０２を使用して開発されまたホストされるいくつかのモバイル・アプリケーション・サービスがあることがある。ローンチコマンドの例としては、ローンチ・スキャナ・モバイルサービス・アプリケーション又はローンチ・文書変換サービス・アプリケーションであろう。
【００５３】
そのほかのｐｒｉｎｔｃａｓｔコマンドがｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００向けに開発、統合、及び実行されてもよい。これらのコマンドは、ｐｒｉｎｔｃａｓｔエンジン３２４に他のプリンタエンジン管理ルーチンを実行する、あるいは他のモバイル・アプリケーション・サービスを立ち上げるよう指示してもよい。立ち上げられたモバイル・アプリケーション・サービスは、スマートフォン、ラップトップ、タブレット、デスクトップ等の外部コンピューティング・デバイスにおいて、対応するモバイル・アプリケーションと接続して機能する。外部のモバイル・アプリケーションは、外部の文書を処理するための黙示の機能を実行することができる。換言すると、モバイル・アプリケーションは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２と協働して、接続されたＭＦＰ１０４のジョブをダウンロード又は処理するプリンタソフトウェアとして動作する。この処理については下記で詳細に開示する。
【００５４】
ｐｒｉｎｔｃａｓｔコマンドはＰＤＬの印刷ジョブの同じチャネルを介して受信されるので、ｐｒｉｎｔｃａｓｔエンジン３２４は、印刷ジョブを互いに識別する方法を持たなければならない。しかしながら、ｐｒｉｎｔｃａｓｔコマンドは、他のあらゆるＰＤＬの印刷ジョブと同じように見えるように現在のＰＤＬの印刷ジョブの枠組み内で機能するようにパッケージ化されるべきである。従って、ｐｒｉｎｔｃａｓｔコマンドは、メインのｐｒｉｎｔｃａｓｔコマンドを包み込むヘッダセクションとトレーラセクションを有してもよい。ｐｒｉｎｔｃａｓｔエンジン３２４及びｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００が適切に動作できるように、セクションは、データセグメントを特別なｐｒｉｎｔｃａｓｔコマンドの「印刷ジョブ」として特定するヘッダデータとトレーラデータを含む。
【００５５】
例えば、可能性があるｐｒｉｎｔｃａｓｔコマンドの「印刷ジョブ」は、以下のものでもよい。
２５５０７２６９６Ｅ７４４３６１７３７４２１（ヘッダセクション）
コマンド［パラメータ］
２５５０７２６９６Ｅ７４４３６１７３７４２１２１（トレーラセクション）
【００５６】
ヘッダデータは、この例では、１６進の数値符号化において、「％ＰｒｉｎｔＣａｓｔ！」である、符号化された開始識別子である。トレーラデータは、この例では、１６進の数値符号化において、「％ＰｒｉｎｔＣａｓｔ！！」である、符号化された終了識別子である。この機能は、さらに強化及び再定義して他の符号化、暗号化、及びＸＭＬ又はＨＴＭＬフォーマティングの使用等のフォーマット標準を使用してもよい。ヘッダセクションとトレーラセクションの間に一以上のｐｒｉｎｔｃａｓｔコマンドを含めることも可能である。ｐｒｉｎｔｃａｓｔエンジン３２４は、ヘッダデータの事前構文解析を行って、着信印刷ジョブデータがＰＤＬの印刷ジョブかｐｒｉｎｔｃａｓｔコマンドの印刷ジョブかどうかを特定してもよい。ｐｒｉｎｔｃａｓｔコマンドの動作の例をいくつか挙げると、ファームウェアのアップグレード、モバイルスキャン及び印刷動作、及び文書変換であると言える。これらの例の処理については下記で詳細に開示する。
【００５７】
ｐｒｉｎｔｃａｓｔエンジン３２４は、また、システム１００内のコンポーネントからＰＤＬの印刷ジョブを受信する。印刷ジョブは、予定されたとおりに、印刷ジョブマネージャー３２０から受信される。印刷ジョブの依頼が正規の印刷ジョブである場合、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、いくつかの相違点を除いて、通常の印刷ジョブがＭＦＰ１０４で扱われるようにその印刷ジョブの依頼を扱う。ｐｒｉｎｔｃａｓｔエンジン３２４は、ＲＩＰファームウェア３２２を介してｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２において局所的にＰＤＬの印刷ジョブを処理する、及びＭＦＰ１０４に中継して伝える、及びＭＦＰ１０４まで通過させる、のいずれであってもよい。
【００５８】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、また、入力／出力及び通信レイヤ（以下において通信レイヤ）３２８を含み、それは、接続されたデバイス、すなわち、入力部及び出力部の両方の管理のためのインターフェース・レイヤであってもよい。これはデバイスドライバ、オペレーティングシステム３０６、ＴＣＰ／ＩＰインターフェース、又は他の接続技術を使用してもよい。入力態様は、印刷ジョブの受け取りのため印刷ジョブマネージャー３２０と連携し、システム能力に関する問い合わせに対応し、及びモバイル・アプリケーション・システム・サービス３２６と外部のモバイル・アプリケーション・クライアントとの間で調整し通信することによるネットワーク接続性に対応している。出力態様は、ＭＦＰ１０４又はエンジン１０６等の接続された印刷デバイス又は画像装置との連携に対応している。通信レイヤ３２８は、また、レンダリングされた又は通過させられた印刷ジョブをｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００内で送信し及びダウンロードする。通信レイヤ３２８は、有線、無線、又は図３のコネクタ３１０として示される直接接続によってＭＦＰ１０４に接続されてもよい。
【００５９】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、モバイル・アプリケーション・システム・サービス３２６も含む。オペレーティングシステム３０６、メモリ３０４、プロセッサ３０２、及び入力部３１２と出力部３１４によるネットワーク接続性を備える完全に機能的なコンピューティング・デバイスとして、ソフトウェアサービスは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２においてホストされ、機能し、動作することができる。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００により立ち上げることができるアプリケーションのカテゴリ又は種類の例としては、多機能ではないプリンタのスキャンソフトウェア、文書変換ソフトウェア、オンデマンド印刷、または管理アプリケーションがある。管理アプリケーションには、ｐｒｉｎｔｃａｓｔエンジン３２４にファームウェアのアップグレード、再起動、リセット、ウェイクアップ等を行うよう指示できるものが含まれる。
【００６０】
サーバのようなシステム・サービス・コンポーネントは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に統合されてｐｒｉｎｔｃａｓｔエンジン３２４を介して管理される。ｐｒｉｎｔｃａｓｔエンジン３２４とインターフェース接続することにより、図４に示すように、モバイル・アプリケーション・システム・サービス３２６は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２において局所的に動作することができる。モバイル・アプリケーション・システム・サービス３２６のアプリケーションは、画像処理、文書変換機能、文書記憶及びユーザアカウント管理等のような多様な能力を持つことができる。アプリケーション・インターフェース（ＡＰＩ）・サービスは、ネットワーク１０８を介して接続されるコンポーネント又はクライアント・アプリケーション４０２等の、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２の外部にいるクライアントに提供される。クライアント・アプリケーション４０２は、モバイルデバイス１１０又はコンピュータ１１２に存在してもよい。上記で述べたように、クライアント・アプリケーション４０２は、機能が外部のアプリケーションによって提供されてＭＦＰ１０４のエンジンを使用して動作を実行するので、ｐｒｉｎｔｃａｓｔエンジン３２４を介するエンジン１０６に対する拡張として動作してもよい。
【００６１】
ＭＦＰ１０４は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２から出力データを受信する。ＭＦＰ１０４とエンジン１０６は、他の着信印刷ジョブ又はネットワーク１０８からの通信のようにそのデータを処理する。実施形態によっては、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２が新しい機能と能力を既存のデバイスに提供するのでＭＦＰ１０４又はエンジン１０６のハードウェア及びファームウェアコンポーネントの変更はアップグレードのために必要ない。
【００６２】
ＭＦＰ１０４とｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００との間の相互作用の性能及び処理効率を向上し改良するために、開示された技術で明示された技術を統合することは可能である。例えば、ＭＦＰ１０４のエンジン１０６は接続されたｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２と通信するアップグレードされたファームウェアを有してもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２が処理するすべての着信印刷ジョブは、アップグレードされた相互作用及び通信パスと互換性がある一定の方法でフォーマットすることができる。印刷ジョブも、ＭＦＰ１０４で受信されたとき、より効率的に処理される。
【００６３】
図５は、本開示の実施形態に係るＭＦＰ１０４に接続された場合にｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を設定するためのフローチャート５００を示す。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２が、ＭＦＰ１０４等の画像装置に接続される場合はいつでも、自身の機能及び能力を決定しイネーブルするために自身を設定してもよい。ｐｒｉｎｔｃａｓｔエンジン３２４は、接続された画像装置に関するデータを使用してどのように機能するかを決定することができる。フローチャート５００は設定を完了するために使用されるステップを示す。
【００６４】
各ＭＦＰ１０４には事前にインストールされたエンジンファームウェアとその他のファームウェアが搭載されている。ファームウェアは、ＭＦＰ１０４がオンラインにされる時点で特定のバージョンであってもよい。ファームウェアコンポーネントは、ＭＦＰ１０４が出荷された後でアップグレードすることができる。さらに、すべてのＭＦＰとデバイスは古くなるすなわち陳腐化する。ファームウェアの将来のバージョンは、機能、バグ修正、拡張機能等を含む場合がある。新しいアップグレードは、ＭＦＰ１０４の既存のファームウェアと後方互換性はないかもしれない。アップグレードは、ＭＦＰの製造業者に知られており、また工場又はその他の場所でカタログが作成されているかもしれない。ファームウェアのバージョンマッピングは、例えば、工場で提供され、その後サーバ及びインターネット／クラウドに含まれるかもしれない。マッピングは、データベースにあって、ＳＱＬ接続及びその他の方法を用いてクエリーを通して共有できる。換言すると、ファームウェアのアップグレード及び関連情報は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって、ネットワーク１０８の記憶場所でアクセスすることができる。あるいは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を設定するときに、リソースファイルとして及びｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２のソフトウェアコンポーネントと静的にリンクされるときのいずれかのとき、このデータをパッケージ化して含めることは可能である。
【００６５】
ステップ５０２では、エンジンの能力の問い合わせを実行する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００、より具体的には、ｐｒｉｎｔｃａｓｔエンジン３２４は、どんなＰＤＬｓ及び技術がＭＦＰ１０４及びエンジン１０６に対してイネーブルされているか判定するために、サーバ１１４等のサーバにファームウェアバージョンのマッピング及び関連するデータを問い合わせることができる。ｐｒｉｎｔｃａｓｔエンジン３２４は、また、どんな制限、制約、課題等がＭＦＰ１０４に対して適用されるか問い合わせることができる。例えば、ｐｒｉｎｔｃａｓｔエンジン３２４は、ファームウェア・アップグレードの必要性を判定し、及びどんなＰＤＬｓがエンジン１０６でサポートされているかを判定するために、エンジンのファームウェアのバージョン、能力、及びその他の関連情報を問い合わせする。
【００６６】
実施形態によっては、データは静的データとしてｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に含まれていてもよい。静的データは、メモリ３０４に記憶されている個別のリソース・ファイルでもよく、あるいはｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００に静的にリンクすることができる。ｐｒｉｎｔｃａｓｔエンジン３２４は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に局所的にすでに含まれているものよりも新しいデータについてサーバ１１４にのみ問い合わせることができる。換言すると、ｐｒｉｎｔｃａｓｔエンジン３２４は、ＭＦＰ１０４に関するデータもアップグレードする必要があるかどうか判定できる。
【００６７】
ステップ５０４では、ＭＦＰ１０４のエンジン１０６に関するエンジンのパラメータを判定する。ｐｒｉｎｔｃａｓｔエンジン３２４は、エンジンの制約、制限、機能、及びその他の能力に対する問い合わせに関するデータを受信し処理する。このデータにより、ｐｒｉｎｔｃａｓｔエンジン３２４は、接続されるＭＦＰ１０４の能力、又は能力不足を効果的に「知る」。ｐｒｉｎｔｃａｓｔエンジン３２４は、この知識を利用して、ＭＦＰ１０４に対して新しい機能、性能向上、及びアップグレードされた能力及び技術を提供しイネーブルする。
【００６８】
このステップは、また、規則と能力の明確化と呼ぶことができる。ｐｒｉｎｔｃａｓｔエンジン３２４は、少なくとも３つの規則と能力を明確にする。これらは、ステップ５０６乃至５１０に示すことができる。ステップ５０６ではＰＤＬのパススルーサポートを明確にする。ＰＤＬのパススルーサポートは、ＭＦＰ１０４に有効であることが分かっており、また重要な問題がないＰＤＬｓに対してイネーブルされる。印刷ジョブは、通常通り、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００を通過し、更にＭＦＰ１０４への出力のために直接、通信レイヤ３２８に向かってもよい。より新しいファームウェアバージョン又はアップグレードは検知されない。
【００６９】
ファームウェア又はハードウェアのいずれかにおいて、ローカルＰＤＬに重要な問題があることが分かっている場合、ｐｒｉｎｔｃａｓｔエンジン３２４は、着信印刷ジョブを欠陥があるＰＤＬと共に遮断してもよい。ｐｒｉｎｔｃａｓｔエンジン３２４は、ＲＩＰファームウェア３２２を用いて、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００において局所的に印刷ジョブを処理する。ｐｒｉｎｔｃａｓｔエンジン３２４は、次に、処理のためＭＦＰ１０４に印刷ジョブを送信する。ＭＦＰ１０４がローカルＰＤＬの適切なバージョンを含んでいるので、ＰＤＬパススルーのサポートはイネーブルされているが、ｐｒｉｎｔｃａｓｔエンジン３２４は、恐らくＡＳＩＣ、ハーフトーン、ハードドライブ、又はＲＯＭメモリの破損のためにローカルＰＤＬが破損していると判定し、この遮断モードを設定する。ｐｒｉｎｔｃａｓｔエンジン３２４は、ＭＦＰ１０４からローカルＰＤＬに関する情報を受信することができる。
【００７０】
ステップ５０８では、ｐｒｉｎｔｃａｓｔエンジン３２４がＰＤＬの遮断モードを明確化する。ＰＤＬ遮断モードは、上記で明確にされたものと同様である。ＰＤＬ向けの印刷ジョブは遮断されてｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００によって処理される。印刷ジョブはＭＦＰ１０４にパススルーされない。ＭＦＰ１０４にインストールされたものよりもより良い新しいバージョンのＰＤＬが印刷ジョブ処理に利用可能な場合、ｐｒｉｎｔｃａｓｔエンジン３２４はＰＤＬと共に印刷ジョブを遮断する。印刷ジョブは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で局所的に処理される。処理が完了すると、印刷ジョブはエンジン１０６に出力される。
【００７１】
ステップ５１０ではスピードを最適化する。エンジン１０６のレンダリング能力が判定できた場合、ｐｒｉｎｔｃａｓｔエンジン３２４は、エンジン１０６によってより効率的に処理される形式に、着信印刷ジョブを生成、翻訳、又は変換できるようにしてもよい。例えば、ｐｒｉｎｔｃａｓｔエンジン３２４が、ＭＦＰ１０４が、ＭＦＰの特定用途向け集積回路（ＡＳＩＣ）において、ある圧縮及び解凍アルゴリズムのバージョン２．３を含むと判定した場合、ｐｒｉｎｔｃａｓｔエンジンは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００のＲＩＰファームウェア３２２にそのようなバージョンについて通知する。ＲＩＰファームウェア３２２は、当該着信印刷ジョブをパススルーモードを経ることなく翻訳、変換してＭＦＰ１０４のＡＳＩＣの既知の圧縮及び解凍アルゴリズムのバージョン２．３に準拠するフォーマットでページのラスター画像表現を生成する。
【００７２】
他の規則は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２の処理能力及びアップグレードされた機能を利用するために、イネーブル若しくはディスエーブルされてもよい。これらの規則の例としては、制限されたユーザのアクセスを明確化したり、イネーブルしたりする場合がある。ユーザによってはＭＦＰ１０４を使用できない場合があり、これらの規則は時間が経つにつれて変わるかもしれない。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ｐｒｉｎｔｃａｓｔエンジン３２４を用いてこれらの規則を施行することができる。別の例としては、文書の記憶の許可をイネーブルする場合がある。規則には、また、ＭＦＰ１０４に対してカラー若しくは白黒印刷アクセスを明確化し、割り当てることが含まれてもよい。換言すると、ＭＦＰ１０４にアクセスできるもの及び人に適用される規則は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を用いてイネーブルすることができる。
【００７３】
ステップ５１２では、機能をイネーブルする。一旦、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２が構成され、規則が明確化されると、印刷ジョブが受信されるとき、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、規則を適用し、実行する。ｐｒｉｎｔｃａｓｔエンジン３２４は、それに応じて印刷ジョブを処理する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、また、管理者から、ファームウェア・アップグレードの催促等のコマンドを受信するかもしれない。この場合、ファームウェア・アップグレードはｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で受信してもよい。これにより、ｐｒｉｎｔｃａｓｔエンジン３２４に、ローカルＰＤＬをパススルーパラメータから遮断モードパラメータに移行させてもよい。
【００７４】
図６は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を用いて印刷ジョブ又はｐｒｉｎｔｃａｓｔコマンドを処理するためのフローチャート６００を示す。フローチャート６００は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２がシステム１００内の他のデバイスからデータを受信した場合に起こることを示す。ネットワーク１０８を介して接続された外部のデバイスは、文書の印刷又はｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２への処理の実行の要求等、何らかの動作を実行してもらうためにデータを送信することが好ましい。従って、ステップ６０２では、外部の、遠隔の、又は接続されたデバイスからの「印刷ジョブ」あるいはアプリケーションを受信する。上記で述べたように、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、プリンタ又はＭＦＰ１０４のように、印刷ジョブ又は動作に対する宛先として選択され得る。「印刷ジョブ」という用語を使用しているが、これはｐｒｉｎｔｃａｓｔコマンド及び実際のＰＤＬの印刷ジョブを指す。
【００７５】
ステップ６０４では、印刷ジョブマネージャー３２０を用いて印刷ジョブの予定を立てる。印刷ジョブマネージャー３２０は、印刷ジョブの依頼を受信し、それに応じて予定を立てる。これは、すべての着信依頼がそのように予定が立てられるので「印刷ジョブ」として取り扱われるひとつの理由である。ジョブは順序正しく処理される。例えば、ｐｒｉｎｔｃａｓｔコマンドは、通常の印刷ジョブよりも優先的な取り扱いを与えられない。ステップ６０６では、処理のために予定が立てられた場合、ｐｒｉｎｔｃａｓｔエンジン３２４は印刷ジョブを受信する。ｐｒｉｎｔｃａｓｔエンジン３２４は、印刷ジョブを分析して、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２での取り扱い方法を決定する。
【００７６】
ステップ６０８では、印刷ジョブのヘッダを分析する。上記で述べたように、印刷ジョブはｐｒｉｎｔｃａｓｔコマンドとして印刷ジョブを特定する特定のヘッダを含む場合がある。そのヘッダのデータは、１６進表記で「％ＰｒｉｎｔＣａｓｔ！」等の符号化された開始識別子を含む。これは、印刷ジョブがｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００に対するｐｒｉｎｔｃａｓｔコマンドを実際に含むことをｐｒｉｎｔｃａｓｔエンジン３２４にアラートを出すものである。ヘッダが判定された後、ステップ６１０では、ｐｒｉｎｔｃａｓｔエンジン３２４を用いて印刷ジョブがｐｒｉｎｔｃａｓｔコマンドを含むかどうかを判定する。実施形態によっては、印刷ジョブは複数のｐｒｉｎｔｃａｓｔコマンドを含む場合がある。
【００７７】
ステップ６１０が「ＹＥＳ」である場合、次に、ｐｒｉｎｔｃａｓｔエンジン３２４は、ｐｒｉｎｔｃａｓｔコマンドとして印刷ジョブを処理する。ｐｒｉｎｔｃａｓｔエンジン３２４は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００内のコンポーネントに、コマンドで指定された機能を実行してあるいはｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００内のアプリケーションを立ち上げるよう仕事を課してタスクを遂行する。この処理については図７乃至図１０を用いて、下記で詳細に開示する。
【００７８】
ステップ６１０で「ＮＯ」である場合、次に、ｐｒｉｎｔｃａｓｔエンジン３２４は、印刷ジョブを通常のＰＤＬの印刷ジョブとして処理する。ｐｒｉｎｔｃａｓｔエンジン３２４は、ＭＦＰ１０４のエンジン１０６ですでにサポートされているＰＣＬＸＬ又はＰＤＦインタープリターのバージョンを判定することができる。この情報により、ｐｒｉｎｔｃａｓｔエンジン３２４は、着信ＰＣＬＸＬ及びＰＤＦ印刷ジョブが通過して、ＭＦＰ１０４によって直接処理されることができるようにしてもよい。何かの理由で、エンジン１０６にインストールされたバージョンがファームウェアのアップグレードによって修正できない既知のバグがある、あるいはエンジン１０６によるサポートに関して何らかの不足がある場合、本開示の実施形態は、事前にレンダリングし、互換性のあるデータのみをＭＦＰ１０４にダウンロードすることによって、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２において着信印刷ジョブを処理する。従って、ステップ６１０において印刷ジョブと特定された着信印刷ジョブは、エンジン１０６に直接送信するあるいはｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で処理されるかいずれかでステップ６１４で処理することができる。さらに、遮断モードがイネーブルされている場合、上記で述べたように、次に、印刷ジョブは遮断されてｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって処理される。
【００７９】
ステップ６１６では、ステップ６１２又は６１４の結果をＭＦＰ１０４へ送信する。結果は、ｐｒｉｎｔｃａｓｔコマンド又はＰＤＬの印刷ジョブのいずれかからｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００の動作によって生成されたデータであってもよい。結果は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２の外部デバイスからの着信依頼との相互作用に起因して、ＭＦＰ１０４に提供されるデータである。データは、ＭＦＰ１０４に配置されるアップグレードされたファームウェア又は印刷のため処理された文書であってもよい。データはエンジン１０６又はＭＦＰ１０４によって使用可能なフォーマットであることが好ましい。結果は、ＭＦＰ１０４と通信する通信レイヤ３２８から送信される。
【００８０】
図７は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を用いてＭＦＰ１０４で印刷ジョブを処理するためのフローチャート７００を示す。フローチャート７００は、ステップ６１４に対応するが、ステップ６１４は、図７に開示されたステップによって限定されない。ＭＦＰ１０４で印刷するために受信された文書は、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって処理され、その結果としてエンジン１０６に直接送信されてもよい。上記で開示されたように、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００は、受信した文書をエンジン１０６又はＭＦＰ１０４内の他のファームウェアと互換性があるＰＤＬフォーマットに変換するコンポーネントを含んでもよい。
【００８１】
ＭＦＰ１０４が着信印刷ジョブのＰＤＬをサポートしない場合、当該ＰＤＬがｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内でサポートされる場合には、当該着信ＰＤＬの印刷ジョブはｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で処理されるであろう。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、全てのサポートされない印刷ジョブの種類を遮断してｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００を用いて内部でそれらを処理する。
【００８２】
ｐｒｉｎｔｃａｓｔエンジン３２４は、利用可能なより新しいファームウェアあることを見出した場合、ＭＦＰ１０４に対してファームウェアのアップグレードを実行してもよい。そのようなより新しい又はアップグレードされたファームウェアは、サーバ１１４又はその他のソースからネットワーク１０８を介して入手可能であってもよい。ファームウェアのアップグレードは、また、ｐｒｉｎｔｃａｓｔコマンドを用いてｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって実行されてもよい。実施形態によっては，これらの機能は、生産現場で印刷デバイスをアップグレードし、不使用のＭＦＰを再生し、管理された画像装置群の一部としてサードパーティのＭＦＰを統合し、あるいはサードパーティのＭＦＰに新しい機能や能力を付加するために使用される。
【００８３】
ＭＦＰ１０４やプリンタのような各画像装置は、ＡＳＩＣ、画像プロセッサ、ＣＰＵ、データバス、特定かつ限定的なランダム・アクセス・メモリ（ＲＡＭ）／読み出し専用メモリ（ＲＯＭ）のメモリ容量、ハードドライブフォーマット，並びにデータ圧縮、符号化及び暗号化のための特定のファームウェア技術を含む。これらのすべてにより、ＭＦＰが、例えば、その製品ラインの特定の機種のバージョン２．４であると明確にされる。製品ラインに対するそれぞれの新しいアップグレードには、ますます後方互換性をなくさせる、ハードウェア、ファームウェア、およびソフトウェアコンポーネントのどれか若しくは全ての新しいセットが含まれる。製品ラインの新しいバージョンには、以前のデバイスの機能性、性能及び機能を改善することが見込まれる。その結果、より古い製品は、時が過ぎるに従って、価値が減少していくとみなされる可能性がある。
【００８４】
従って、ｐｒｉｎｔ印刷コンピューティング・ｃａｓｔデバイス１０２は、それらのより古いＭＦＰやプリンタをネットワーク上に戻して新しい価値を持たせる。古いデバイスを使用すると、製品の寿命を延長し、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を使用する事業者及び顧客により良い投資利益（ＲＯＩ）を提供する。これを実現するために、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、ＭＦＰ１０４の各バージョン若しくは機種の能力、技術、及び限界を知ることができる。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、そのような情報を、ＭＦＰ１０４自体に、サーバ１１４等のローカルネットワークのサーバに、元の機器の製造業者（ＯＥＭ）に、あるいはクラウドのサーバ又は場所に問い合わせることができる。
【００８５】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２が、ＡＳＩＣ、画像プロセッサ、メモリ容量、ハードドライブフォーマット，並びにデータ圧縮、符号化及び処理のための関連付けられたアルゴリズムのどれかを知った場合、ｐｒｉｎｔ印刷コンピューティング・ｃａｓｔデバイス１０２が、ＭＦＰ１０４で効率的にまた高品質で印刷される後方互換性があるＰＤＬの印刷ジョブを生成しレンダリングすることは可能である。従って、ＭＦＰ若しくはプリンタの一機種用に生成されたＰＤＬの印刷ジョブは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２がＭＦＰ若しくはプリンタの別の機種に接続された場合には異なるかもしれない。
【００８６】
図７を参照して、ステップ７０２では、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２及びＭＦＰ１０４に関する規則と能力を明確にする。このステップは図５のステップ５０４、５０６、５０８、及び５１０に対応する。ｐｒｉｎｔｃａｓｔエンジン３２４は、エンジンの制約、限界、機能、及びその他の能力に関する問い合わせに対するデータを受信し、処理する。ｐｒｉｎｔｃａｓｔエンジン３２４は、ＭＦＰ１０４の能力又は能力の不足を知ることができる。ｐｒｉｎｔｃａｓｔエンジン３２４は、次に、ＭＦＰ１０４に印刷ジョブを配信する前に印刷ジョブを遮断する時並びに印刷ジョブを通過させる時を知る。上記で述べたように、ｐｒｉｎｔｃａｓｔエンジン３２４は、重要な問題を有することが分かっているあるいはＭＦＰ１０４でサポートされないＰＤＬを有する印刷ジョブを遮断する。ｐｒｉｎｔｃａｓｔエンジン３２４は、また、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によりホストされているバージョンがＭＦＰ１０４にインストールされているものよりも良い場合にも印刷ジョブを遮断してもよい。
【００８７】
ステップ７０４では、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００でＰＤＬの印刷ジョブを受信する。ステップ７０６では、適用可能な、ＰＤＬの印刷ジョブ向けの規則を判定する。ＭＦＰ１０４の規則と能力に基づいて、ステップ７０８では、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内で処理するためにＰＤＬの印刷ジョブを遮断するかどうか判定する。ｐｒｉｎｔｃａｓｔエンジン３２４は、前に規定された規則が特定のジョブに適用される場合ＰＤＬの印刷ジョブを遮断するかどうかを判定してもよい。
【００８８】
ステップ７０８が「ＮＯ」の場合、ステップ７１０で、ＰＤＬの印刷ジョブを通信レイヤ３２８に送信する。ＰＤＬの印刷ジョブはＭＦＰ１０４のファームウェア及びハードウェアにサポートされるので、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内で処理する必要はない。ステップ７１２では、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２からＭＦＰ１０４にＰＤＬの印刷ジョブをダウンロードする。ステップ７１６では、ＭＦＰ１０４に送信される通常の印刷ジョブのように、エンジン１０６を用いてＰＤＬの印刷ジョブの文書を印刷する。文書を記憶することあるいはＭＦＰ１０４や別の装着されたデバイスを用いて編集ができるようにすること等、印刷以外に他の動作もこのステップで行うことができる。
【００８９】
ステップ７０８が「ＹＥＳ」の場合、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００を用いてｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で処理するために、ｐｒｉｎｔｃａｓｔエンジン３２４はＰＤＬの印刷ジョブを遮断する。このステップについては、下記の図８乃至図１２で詳細に開示する。一旦、処理が完了すると、フローチャート７００はステップ７１０に進み、ＰＤＬの印刷ジョブを通信レイヤ３２８に送信する。
【００９０】
図８は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２でＰＤＬの印刷ジョブを処理するためのフローチャート８００を示す。フローチャート８００は、フローチャート７００で開示されたステップ７１４に対応し得る。しかしながら、ステップ７１４は、フローチャート８００に示される実施形態に限定されない。
【００９１】
ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で生成されたＰＤＬの印刷ジョブに対して最良の性能を達成するために、生成されたＰＤＬの印刷ジョブはラスター化された画像を含む印刷ジョブであることが好ましい。ラスター化された画像は、既に、ＲＩＰファームウェア３２２のＰＤＬインタープリター３３０及びグラフィックス・レンダリング・コンポーネント３３２によって処理されている画像であってもよい。ラスター画像は、エンジン１０６に対してローカルなＲＩＰファームウェア３２２による複製や再処理を経る必要がないＭＦＰ１０４のエンジン１０６で直接処理することができるフォーマットである。ラスター画像は、ＭＦＰ１０４のエンジンファームウェアが直接処理して用紙上にピクセルをレンダリングできるフォーマットであることが好ましい。なぜならば、ラスター画像はエンジン１０６によって直接処理される「ネイティブ」フォーマットであるからである。エンジン互換性があるラスター画像は、折り返されて通常の印刷ジョブのように見えるが、エンジン１０６が直接処理できる画像である。従って、エンジン互換性があるラスター画像は、接続されたＭＦＰに対してデバイス依存性があり得る。
【００９２】
ステップ８０２では、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００のＲＩＰファームウェア３２２にＰＤＬの印刷ジョブを提供する。フローチャート７００のステップ７０８では、ＭＦＰ１０４に対して規定された規則に従って、ＰＤＬの印刷ジョブは遮断されるものとすると判定する。ｐｒｉｎｔｃａｓｔエンジン３２４は規則を適用してＰＤＬの印刷ジョブを遮断する。
【００９３】
ステップ８０４では、をＭＦＰ１０４のエンジン１０６にダウンロードするためにＰＤＬの印刷ジョブに対する最良のフォーマットを判定する。ＦＰ１０４に送信される印刷ジョブの主要なコンテンツは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内で生成されたラスター画像である。ラスター画像は、エンジン１０６で直接処理することができるレンダリングされた文書のページのバンド毎の圧縮データ表現であるものとする。最良の性能と互換性のために、ラスター画像は、エンジン１０６のラスター・プロセッシング・ユニット・レベルで処理される。実施形態によっては，圧縮されたバイナリフォーマットが「ＭＦＰのネイティブフォーマット」である場合がある。従って、ｐｒｉｎｔｃａｓｔエンジン３２４は、ＭＦＰ１０４へのダウンロードのためにラスター画像を達成するための最良の方法を判定する。
【００９４】
ＰＤＬの印刷ジョブをフォーマットするために４つの方法を選択することができる。付加方法も同様に考慮されてもよい。あるいは、ｐｒｉｎｔｃａｓｔデバイスによっては開示された方法の内３つ以下を実施するのみであってもよい。４つの方法は、図９乃至図１２に詳細に開示される。図８に示すように、ステップ８０６では、ＰＤＬの印刷ジョブをネイティブＰＤＬに翻訳する。ＲＩＰファームウェア３２２によって生成されたラスター画像は、ＭＦＰ１０４のために通常のＰＤＬの印刷ジョブの内部で折り返される。ステップ８０８では、サポートされる画像フォーマットで折り返されたラスター画像を生成する。このステップでは、ＭＦＰ１０４がすでに印刷できるフォーマットのためにサポートされる画像の内の一つでラスター画像が生成される。ステップ８１０では、ＭＦＰのネイティブフォーマットで折り返されたラスター画像を生成する。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって生成された印刷ジョブをＭＦＰ１０４向けのＭＦＰのネイティブフォーマットのバンド毎に圧縮されたラスター画像を含む印刷ジョブとして特定するために新しいＰＤＬが使用される。ステップ８１２では、ＰＤＬの印刷ジョブをサードパーティのＰＤＬに翻訳する。ラスター画像は、サードパーティのＰＤＬ等、ＭＦＰ１０４がすでにサポートするフォーマットで折り返される。サードパーティのＰＤＬの例としては、周知のプリンタ制御言語又はページ記述言語によって独自開発されている場合がある。
【００９５】
以下の図９乃至図１２に開示された処理の要約によって、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２がそれらのフォーマットの通常の印刷ジョブと当該フォーマットの処理された印刷ジョブを区別する方法の概要が得られる。換言すると、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって生成された印刷ジョブは、他のＰＤＬの印刷ジョブから特定でき、区別されるものとする。これを行う一つの方法は、新しい種類の印刷ジョブをｐｒｉｎｔｃａｓｔが生成した印刷ジョブとして特定するジョブパラメータを付加することである。
【００９６】
実施形態によっては，ｐｒｉｎｔｃａｓｔの印刷ジョブのファイル形式仕様が実行されてもよい。当該ファイル形式は、ＰＪＬ、ＰＲＥＳＣＲＩＢＥ、又はその他のジョブ・パラメータ・ラッパーを有する他のバイナリＰＤＬと同様であってもよい。以下は、下に下線が引かれたｐｒｉｎｔｃａｓｔの印刷ジョブパラメータを有するＰＣＬＸＬの印刷ジョブの例である。
％ー１２３４５Ｘ＠ＰＪＬＪＯＢＮＡＭＥ＝「ジョブ名」
＠ＰＪＬ  ＳＥＴ  ＴＩＭＥＯＵＴ＝３００
＠ＰＪＬ  ＳＥＴ  ＲＥＳＯＬＵＴＩＯＮ＝６００
＠ＰＪＬ  ＳＥＴ  ＢＩＴＰＥＲＰＩＸＥＬ＝１
＠ＰＪＬ  ＣＯＭＭＥＮＴ＝「ＩＮＦＯ：ＮＵＰ  １；ＤＵＰＬＥＸ  ＯＦＦ；ＱＴＹ  １；ＣＯＬＯＲＭＯＤＥ  ＣＯＬＯＲ；」
＠ＰＪＬ  ＣＯＭＭＥＮＴ＝「ＡＰＰ：Ｃ：＼プログラムファイル＼ＭｉｃｒｏｓｆｔＯｆｆｉｃｅ＼ＯＦＦＩＣＥ１１＼ＷＩＮＷＯＲＤ．ＥＸＥ；」
＠ＰＪＬ  ＳＥＴ  ＥＣＯＮＯＭＯＤＥ＝ＯＦＦ
＠ＰＪＬ  ＳＥＴ  ＵＳＥＲＮＡＭＥ＝「ユーザ名」
＠ＰＪＬ  ＳＥＴ  ＪＯＢＮＡＭＥ＝「ジョブ名」
＠ＰＪＬ  ＳＥＴ  ＰＲＩＮＴＣＡＳＴ  ＭＯＤＥ＝ＴＲＵＥ（ｐｒｉｎｔｃａｓｔ印刷ジョブパラメータ）
＠ＰＪＬ  ＳＥＴ  ＰＲＩＮＴＣＡＳＴ  ＪＯＢ  ＩＤ＝１００（ｐｒｉｎｔｃａｓｔ印刷ジョブパラメータ）
＠ＰＪＬ  ＳＥＴ  ＱＴＹ＝１
＠ＰＪＬ  ＳＥＴ  ＫＰＡＧＥＳＰＥＲＳＨＥＥＴ＝１
＠ＰＪＬ  ＥＮＴＥＲ  ＬＡＮＧＵＡＧＥ＝ＰＣＬＸＬ
【００９７】
ファイル中央のバイナリデータは、印刷ジョブ内の文書のページのバンド毎に圧縮されたデータの表現である。上記に示すバイナリデータは、主要なバイナリデータの見え方の例である。
【００９８】
上記に示す印刷ジョブは、ＰＪＬ、ＸＰＳのＰｒｉｎｔＴｉｃｋｅｔフォーマット、あるいはＰＲＥＳＣＲＩＢＥ又は印刷ジョブのＰＤＬの種類に依存する他のジョブパラメータ仕様における印刷ジョブパラメータを含んでもよい。ジョブパラメータは、ｐｒｉｎｔｃａｓｔの印刷ジョブをネイティブラスター画像のコンテンツを有する印刷ジョブとして特定することができる。実施形態によっては，ｐｒｉｎｔｃａｓｔのジョブパラメータは、ｐｒｉｎｔｃａｓｔモード及びｐｒｉｎｔｃａｓｔジョブの識別（ＩＤ）である。他のｐｒｉｎｔｃａｓｔのジョブパラメータは、文書名、ファイル名、印刷のタイムスタンプ、同じ文書が処理されることを確保するために情報の全てを符号化するためのＣＲＣコード等で定義されてもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２により生成される印刷ジョブの処理を促進するために、追加のｐｒｉｎｔｃａｓｔのジョブパラメータが、必要に応じて付加されてもよい。
【００９９】
ｐｒｉｎｔｃａｓｔモードのジョブパラメータは、着信ＰＤＬの印刷ジョブがｐｒｉｎｔｃａｓｔの印刷ジョブであることをＭＦＰ１０４に注意を喚起するための新しいコマンドであってもよい。換言すると、着信印刷ジョブは、すでにｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２で処理されている。実施形態によっては，ｐｒｉｎｔｃａｓｔモードのジョブパラメータは、ＴＲＵＥ若しくはＦＡＬＳＥ値を有する可能性があるコマンドであってもよい。パラメータが存在しない場合、設定はデフォルトでＯＦＦ若しくはＦＡＬＳＥになる。ＴＲＵＥの場合、ＭＦＰ１０４のファームウェアは、ローカルのＰＤＬインタープリター及びグラフィックス・レンダリング・コンポーネントによる印刷ジョブの処理を省いてもよい。当該印刷ジョブはエンジン１０６に直接ダウンロードされてもよい。
【０１００】
別の実施形態では、ｐｒｉｎｔｃａｓｔモードのジョブパラメータは、ＰＤＬコマンドに対応するキーワードである。ＲＩＰファームウェア３２２は、これを生成された印刷ジョブに付加して、着信印刷ジョブがネイティブフォーマットのラスター画像を含むことをＭＦＰ１０４及び関連付けられたファームウェアに通知する。当該印刷ジョブは、エンジン１０６に直接ダウンロードされてもよい。
【０１０１】
さらなる実施形態においては、ｐｒｉｎｔｃａｓｔモードのジョブパラメータは、０若しくは偽、及び１若しくは真という設定であってもよい。当該設定はＰＤＬに対するモードコマンドに対応する新しいコマンドである。ＲＩＰファームウェア３２２は、この設定を生成された印刷ジョブに付加して、着信印刷ジョブがネイティブフォーマットのラスター画像を含むことをＭＦＰ１０４及びそれに関連付けられたファームウェアに通知する。上記の実施形態と同様にして、当該印刷ジョブは、エンジン１０６に直接ダウンロードされてもよい。
【０１０２】
別のｐｒｉｎｔｃａｓｔのパラメータは、ｐｒｉｎｔｃａｓｔのジョブＩＤのジョブパラメータである。ジョブＩＤは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２により生成されたそれぞれの印刷ジョブに割り当てられてもよい。ジョブＩＤは、取り消し、中断、及びアプリケーションが印刷ジョブに実行したいかもしれない他の機能性等のジョブ管理のために使用されてもよい。このパラメータは、ｐｒｉｎｔｃａｓｔエンジン３２４で生成される数値カウンタであってもよく、生成された印刷ジョブに付加されてもよい。
【０１０３】
一旦、印刷ジョブがｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００及びｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって生成されると、ステップ８１４で、生成された印刷ジョブがＭＦＰ１０４にダウンロードされる。このステップでは、生成された印刷ジョブを通信レイヤ３２８送信することが含まれ、次に通信レイヤ３２８は印刷ジョブをＭＦＰ１０４に送信するする。上記で述べたように、生成された印刷ジョブは、ファームウェアをバイパスして印刷のためエンジン１０６に向かうことができることをＭＦＰ１０４に注意を喚起するものとする。
【０１０４】
図９は、本開示の実施形態に係るｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２を用いてＰＤＬの印刷ジョブをネイティブＰＤＬに翻訳するためのフローチャート９００を示す。フローチャート９００は、フローチャート８００で開示されたステップ８０６に対応し得る。しかし、ステップ８０６は、フローチャート９００で示される実施形態に限定されない。フローチャート８００によって開示された処理は、ＰＤＬの印刷ジョブを、ＭＦＰ１０４によってサポートされる既知のＰＤＬ言語に翻訳することとして理解されてもよい。従って、フローチャート９００では、ＲＩＰファームウェア３２２によって生成された結果として生じたラスター画像が、ＰＣＬ５、ＰＣＬＸＬ、ＸＰＳ、又は他のＰＤＬ等の通常のＰＤＬの印刷ジョブの内部に折り返される。上記で開示したように、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、必要に応じて、利用可能なＰＤＬでアップグレードされてもよい。
【０１０５】
ステップ９０２では、印刷ジョブのためにファイルのバッファを作成する。ファイルのバッファは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２のメモリ３０４で作成されてもよい。ファイルのバッファは、印刷ジョブが処理されている間、当該印刷ジョブを一時的に記憶する。
【０１０６】
ステップ９０４では、ネイティブＰＤＬのジョブ、文書、及びページヘッダを生成する。ステップ９０６では、ジョブ、文書、及びページチケットの印刷ジョブへの付加も実行してもよい。これらのステップによって、受信された印刷ジョブからのデータによって追加されるネイティブＰＤＬの印刷ジョブのヘッダがフォーマットされる。ヘッダは、印刷ジョブがすでにＲＩＰファームウェア３２２によって印刷用にフォーマットされてしまっていることをＭＦＰ１０４に伝えるｐｒｉｎｔｃａｓｔの印刷ジョブパラメータと併せて、上記で開示されたフォーマットにマッチしてもよい。
【０１０７】
ステップ９０８では、ネイティブＰＤＬコマンドを生成する。ステップ９１０では、ステップ９０８と共に着信ＰＤＬコマンドをネイティブＰＤＬコマンドに翻訳もする。ｐｒｉｎｔｃａｓｔエンジン３２４は、ネイティブＰＤＬコマンドをＭＦＰ１０４及びそれに関連付けられたファームウェアから取得することができる。次に、ｐｒｉｎｔｃａｓｔエンジン３２４は、着信コマンドを対応するネイティブコマンドに関連付けることによって着信コマンドをネイティブコマンドに翻訳する。これらの関連付けは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内に記憶され、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００によってアクセス可能であってもよい。ネイティブＰＤＬの印刷ジョブには、翻訳されたＰＤＬコマンドが追加される。
【０１０８】
ステップ９１２では、ネイティブＰＤＬの印刷ジョブ向けに、ネイティブＰＤＬのジョブ、文書及びページのフッターデータが生成される。フッターは、翻訳されたＰＤＬコマンド及び文書のページのバンド毎に圧縮されたデータの後に作成されてもよい。ステップ９１４では、ファイルのバッファを終了し、ＭＦＰ１０４へのダウンロードに向けて翻訳されたネイティブＰＤＬの印刷ジョブを通信レイヤ３２８に転送する。
【０１０９】
図１０は、本開示の実施形態に係るサポートされる画像フォーマットでラスター画像を生成するためのフローチャート１０００を示す。フローチャート１０００は、フローチャート８００で開示されたステップ８０８に対応し得る。しかし、ステップ８０８は、フローチャート１０００で示される実施形態に限定されない。フローチャート１０００では、ＪＰＧ、ＴＩＦＦ、ＰＮＧ等、ＭＦＰ１０４がすでに印刷できるサポートされる画像フォーマットの一つでラスター画像が生成される。この機能は、モバイルデバイス１１０等のモバイルデバイスからＭＦＰ１０４に、写真のような画像を印刷する場合に特に好ましいであろう。モバイルデバイス１１０は、ＭＦＰ１０４によって認識されない画像フォーマットで印刷ジョブを送信してもよい。ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、印刷ジョブを遮断してサポートされる画像フォーマットに変換する必要があると判定する。
【０１１０】
ステップ１００２では、印刷ジョブのためにファイルのバッファを作成する。ファイルのバッファは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２のメモリ３０４に作成されてもよい。ファイルのバッファは、印刷ジョブが処理されている間、当該印刷ジョブを一時的に記憶する。
【０１１１】
ステップ１００４では、ラスター画像フォーマットのヘッダを生成する。ヘッダは、ｐｒｉｎｔｃａｓｔの印刷ジョブパラメータが挿入される上記で開示された前例のヘッダに似ている。ステップ１００６では、着信ＰＤＬの印刷ジョブをＲＩＰファームウェア３２２によって処理する。
【０１１２】
ステップ１００８では、生データのバンドをグラフィックス・レンダリング・コンポーネント３３２によって生成する。ステップ１０１０では、また、グラフィックス・レンダリング・コンポーネント３３２によって生成された各バンドをラスター画像フォーマットに変換もする。ステップ１０１０はｐｒｉｎｔｃａｓｔエンジン３２４によって遂行することができる。
【０１１３】
ステップ１０１２では、変換されたバンドでラスター画像のディメンジョンを更新する。ステップ１０１４では、ラスター画像に対するその他のファイルのプロパティを最終決定する。ステップ１０１６では、印刷ジョブのファイルのバッファを終了して印刷ジョブを通信レイヤ３２８に転送する。
【０１１４】
図１１は、本開示の実施形態に係るネイティブフォーマットの印刷ジョブを生成するためのフローチャート１１００を示す。フローチャート１１００は、フローチャート８００で開示されたステップ８１０に対応し得る。しかし、ステップ８１０は、フローチャート１１００で示される実施形態に限定されない。本開示の実施形態では、ｐｒｉｎｔｃａｓｔが生成した印刷ジョブを、ＭＦＰ１０４向けのネイティブフォーマット又はＭＦＰのネイティブフォーマットのバンド毎に圧縮されたラスター画像データを含む印刷ジョブとして特定するために新しいＰＤＬを生成してもよい。ＭＦＰのネイティブフォーマットは、印刷ジョブの主要なコンテンツのための圧縮されたバイナリフォーマットを指すことがある。主要なコンテンツはｐｒｉｎｔｃａｓｔが生成したラスター画像であってもよい。ラスター画像は、ＭＦＰ１０４のエンジンファームウェアで直接処理することができるレンダリングされた文書のページのバンド毎に圧縮されたデータ表現である。
【０１１５】
ステップ１１０２では、印刷ジョブのためにファイルのバッファを作成する。ファイルのバッファは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２のメモリ３０４に作成されてもよい。ファイルのバッファは、印刷ジョブが処理されている間、当該印刷ジョブを一時的に記憶する。
【０１１６】
ステップ１１０４では、ＰＤＬのジョブ、文書、及びページのヘッダを生成する。ヘッダは、印刷ジョブがすでにＲＩＰファームウェア３２２によって印刷用にフォーマットされてしまっていることをＭＦＰ１０４に伝えるｐｒｉｎｔｃａｓｔの印刷ジョブのパラメータと併せて、上記で開示されたフォーマットにマッチしてもよい。ステップ１１０６では、着信印刷ジョブをＲＩＰファームウェア３２２によって処理する。印刷ジョブは、上記で開示したように、ＰＤＬインタープリター３３０によって処理することができる。
【０１１７】
ステップ１１０８では、グラフィックス・レンダリング・コンポーネント３３２によって生データのバンドを生成する。ステップ１１１０では、データの生成された各バンドをネイティブフォーマットで記憶することもできる。データのバンドは、文書のページの表現であるバイナリデータを表してもよい。ステップ１１１２では、データのバンドを有する印刷ジョブに対するファイルのプロパティを最終決定する。ステップ１１１４では、印刷ジョブのファイルのバッファを終了して印刷ジョブを通信レイヤ３２８に転送する。
【０１１８】
図１２は、本開示の実施形態に係るサードパーティのＰＤＬに印刷ジョブを翻訳するためのフローチャート１２００を示す。フローチャート１２００は、フローチャート８００で開示されたステップ８１２に対応し得る。しかし、ステップ８１２は、フローチャート１２００で示される実施形態に限定されない。サードパーティのＰＤＬへの翻訳は、ＭＦＰ１０４が、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２によって即座にサポートされないＰＤＬをサポートする場合に好ましいであろう。当該ＰＤＬは、別の製造業者又はエンティティからのサードパーティのＰＤＬであってもよい。従って、ＭＦＰ１０４はｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２と同じ製造業者ではないかもしれない。このような場合、サードパーティのＰＤＬはｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２に利用可能にされてもよい。従って、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２は、着信ＰＤＬの印刷ジョブをＭＦＰ１０４によってサポートされるサードパーティのＰＤＬに翻訳することができる。
【０１１９】
ステップ１２０２では、印刷ジョブのためにファイルのバッファを作成する。ファイルのバッファは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２のメモリ３０４に作成されてもよい。ファイルのバッファは、印刷ジョブが処理されている間、当該印刷ジョブを一時的に記憶する。
【０１２０】
ステップ１２０４では、サードパーティのＰＤＬの印刷ジョブ、文書及びページのヘッダを生成する。ステップ１２０６では、印刷ジョブにジョブ、文書及びページのチケットも付加することができる。これらのステップでは、受信された印刷ジョブからのデータによって追加されるサードパーティのＰＤＬの印刷ジョブ用のヘッダがフォーマットされる。ヘッダは、印刷ジョブがすでにＲＩＰファームウェア３２２によって印刷用にフォーマットされてしまっていることをＭＦＰ１０４に伝えるｐｒｉｎｔｃａｓｔの印刷ジョブパラメータと併せて、上記で開示されたフォーマットにマッチしてもよい。
【０１２１】
ステップ１２０８では、サードパーティのＰＤＬコマンドを生成する。ステップ１２１０では、ステップ１２０８と併せて、着信ＰＤＬコマンドをサードパーティのＰＤＬコマンドに翻訳する。ｐｒｉｎｔｃａｓｔエンジン３２４は、ＭＦＰ１０４とそれに関連付けられたファームウェアから、あるいはアップグレードされたから印刷デバイスからサードパーティのＰＤＬコマンドを取得することができる。次に、ｐｒｉｎｔｃａｓｔエンジン３２４は、着信コマンドを対応するサードパーティのコマンドに関連付けて、着信コマンドをサードパーティのコマンドに翻訳する。これらの関連付けは、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・デバイス１０２内に記憶され、ｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム３００によってアクセス可能であってもよい。
【０１２２】
ステップ１２１２では、サードパーティのＰＤＬの印刷ジョブ、文書、及びファイルの全てのページのフッターデータを生成する。フッターは、翻訳されたＰＤＬコマンド及び文書のページのバンド毎に圧縮されたデータの後で作成されてもよい。ステップ１２１４では、ファイルのバッファを終了して、ＭＦＰ１０４へのダウンロードのために翻訳されたサードパーティのＰＤＬの印刷ジョブを通信レイヤ３２８に転送する。
【０１２３】
このように、ＭＦＰ装置に装着されたあるいは接続されたデバイスは外部のデバイス及びコンピュータからネットワークを介して印刷ジョブを受信することができる。印刷ジョブはフォーマットや種類が異なる場合がある。ｐｒｉｎｔｃａｓｔエンジンは、ｐｒｉｎｔｃａｓｔデバイスのｐｒｉｎｔｃａｓｔ印刷コンピューティング・システム内で処理するために印刷ジョブを遮断するかどうかを判定する。そうする場合には、処理された印刷ジョブはＭＦＰのエンジンに直接向けられてもよい。
【０１２４】
当業者には理解されるように、本発明はシステム、方法、及びコンピュータ・プログラム製品として具現化することができる。その結果、本発明は、全くのハードウェア実施形態、全くのソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、及び、本明細書において、すべて、包括的に「回路」、「モジュール」、又は「システム」と呼ばれることがある、ソフトウェア態様とハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明は、媒体に具現化されたコンピュータ使用可能なプログラムコードを有する表現のうち、あらゆる物理的な媒体において具現化されたコンピュータ・プログラム製品という形を取ることができる。
【０１２５】
一以上のコンピュータ使用可能又はコンピュータ読み込み可能な媒体の任意の組み合わせを使用することができる。コンピュータ使用可能又はコンピュータ読み込み可能な媒体は、例えばこれに限定されないが、電子的、磁気的、光学的、電磁気的、赤外線式、又は半導体のシステム、装置、機器、及び伝播媒体であってもよい。コンピュータ読み込み可能な媒体のより具体的な例（非網羅的リスト）には、以下があげられる。すなわち、１本以上の線を有する電気的接続、携帯型コンピュータディスク、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ），読み出し専用メモリ（ＲＯＭ），消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光学的記憶装置、インターネット若しくはイントラネットをサポートする伝送媒体等の伝送媒体、及び磁気記憶装置である。コンピュータ使用可能又はコンピュータ読み込み可能な媒体は用紙又はプログラムが印刷されるその他の適切な媒体でもよいことに留意されたい。というのは、プログラムは、例えば、用紙又はその他の媒体の光学的走査によって電子的に取り込まれ、次に、コンパイルされ、解釈され、あるいはそうでなければ、必要に応じて適切な方法で処理され、次にコンピュータのメモリに記憶されるからである。
【０１２６】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語又は同様のプログラミング言語等の従来の手続き型プログラミング言語を含む一以上のプログラミング言語の任意の組み合わせで書くことができる。プログラムコードは、スタンドアローンのソフトウェアパッケージとして、ユーザのコンピュータで全体的に、又はユーザのコンピュータで部分的に、ユーザのコンピュータで部分的に、又は遠隔のコンピュータで部分的に、及び遠隔のコンピュータ又はサーバで全体的に実行してもよい。後者のシナリオでは、遠隔のコンピュータは、ローカルエリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含むあらゆる種類のネットワークを介してユーザのコンピュータに接続されてもよい、あるいは外部のコンピュータ（例えば、インターネットサービスプロバイダを用いてインターネットを介して）に接続されてもよい。
【０１２７】
本発明は、方法、装置（システム）及び本発明の実施形態に係るコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明されている。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図のブロックの組み合わせは、コンピュータ・プログラムの指示によって実施することができることは理解されよう。これらのコンピュータ・プログラムの指示は、コンピュータ又はその他のプログラマブルデータ処理装置のプロセッサにより実行される指示が、フローチャート及び／又はブロック図のブロック及びブロック群で規定される機能／動作を実施するための手段を生成するように汎用コンピュータ、専用コンピュータ、又はその他のプログラマブルデータ処理装置のプロセッサに提供されて、機械を製造する。
【０１２８】
図のフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータ・プログラム製品の可能な実施に関するアーキテクチャ、機能性、及び動作を例示している。この関連で、フローチャート及びブロック図の各ブロックは、モジュール、セグメント、又はコードの一部を表しており、また、規定された論理機能を実施するための一以上の実行可能な指示から成る。また、代替の実施の中には、ブロックに記載された機能は、図に記載された順序から外れて実行されることがあることに留意されたい。例えば、連続して示される２つのブロックが、実際には、ほとんど同時に実行される場合があり、あるいは、ブロック群が、関連する機能性次第で、逆順に実行される場合もある。また、ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図のブロック群の組み合わせは、規定された機能又は動作を実行する専用ハードウェアベースシステムによって、及び専用ハードウェアとコンピュータの指示の組み合わせよって実行され得ることにも留意されたい。
【０１２９】
本明細書で使用される技術は特定の実施形態を説明することのみが目的であり、本発明を限定することを意図していない。本明細書で使用されるように、単数形「ａ」、「ａｎ」、及び「ｔｈｅ」は、文脈上で別段明確に示していない限り、複数形も同様に含むことを意図している。さらに、用語「含む（ｃｏｍｐｒｉｓｅ）」及び／又は「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」は、本明細書で使用される場合、記述された機能、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を明示するが、一以上の他の機能、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらのグループの存在又は追加を排除するものではないことは理解されよう。
【０１３０】
実施形態は、コンピュータのプロセス、コンピューティング・システムとして、あるいはコンピュータ読み取り可能な媒体のコンピュータ・プログラム製品等の製品として実施することができる。コンピュータ・プログラム製品は、コンピュータシステムによって読み取り可能で、かつコンピュータのプロセスを実行するためのコンピュータ・プログラムの指示を符号化するコンピュータ記憶媒体であってもよい。アクセスされた場合、上記に開示された機能を実行するために、指示はプロセッサに他のコンポーネントをイネーブルさせる。
【０１３１】
下記の請求項における、機能要素に加えて、すべての手段又はステップの対応する構造、材料、動作、及び同意義物は、具体的に請求されている他の請求要素と一緒に機能の実行をするためのあらゆる構造、材料又は動作を含むことが意図されている。本発明に関する記載は、例示及び説明の目的で提示してきたが、開示された形態で本発明を網羅あるいは限定する意図ではない。本発明の範囲と主旨から逸脱することなく多くの変更及び変形ができることは、当業者にとって明らかであろう。本発明と実用的応用の本質を最もよく説明するために、そして本発明を当業者が理解できるようにするために、考えられる特定の用途に適した様々な変更がされた実施形態について選択して説明されている。
【０１３２】
開示されたネットワーク又はシステムの一以上の部分は、情報及びデータを交換することが可能なネットワークに接続された一以上のＭＦＰシステムに渡って分散されてもよい。ＭＦＰシステムの様々な機能及びコンポーネントが複数のクライアントのコンピュータ・プラットフォームに渡って分散され、あるいは分散システムの一部としてタスクを実行するように構成されてもよい。これらのコンポーネントは、実行可能で、プロトコルを用いてネットワークを介して通信できる中間コード又は解釈済コードであってもよい。コンポーネントは、ネットワーク内でコンポーネントを特定するために特定のアドレス又はその他の指示子を有してもよい。
【０１３３】
本発明の主旨及び範囲を逸脱することなく開示に対して様々な変更ができることは、当業者にとって明らかであろう。従って、変更が請求項とその同意義物の範囲に入ることを条件として、本発明が上記で開示された変更と変形を含むように意図されている。
【符号の説明】
【０１３４】
１００        システム
１０２        デバイス
１０２Ｘ        デバイス
１０２Ｙ        デバイス
１０４        ＭＦＰ
１０６        エンジン
１０８        ネットワーク
１１０        ＭＯＢ
１１２        コンピュータ
１１４        サーバ
１１６        クラウドストレージ
１２０        ＭＦＰ
１２２        無線又は有線接続
【図１】
2019149146.tif 000003
【図２】
2019149146.tif 000004
【図３】
2019149146.tif 000005
【図４】
2019149146.tif 000006
【図５】
2019149146.tif 000007
【図６】
2019149146.tif 000008
【図７】
2019149146.tif 000009
【図８】
2019149146.tif 000010
【図９】
2019149146.tif 000011
【図１０】
2019149146.tif 000012
【図１１】
2019149146.tif 000013
【図１２】
2019149146.tif 000014
【手続補正書】
【提出日】平成31年4月16日(2019.4.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークに接続された画像形成装置で外部のデバイスからの文書を印刷するための印刷コンピューティング・デバイスであって、
前記ネットワークを介して受信された印刷ジョブの予定を立てるための印刷ジョブマネージャーと、
前記印刷ジョブがページ記述言語（ＰＤＬ）の印刷ジョブを含むかどうか判定するためのエンジンと、
前記印刷ジョブマネージャーからの前記ＰＤＬの印刷ジョブを処理するためのＰＤＬインタープリターとグラフィックス・レンダリング・コンポーネントを含むラスター画像処理（ＲＩＰ）ファームウェアと、
前記処理されたＰＤＬの印刷ジョブを前記接続された画像形成装置にダウンロードするための通信レイヤと、
を備える印刷コンピューティング・デバイス。
【請求項２】
請求項１に記載の印刷コンピューティング・デバイスであって、さらに、
電源を備える印刷コンピューティング・デバイス。
【請求項３】
請求項２に記載の印刷コンピューティング・デバイスであって、さらに、
前記電源を前記画像形成装置に接続するためのコネクタを備える印刷コンピューティング・デバイス。
【請求項４】
請求項１乃至３のいずれか１項に記載の印刷コンピューティング・デバイスであって、さらに、
オペレーティングシステムを備える印刷コンピューティング・デバイス。
【請求項５】
請求項１乃至４のいずれか１項に記載の印刷コンピューティング・デバイスであって、
前記エンジンは、前記画像形成装置に対応する規則に従って前記ＰＤＬの印刷ジョブを遮断するように構成されている印刷コンピューティング・デバイス。
【請求項６】
請求項１乃至５のいずれか１項に記載の印刷コンピューティング・デバイスであって、
前記エンジンは、前記画像形成装置に対応する規則に従って前記ＰＤＬの印刷ジョブを前記通信レイヤにパススルーするように構成されている印刷コンピューティング・デバイス。
【請求項７】
請求項１乃至６のいずれか１項に記載の印刷コンピューティング・デバイスであって、さらに、
前記ＰＤＬの印刷ジョブを記憶するためのファイルのバッファを有するメモリを備える印刷コンピューティング・デバイス。
【請求項８】
画像形成装置のために、ネットワークを介して外部のデバイスに接続されている印刷コンピューティング・デバイスで印刷ジョブを処理するための方法であって、
前記外部のデバイスから受信された印刷ジョブがページ記述言語（ＰＤＬ）の印刷ジョブを含むかどうかエンジンを用いて判定する工程と、
前記印刷コンピューティング・デバイス内のラスター画像処理（ＲＩＰ）ファームウェアを用いて前記ＰＤＬの印刷ジョブを処理するかどうか判定する工程と、
前記ＲＩＰファームウェアを用いて前記ＰＤＬの印刷ジョブを処理する工程と、
前記画像形成装置へのダウンロードのために前記処理されたＰＤＬの印刷ジョブを通信レイヤに送信する工程と、
を備え、
前記処理されたＰＤＬの印刷ジョブは、前記画像形成装置による印刷の準備ができたフォーマットになっている方法。
【請求項９】
請求項８に記載の方法であって、
判定する工程は、前記ＰＤＬの印刷ジョブであるかどうかを判定するために前記印刷ジョブのヘッダを分析する工程を含む方法。
【請求項１０】
請求項８又は９に記載の方法であって、さらに、
前記画像形成装置に対応する規則に従って印刷コンピューティング・デバイス内の前記エンジンによって前記ＰＤＬの印刷ジョブを遮断する工程を備える方法。
【請求項１１】
請求項８乃至１０のいずれか１項に記載の方法であって、さらに、
前記ＰＤＬの印刷ジョブ向けの前記フォーマットを判定する工程を備え、
前記フォーマットは、前記画像形成装置によってサポートされている方法。
【請求項１２】
請求項８乃至１１のいずれか１項に記載の方法であって、
前記処理する工程は、前記ＰＤＬの印刷ジョブを前記画像形成装置によってサポートされるネイティブＰＤＬに翻訳する工程を含む方法。
【請求項１３】
請求項８乃至１２のいずれか１項に記載の方法であって、
前記処理する工程は、前記画像形成装置によってサポートされる画像フォーマットで前記処理されたＰＤＬの印刷ジョブを生成する工程を含む方法。
【請求項１４】
請求項８乃至１３のいずれか１項に記載の方法であって、
前記処理する工程は、前記画像形成装置によってサポートされるネイティブフォーマットで前記処理されたＰＤＬの印刷ジョブを生成する工程を含む方法。
【請求項１５】
請求項８乃至１４のいずれか１項に記載の方法であって、
前記処理する工程は、前記画像形成装置によってサポートされるサードパーティのＰＤＬに前記ＰＤＬの印刷ジョブを翻訳する工程を含む方法。
【請求項１６】
印刷ジョブを画像形成装置に送信するために、外部のデバイスを有するネットワーク内の前記画像形成装置と共に印刷コンピューティング・デバイスを使用するための方法であって、
前記印刷コンピューティング・デバイス内の印刷ジョブマネージャーで印刷ジョブを受信する工程と、
前記印刷ジョブマネージャーによって予定を立てられた場合には、エンジンを用いて前記印刷ジョブのヘッダを分析する工程と、
前記ヘッダに従って、前記印刷ジョブがＰＤＬの印刷ジョブを含むかどうかを判定する工程と、
前記画像形成装置に基づき前記エンジンによって前記ＰＤＬの印刷ジョブ向けのフォーマットを判定する工程と、
前記印刷コンピューティング・デバイス内のラスター画像処理（ＲＩＰ）ファームウェアを用いて前記フォーマットに従って前記ＰＤＬの印刷ジョブを処理する工程と、
前記印刷コンピューティング・デバイス内の通信レイヤを用いて前記画像形成装置に前記処理されたＰＤＬの印刷ジョブをダウンロードする工程と、
を備える方法。
【請求項１７】
請求項１６に記載の方法であって、さらに、
前記処理されたＰＤＬの印刷ジョブのために少なくとも一つの印刷ジョブパラメータを生成する工程を備える方法。
【請求項１８】
請求項１７に記載の方法であって、
前記少なくとも一つの印刷ジョブパラメータは、前記画像形成装置によって受信された場合には、前記ＰＤＬの印刷ジョブのＲＩＰファームウェア処理が完了していることを示す方法。
【請求項１９】
請求項１７又は１８に記載の方法であって、
前記少なくとも一つの印刷ジョブパラメータは、モードのジョブパラメータ又はジョブ識別のジョブパラメータを含む方法。
【請求項２０】
請求項１６乃至１９のいずれか１項に記載の方法であって、さらに、
前記エンジンによって指示された場合には、前記印刷ジョブを前記通信レイヤまで通過させる工程を備える方法。
【外国語明細書】
PRINTING COMPUTING DEVICE AND METHOD FOR OPERATING A MULTI-FUNCTION PRINTING DEVICE
FIELD
[0001]       The present invention relates to a portable device having a page description language and raster image processor system that connects to a multi-functional printing device to provide additional capabilities and functionalities.
BACKGROUND
[0002]       Printers and associated equipment may have slower upgrade cycles and retain legacy printer engines. The initial high costs of printer engines result in older printer engines being kept longer in offices even if not used. There is less demand for newer printer engines or other features. Further, several months may pass between product releases due to development issues in hardware or software. Moreover, the cost of fixing firmware issues or doing firmware upgrades may be costly. Not only in terms of hardware replacements or software updates, but also with technicians visiting the customers to perform these actions.
SUMMARY
[0003]       A printing computing device for printing documents from an external device at a multi-function printing (MFP) device attached to a network is disclosed. The printing computing device includes a print job manager to schedule a print job received over the network. The printing computing device also includes an engine to determine whether the print job is a page description language (PDL) print job. The printing computing device also includes a raster image processing (RIP) firmware to process the PDL print job from the print job manager. The RIP firmware comprises a PDL interpreter and a graphics rendering component.  The printing computing device also includes a communication layer to download the processed PDL print job to the attached MFP device.
[0004]       A method for processing a print job at a printing computing device for a MFP device is disclosed. The printing computing device is connected to an external device through a network. The method includes determining whether a print job received from the external device is a PDL print job using an engine.  The method also includes determining whether to process the PDL print job using a raster image processing (RIP) firmware within the printing computing device. The method also includes processing the PDL print job using the RIP firmware. The method also includes sending the processed PDL print job to a communication layer for download to the MFP device. The processed PDL print job is in a format ready for printing by the MFP device.
[0005]       A method for using a printing computing device with a MFP device in a network having an external device to send print jobs to the MFP device is disclosed. The method includes receiving a print job at a print job manager within the printing computing device. The method also includes analyzing a header of the print job using an engine when scheduled by the print job manager. The method also includes determining whether the print job is a PDL print job according to the header.  The method also includes determining a format for the PDL print job by the engine based on the MFP device. The method also includes processing the PDL print job according to the format using a RIP firmware in the printing computing device. The method also includes downloading the processed PDL print job to the MFP device using a communication layer within the printing computing device.
BRIEF DESCRIPTION OF THE FIGURES
[0006]       Various other features and attendant advantages of the present invention will be more fully appreciated when considered in conjunction with the accompanying drawings.
Figure 1 illustrates a block diagram of a system for performing printing operations using a printing computing device according to the disclosed embodiments;
Figure 2 illustrates a block diagram of components of the MFP used in conjunction with the printing computing device according to the disclosed embodiments;
Figure 3 illustrates a block diagram of the components for the printing computing device according to the disclosed embodiments;
Figure 4 illustrates a block diagram of the components for use with mobile applications system services according to the disclosed embodiments;
Figure 5 illustrates a flowchart for configuring a printing computing device when connected to a MFP according to the disclosed embodiments;
Figure 6 illustrates a flowchart for processing a print job or a printcast command using the printing computing device according to the disclosed embodiments;
Figure 7 illustrates a flowchart for processing a print job on a MFP using a printing computing device according to the disclosed embodiments;
Figure 8 illustrates a flowchart for processing a PDL print job in the printing computing device according to the disclosed embodiments;
Figure 9 illustrates a flowchart for translating a PDL print job to native PDL using the printing computing device according to the disclosed embodiments;
Figure 10 illustrates a flowchart for generating a raster image in a supported image format from a print job using the printing computing device according to the disclosed embodiments;
Figure 11 illustrates a flowchart for generating a print job in a native format using the printing computing device according to the disclosed embodiments; and
Figure 12 illustrates a flowchart for translating a print job to a third-party PDL using the printing computing device according to the disclosed embodiments.
DETAILED DESCRIPTION
[0007]       Reference will now be made in detail to specific embodiments of the present invention. Examples of these embodiments are illustrated in the accompanying drawings. Numerous specific details are set forth in order to provide a thorough understanding of the present invention. While the embodiments will be described in conjunction with the drawings, it will be understood that the following description is not intended to limit the present invention to any one embodiment. On the contrary, the following description is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the appended claims. Numerous specific details are set forth in order to provide a thorough understanding of the present invention.
[0008]       The disclosed embodiments include a printing computing device having a page description language (PDL) or raster image processor (RIP) system. The printing computing device may be an external computing device with a computer processing unit, a memory, and an operating system. The printing computing device also includes connectivity interfaces to connect to existing printer devices. It also implements networking capability to advertise itself as another printer device on a network.
[0009]       The term of printing computing device may refer to a portable device that is attached to a MFP or any other device having the features disclosed below. The term “printcast” also may be used within the present specification to refer to the printing computing device, such as a printcast printing computing device or printcast computing device. The printing computing device also may be known as a portable device, such as a portable printing computing device or a portable printing computing system.
[0010]       The disclosed printcast printing computing device supports connectivity interfaces with the printer device and new PDL technologies. It also receives firmware upgrades from servers for performing engine firmware upgrades or maintenance. When connected, the printcast printing computing device detects native PDLs supported in the printer device and provides a pass-through for those PDLs. The printcast printing computing device may translate unsupported PDL to native PDL, or basic raster formats, like JPEG/TIFF supported by the printer engine. This feature allows compatibility with any printer, even those from other manufacturers.
[0011]       The printcast printing computing device also may override engine firmware components if the PDL RIP firmware in the device is more “up-to-date” and includes new features missing on the printer engine. It also helps test a firmware upgrade before it is installed as a final firmware upgrade to the engine. Dumb printers may be developed with the RIP override feature such that RIP functionality exists and operates externally of the printer. The printcast printing computing device also may host imaging applications that receive images or data from mobile applications, web applications, or desktop devices to print to the printer engine. The printcast printing computing device may register to enterprise printer management tools for device manageability.
[0012]       The existing printer driver and its associated print queue may still be available for use as normal. In other words, if a user selects the print queue associated with the printer device, then the user will have the same printer features and capabilities as provided by the legacy printer engine and printer driver for the print queue. A print queue, with a corresponding printer driver for the printcast printing computing device will appear as a printer device to allow the new functionalities and capabilities to be added onto the legacy or third-party printer devices. If the user selects the printcast printing computing device print queue as the destination for a print job, then the new features that are not necessarily present or unsupported in the printer engine but supported by the printcast computing device may be available to the user. The user can access the new printer features that the printcast printing computing device can perform and print using the printer engine.
[0013]       In another embodiment, the print queue or printer driver, which normally has a printer port configured to point to an MFP or printer, may be configured to have a printer port that points, instead, to a printcast printing computing device. It is for technical accuracy to ensure that the disclosed embodiments support printing from the printer driver to the printcast device. A printer port, such as the one in a WindowsTM Operating System, is managed by a port monitor and serves as a connection between the printer driver or print queue to a printer. The printer port also may be the means of connection between the printer driver or print queue and the printcast printing computing device. In this configuration, the printer driver, through the port configured as the IP address of the printcast printing computing device, would send the print driver generated print job to the networked printcast printing computing device. In the configuration, the user will be able to take advantage of the printer driver features and, at the same time, apply and take advantage of the printcast printing computing device features. This feature also implies that any printer driver may be pointed and associated with the networked printcast printing computing device.
[0014]       Definitions:
MFP- Multi-Function (or Functional) Printer or Printing Device.
PDL- Page Description Language, a type of programming language that describes the document or pages in a print job. Examples of PDLs are Printer Command Language (PCL) 5, PCLXL, or PCL 6, and PostScript. Portable Document Format (PDF) and XML Paper Specification (XPS) also belong to this group. Image formats, such as JPG and TIFF, which also can be printed, are special cases that are handled by the PDL.
RIP- Raster Image Processor, a firmware component that includes PDL interpreters. This feature is disclosed in greater detail below.
Print File, Print Job, or Test File- A computer file that contains PDL commands and is raw printable data for the MFP. A print job is the output of the printer driver. It is a binary representation in one of the PDL formats, such as PCL, PDF, or XPS.
Graphics Rendering Component- An internal component in the RIP firmware that translates the PDL commands or data into binary data that that MFP engine can understand. This is similar to machine language to which programming languages are translated so that computing devices can understand. The binary data is such that the Graphics Rendering Level will be understood by the hardware and converted to actual drawing or pixels on the paper. This component is disclosed in greater detail below.
GEU- Graphics Execution Unit, a hardware component at the engine that executes the Orderlist generated from the Graphics Rendering Component to create a raster representation of the print job or document.
Printer Driver- A device driver in WindowsTM or other operating systems that translates a document into a print job.
Graphics Orderlist- A binary data representation to which PDL commands are translated by the Graphic Rendering Component. Graphics Orderlists are low-level graphics instructions that the MFP hardware understands and processes to translate to actual markings on a page. Like machine language for a computer, the Graphics Orderlist is a language that the MFP will understand.
Band Data- A row of binary data of results from the processing of the Graphics Orderlist. It appears like a pixmap or bitmap image representation of the page. A page consists of rows of band data. The size of each one may be the same, such as 128 bytes. In some embodiments, the height of each band may be dynamic. The width may be the width of the page to be rendered.
Dumb Printer- An idea of a printer engine that does not have RIP firmware. Raster image processing is performed external of the printer. The printer receives fully rendered pages in either graphics orderlist form or raster form (band data) that the printer engine can process for actual markings on the paper.
[0015]       The disclosed embodiments may add new PDL technologies to legacy or third-party MFPs. This feature may extend the life of older printer engines as opposed to placing the printer engines or MFPs into storage or the trash. Many companies hesitate to get rid of older printers and keep them. The printcast printing computing device allows one to keep and utilize the legacy printers. The disclosed embodiments also allow for the usage of third-party MFPs as part of the devices managed through the printcast printing device.
[0016]       The disclosed printcast printing computing device also may allow use of up-to-date RIP firmware to override legacy, older, or less-capable RIP firmware. This feature offers full RIP firmware functionality that can replace or override printer RIP firmware to utilize or configure dumb printers. The disclosed device also provides better performance than engine hardware components because portable computing devices would have up-to-date CPUs, more memory, and other components such as upgraded graphics processing units. It may add new capabilities like mobile application scan-to-print capabilities to regular printers (non-MFPs). The engine may be managed through information technology tools as opposed to hardware or software upgrades at the printer.
[0017]       The printcast printing technology embodied in the disclosed device may avoid several situations and problems for users of printers and MFPs. For example, engine issues would be by-passed when the MFP or printer engine includes obsolete firmware, a hardware bug, or a performance issue by printing through the printcast printing computing device disclosed herein. If a firmware upgrade needs to be done, the printcast printing computing device operating system or application can query or receive notification from the IT enterprise servers. Then, it can download the firmware and refresh the engine with the new firmware. This feature may save the company the cost of sending technicians to the field.
[0018]       When an enterprise environment only has older or third-party engines, the disclosed printing device can translate new PDLs or file formats and download a backward compatible print job to the older and third-party engines, especially when a user desires to print with one of the new PDL formats. Older and less capable printers will have additional use through the new technologies that the printing device can provide. Engine firmware and hardware become old or obsolete. Better hardware and firmware components are developed. After a certain amount of time, legacy printers and systems are not even supported. New networking and printing software technologies are developed faster than the rate of printer firmware and hardware development. Companies rarely upgrade the older engines to have the newer technologies. For example, older printer engines may not support the latest printing platform or protocols. Using the disclosed printing device, the legacy or third-party engines would be available without the need for significant upgrades.
[0019]       Because upgrades are provided through a printcast device, a cheaper alternative is provided to users. The disclosed embodiments may be less costly than new MFP engine hardware. Enterprise management tools will be able to manage even the legacy and third-party MFPs as part of a common set of devices with similar capabilities and features with the technologies provided in the printcast printing computing device. By hosting applications in the device with wifi and networking capabilities, it is possible to enable cloud support on engines, without the need to add those features on the engine firmware.
[0020]       Figure 1 depicts a block diagram of a system 100 for performing printing operations using a printcast printing computing device 102 according to the disclosed embodiments. The printcast printing computing device is also referred to as "printcast device" or "device."  System 100 may be an example of network architecture to illustrate how printcast device 102 is used in conjunction with MFP 104. As shown, printcast device 102 is a separate component that may attach to MFP 104. Printcast device 102 may be a USB device to engage a USB port on MFP 104.
[0021]       Printcast device 102 also connects to network 108 to communicate with other components within system 100, such as mobile device 110, computer 112, or server 114. As can be appreciated, system 100 may include many additional components that send tasks to MFP 104. Mobile device 110 may be a handheld or portable computing device, such as a smartphone, that sends files for processing by MFP 104. For example, mobile device 110 may send pictures to be printed on MFP 104. Computer 112 may be a desktop or laptop computer connected to network 108 to also utilize MFP 104. Server 114 may be a data storage device that provides upgrades to MFP 104. These upgrades may be software upgrades or patches for software or firmware components on MFP 104. Server 114 also may communicate with printcast device 102. Printcast device 102 and MFP 104 may send information to server 114 for storage. Mobile device 110, computer 112, and server 114 may run applications internally to perform printing and scanning operations. Cloud storage 116 may be internet or cloud based storage location.
[0022]       Printcast device 102 connects directly to engine 106 of MFP 104. It provides all of the new technologies such as new PDLs and mobile applications to be available for engine 106 and the users of MFP 104. As noted above, printcast device 102 may be a separate computing device that is attached to MFP 104. As a computing device with networking connectivity, printcast device 102 also may be organized as a cluster fleet of cooperating devices to make available new technologies throughout network 108, including support for older and third-party engines. Printcast device 102 may receive print job parts from other printcast printing computing devices, such as printcast devices 102X and 102Y, or printers, such as MFP 120, for remote processing. This feature assists busy printer engines or busy portable printing devices.
[0023]       In this scenario, existing printers may continue to receive print jobs from network 108 from many users. More users may be sending tasks to the same printing device, thereby making it a bottleneck for printing. Connected printcast device 102 would be so busy that it will not be able to immediately send jobs to connected printer engine 106. In some embodiments, it is possible to send the job to one or more printcast printing computing devices for remote processing. The job is returned to the originating printing device. The print job would be pre-processed or pre-rendered. Users will not have to wait longer to receive the printouts. Printcast device 102 includes the capability to divide and distribute complex print jobs with other portable printing computing devices.
[0024]       Printcast device 102 supports various connectivity features as an external but portable software, firmware, or device. The connectivity features include, but are not limited to, wifi, local area networks, NFC, parallel port, serial port, USB printer port, USB data port, Bluetooth, internet and the like. Further connectivity features to a printer, computer, both wireless and wired, can be added, integrated, and supported.
[0025]       Input data for printcast device 102 may be received from a connection 122, which may be wireless. For example, if printcast device 102 is a USB computing device, then the data would come through wireless or wired connection 122 connected to network 108. If printcast device 102 is a mobile computer, then data may come through input ports connected through a wireless or wired connection 122. Printcast device 102 also generates output data through its various connectivity ports. The connectivity ports may be a USB data port, a USB printer port, wifi, NFC, Bluetooth, TCP/IP, and the like. Printcast device 102 may connect to any input ports in MFP 104 and also may include wired, wireless, or direct connections.
[0026]       Printcast device 102 may be a USB computing device, an HDMI computing device, a Blackberry PiTM device, a personal computer, a mobile or smartphone device, a tablet, a mini personal computer, and the like. In some embodiments, it may be possible to integrate printcast device 102 inside MFP 104 because the printcast device includes functions that can be implemented entirely in software or firmware. Printcast device 102 may be MFP firmware component or an application residing and hosted in a flash memory area. The behavior of a locally hosted application or firmware component may function like printcast device 102, disclosed below, as long as it is upgradeable and provides the features disclosed below. The capabilities that the disclosed embodiments are aiming to provide can all be performed in any computing device that can be connected either by wire or wirelessly to any imaging device like MFP 104 or a printer engine.
[0027]       An example of MFP 104 architecture may be shown in Figure 2. The architecture shown in Figure 2 may apply to any multi-functional printer or image forming apparatus that scans documents to perform other functions, such as printing, storing, copying, and the like. Printcast device 102, as shown, is connected to engine 106, which, in turn, is connected to the other components of MFP 104.
[0028]       MFP 104 includes a computing platform 201 that performs operations to support these functions.  Computing platform 201 includes a computer processing unit (CPU) 202, an image forming unit 204, a memory unit 206, and a network communication interface 210. Other components may be included but are not shown for brevity. MFP 104, using computing platform 201, may be configured to perform various operations, such as scanning, copying, printing, receiving or sending a facsimile, or document processing. As such, MFP 104 may be a printing device or a multi-function peripheral including a scanner, and one or more functions of a copier, a facsimile device, and a printer. To provide these functions, MFP 104 includes printer components 220 to perform printing operations, copier components 222 to perform copying operations, scanner components 224 to perform scanning operations, and facsimile components 226 to receive and send facsimile documents. CPU 202 may issue instructions to these components to perform the desired operations.
[0029]       MFP 104 also includes a finisher 211 and one or more paper cassettes 212. Finisher 211 includes rotatable downstream rollers to move papers with an image formed surface after the desired operation to a tray. Finisher 211 also may perform additional actions, such as sorting the finished papers, binding sheets of papers with staples, doubling, creasing, punching holes, folding, and the like. Paper cassettes 212 supply paper to image the various components 220, 222, 224, and 226 to create the image formed surfaces on the papers. Paper cassettes 212 may include papers having various sizes, colors, composition, and the like. Paper cassettes 212 may be removed to refill as needed.
[0030]       Document processor input feeder tray 230 may be the physical components of MFP 104 to receive papers and documents to be processed. A document is placed on or in document processor input feeder tray 230, which moves the document to other components within MFP 104. The movement of the document from document processor input feeder tray 230 may be controlled by the instructions input by the user. For example, the document may move to a scanner flatbed for scanning operations. Thus, document processor input feeder tray 230 provides the document to scanner components 224. As shown in Figure 2, document processor input feeder tray 230 may interact with engine 106 to perform the desired operations.
[0031]       Memory unit 206 includes memory storage locations 214 to store instructions 215. Instructions 215 are executable on CPU 202 or other processors associated with MFP 104, such as any processors within components 220, 222, 224, or 226. Memory unit 206 also may store information for various programs and applications, as well as data specific to MFP 104. For example, a memory storage location 214 may include data for running an operating system executed by computing platform 201 to support the components within MFP 104.
[0032]       Memory unit 206 may comprise volatile and non-volatile memory. Volatile memory may include random access memory (RAM). Examples of non-volatile memory may include read-only memory (ROM), flash memory, electrically erasable programmable read-only memory (EEPROM), digital tape, a hard disk drive (HDD), or a solid-state drive (SSD). Memory unit 206 also includes any combination of readable or writable volatile memories or non-volatile memories, along with other possible memory devices.
[0033]       Computing platform 201 may host one or more processors, such as CPU 202. These processors are capable of executing instructions 215 stored at one or more memory storage locations 214. By executing these instructions, the processors cause MFP 104 to perform various operations. The processors also may incorporate processing units for specific purposes, such as application-specific integrated circuits (ASICs) and field programmable gate arrays (FPGAs). Other processors may be included for executing operations particular to components 220, 222, 224, and 226. In other words, the particular processors cause MFP 104 to act as a printer, copier, scanner, and a facsimile device.
[0034]       MFP 104 also includes an operations panel 208, which may be connected to computing platform 201. Operations panel 208 may include a display unit 216 and an input unit 217 for facilitating interaction with a user to provide commands to MFP 104. Display unit 216 may be any electronic video display, such as a liquid crystal display (LCD). Input unit 217 may include any combination of devices that allow users to input information into operations panel 208, such as buttons, a touch screen, a keyboard or keypad, switches, dials, and the like. Preferably, input unit 217 includes a touch-screen digitizer overlaid onto display unit 216 that senses touch to receive inputs from the user. By this manner, the user interacts with display unit 216. Printcast device 102 may be connected via operations panel 208 to engine 106.
[0035]       MFP 104 also includes network communication processing unit 218. Network communication processing unit 218 may establish a network communication, such as a wireless or wired connection with one or more other image forming apparatuses and a server in an image forming system. CPU 202 may instruct network communication processing unit 218 to transmit or retrieve information over a network using network communication interface 210.  As data is received at computing platform 201 over a network, network communication processing unit 218 decodes the incoming packets and delivers them to CPU 202. CPU 202 may act accordingly by causing operations to occur on MFP 104. CPU 202 also may retrieve information stored in memory unit 206, such as settings for MFP 104.
[0036]       MFP 104 also includes engine 106. Engine 106 may be a combination of hardware, firmware, or software components that act accordingly to accomplish a task. For example, engine 106 is comprised of the components and software to print a document. It may receive instructions from computing platform 201 after user input via operations panel 208. Alternatively, engine 106 may receive instructions from printcast device 102.
[0037]       Engine 106 manages and operates the low-level mechanism of the MFP engine, such as hardware components that actuate placement of toner onto paper. Engine 106 may manage and coordinate the half-toner, toner cartridges, rollers, schedulers, storage, input/output operations, and the like. The raster image processor (RIP) firmware that interprets the page description languages (PDLs) would transmit and send instructions down to the lower-level engine 106 for actual rendering of an image and application of the toner onto paper during operations on MFP 104.
[0038]       Figure 3 depicts a block diagram of the components for printcast device 102 according to the disclosed embodiments. Additional components may be implemented within printcast device 102. Printcast device 102 includes printcast printing computing system 300 that provides the functionality to enable the device to manage print jobs and interact with MFP 104 and engine 106. In some embodiments, printcast printing computing system 300 may be referred to as a printcast system. Printcast printing computing system 300 is disclosed in greater detail below.
[0039]       Printcast device 102 also includes components that may enable the device to stand alone as a computing device, such as processor 302 and memory 304. Processor 302 executes instructions and commands. It also instructs the other components to perform actions.  Memory 304 may store the instructions executed by processor 302.  Memory 304 also stores data and information for use by components within printcast device 102. Processor 302 and memory 304 may be connected by bus 390.
[0040]       Bus 390 also connects other components in printcast device 102 to processor 302 and memory 304. Operating system 306 is provided. Operating system 306 may be a mobile operating system that provides the software platform for other programs to run on printcast device 102. Operating system 306 is responsible for determining the functions and features available on printcast device 102. For example, operating system 306 allows printcast printing computing system 300 to run within printcast device 102.
[0041]       Printcast device 102 may include a power supply 308. In some embodiments, power supply 308 may be stand alone, such that printcast device 102 does not need to draw power from another source. In some embodiments, power supply 308 may obtain power from a connected device, such as MFP 104. Power supply 308 may use one or more connectors 310 to draw power. For example, if printcast device 102 is connected to a USB hub or port, then connectors 310 may be two wires within the USB interface to connect to power within MFP 104.
[0042]       Printcast device 102 also may receive and send data over network 108 as well as to the connected MFP 104. Input 312 and output 314 represent the capability to exchanges data, such as over wireless connection 122. Input 312 and output 314 also may include the wires through the USB cable to MFP 104 from printcast device 102, if applicable. Input 312 may include multiple input ports while output 314 may include multiple output ports. Input 312 and output 314 may receive commands and data from printcast printing computing system 300 as well as provide data when received from network 108.
[0043]       Printcast printing computing system 300 includes components that allow it to support connectivity with network 108 and provide the functions disclosed in greater detail to manage MFP 104 and engine 106. These components are shown in Figure 3.
[0044]       Print job manager 320 is a firmware component that receives print jobs from network 108 or any of the supported connectivity methods. Print job manager 320 also may receive print jobs from other printcast devices 102. It arranges the incoming data into unique print jobs. Print job manager 320 may identify each print job with a job identification (ID), a timestamp, user/owner IDs, and similar data for the purposes of job scheduling, document tracking, and job management purposes. After completing these tasks, print job manager 320 schedules the sending of the print jobs to MFP 104 and relays them down to RIP firmware 322.
[0045]       RIP firmware 322 is a full raster image processor that provides functionality to printcast printing computing system 300. RIP firmware 322 may provide all the capabilities of a RIP firmware in a printer engine except for the actual rendering on paper. The rendering may be done by engine 106 of MFP 104. RIP firmware 322 includes the following sub-components of PDL interpreter 330 and graphics rendering component 332. These are disclosed in greater detail below.
[0046]       PDL interpreter 330 performs the parsing and processing of the print jobs managed by print job manager 320. The page description languages supported by printcast printing computing system 300 and printcast device 102 are those that are newer versions or more up-to-date versions of the PDL interpreters already installed and supported by the firmware of engine 106. PDL interpreter 330 also may be a totally different, new, and unsupported PDL interpreter from the one installed for engine 106. In this latter scenario, PDL interpreter 330 is a new technology provided by printcast device 102. It may be a new XPS interpreter, a new PDF interpreter, a personalized print markup language (PPML) interpreter, or some future PDL processor. In some embodiments, printcast printing computing system 300 may have access to several PDL interpreters such that it calls on the one related to needs of MFP 104 and network 108.
[0047]       Graphics rendering component 332 is the second sub-component of RIP firmware 322. PDL interpreter 330 interacts with graphics rendering component 332 for the translation of PDL commands to generate a graphics order list. The graphics order list is a list of graphics orders. It is a low-level binary data similar to assembly language or computer machine language. The graphics orders are the actual configuration and drawing commands that may be executed and processed by engine 106.  Graphics rendering component 332 may produce a logical representation of the page for the document, which is a raster image or some other encoded representation. In some embodiments, graphics rendering component 332 may execute and process the graphics orderlist to generate several bands of data that can be downloaded to engine 106 of MFP 104 for final processing to put markings on the paper.
[0048]       Output from graphics rendering component 332 may be packaged in at least two ways to engine 106. One way may be the PDL print jobs translated so that the target MFP 104 or printer engine 106 can process. Another way may be a wrapped raster image in a new kind of print job that can be processed directly at MFP 104 or printer engine 106. The raster image is the binary data representation of the incoming print job after getting processed through PDL interpreter 330 and graphics rendering component 332. It is possible to generate a compressed raster image that can be downloaded to engine 106 that would allow MFP 104 to skip further RIP processing. The raster image may be directly processed for putting marking or ink onto the paper when printing. This action is disclosed in greater detail below.
[0049]       Printcast printing computing system 300 also includes printcast engine 324. Printcast engine 324 is a management mechanism for the main printcast printing computing system 300 features and functionalities. Printcast engine 324 communicates with printer drivers for the identification, settings, and capabilities of printcast device 102. It also advertises printcast device 102 as another print queue in the network. Printcast engine 324 also receives and processes print jobs from print job manager 320 and decides when to pass through the PDL print job or the processing of the PDL print job in RIP firmware 322. It also supports managing, launching, and coordinating with hosted mobile applications system service 326. Printcast engine 324 self-upgrades with a newer version from server 114 through network 108. Printcast engine 324 downloads and installs firmware upgrades from the connected imaging devices, such as MFP 104, if permitted and applicable.
[0050]       Printcast engine 324 may receive at least two types of data for print jobs. These print jobs may be called printcast command “print jobs” and PDL print jobs. The print jobs differ in what each one has printcast printing computing device 102 accomplish. Some may instruct printcast printing computing system 300 to perform specific operations while others just may send instructions to MFP 104. Printcast engine 324 determines the type of print job received and acts accordingly. The functions associated with each type of data are disclosed in greater detail below.
[0051]       A printcast command print job may be received from administrators, computers, devices or mobile devices connected to network 108. These commands may call on printcast printing computing device 102 to perform certain operations on printcast engine 324, which is also referred to as "print engine," or engine 106, such as upgrades and launches. Printcast printing computing system 300 will execute the operations. An upgrade command instructs printcast printing computing system 300 to perform a firmware upgrade and may have syntax relating to an upgrade path or the like. The path parameter may be optional and is for the path to firmware upgrade package. In other words, “path” directs printcast printing computing system 300 where to obtain the firmware upgrade package in system 100. If there is no “path” parameter, then printcast printing computing system 300 will look for the firmware upgrade package from a designated local server, such as server 114, an original equipment manufacturer (OEM) website, or safe internet/cloud storage 116. As a stand-alone printcast printing computing device 102, a new tool may be capable to perform firmware upgrades on connected imaging devices, such as MFP 104.
[0052]       Another command for printcast printing computing system 300 is for launching mobile application services. This command may have syntax of launch app_service_name. The parameter “app_service_name” is desired to determine the service application to launch. There may be several mobile application services that are developed and hosted on printcast printing computing device 102 using processor 302. Examples of launch commands may be launch scanner mobile service application or launch document converter service application.
[0053]       Other printcast commands may be developed, integrated, and implemented for printcast printing computing system 300. These commands may instruct printcast engine 324 to perform other printer engine management routines or launch other mobile application services. The launched mobile application services would interface with corresponding mobile application in external computing devices, such as smartphones, laptops, tablets, desktops, and the like. The external mobile applications will be able to perform the implied functionalities for processing external documents. In other words, the mobile applications act as printer software that cooperates with printcast printing computing device 102 to download or process a job on the connected MFP 104. This process is disclosed in greater detail below.
[0054]       Because printcast commands will be received through the same channels of PDL print jobs, printcast engine 324 must have a way to distinguish the print jobs from each other. Printcast commands, however, should be packaged to work within the current PDL print job framework so that they look like any other PDL print jobs. Thus, printcast commands may have a header section and trailer section that wrap the main printcast commands. The sections include header data and trailer data that identify the data segment as a special printcast command “print job” so that printcast engine 324 and printcast printing computing system 300 can act accordingly.
[0055]       For example, a possible printcast command “print job” may be:
255072696E744361737421 (header section)
Command [parameter]
255072696E74436173742121 (trailer section)
[0056]       The header data is an encoded start identifier, which, for this example, is “%PrintCast!” in hexadecimal numeric encoding. The trailer data is an encoded end identifier, which, for the example, is “%PrintCast!!” in hexadecimal numeric encoding. This feature may be enhanced and re-defined further to use other encoding, encryption, and formatting standards, such as the use of XML or HTML formatting. It also is possible to include more than one printcast command between the header and trailer sections. Printcast engine 324 may do a pre-parsing of the header data to identify whether the incoming print job data is a PDL print job or a printcast command print job. Some examples of printcast command operations may be as a firmware upgrade, a mobile scanning and print operation, or document conversion. These examples processes are disclosed in greater detail below.
[0057]       Printcast engine 324 also receives PDL print jobs from components within system 100. Print jobs are received, as scheduled, from print job manager 320. If the print job request is a regular print job, then printcast printing computing device 102 treats it like a normal print job would be treated at MFP 104, except with some differences. Printcast engine 324 may either process PDL print jobs locally in printcast device 102 through RIP firmware 322 or relay down, or pass-through, to MFP 104.
[0058]       Printcast printing computing system 300 also includes input/output and communication layer (hereinafter communication layer) 328, which may be an interface layer for management of connected devices, both input and output. This may be through device drivers, operating system 306, a TCP/IP interface, or other connectivity technologies. The input aspect is for networking connectivity by interfacing with print job manager 320 for the receipt of the print jobs, responding to queries for system capabilities, and coordinating and communicating between mobile applications system services 326 and external mobile application clients. The output aspect is for interfacing with the connected printing or imaging device, such as MFP 104 or engine 106. Communication layer 328 also transmits or downloads a rendered or pass-through print job within printcast printing computing system 300. Communication layer 328 may be connected to MFP 104 through a wired, wireless, or direction connection, shown as connectors 310 in Figure 3.
[0059]       Printcast printing computing system 300 also includes mobile applications system services 326. As fully functional computing device with operating system 306, memory 304, processor 302, and networking connectivity through input 312 and output 314, software services can be hosted, function, and operate in printcast device 102. Examples of categories or types of applications that can be launched by printcast printing computing system 300 are scanning software for printers that are not multi-functional, document conversion software, on-demand printing, or administrative applications. Administrative applications include one that can instruct printcast engine 324 to do firmware upgrade, reboot, reset, wake-up, and the like.
[0060]       A server-like system services component is integrated into printcast printing computing device 102, and managed through printcast engine 324. By interfacing with printcast engine 324, mobile applications system services 326 can run locally in printcast device 102, as shown in Figure 4. The applications of mobile applications system services 326 can have varied features like image processing, document conversion functionalities, document storage, user account management, and the like. Application interface (API) services are provided to clients that would be external to printcast device 102, such as components connected through network 108, or client applications 402. Client applications 402 may reside on mobile devices 110 or computers 112. As discussed above, client applications 402 may act as an extension to engine 106 via printcast engine 324 in that functionality is provided by the external applications to perform operations using the engine in MFP 104.
[0061]       MFP 104 receives the output data from printcast printing computing device 102. MFP 104 and engine 106 process the data like other incoming print jobs or communications from network 108. In some embodiments, no change on the hardware or firmware components of MFP 104 or engine 106 is required for upgrades as printcast device 102 provides the new features and capabilities to the existing device.
[0062]       It is possible to integrate technologies defined in the disclosed technology in order to enhance and improve the performance and processing efficiency of the interaction between MFP 104 and printcast printing computing system 300. For example, engine 106 of MFP 104 may have an upgraded firmware that communicates with a connected printcast device 102. All incoming print jobs that printcast device 102 will process can be formatted in a certain way that is compatible with the upgraded interaction and communication path. The print jobs also are processed more efficiently when received at MFP 104.
[0063]       Figure 5 depicts a flowchart 500 for configuring printcast printing computing device 102 when connected to MFP 104 according to the disclosed embodiments. Whenever printcast device 102 is connected to an imaging device, such as MFP 104, it may configure itself in order to determine and enable its features and capabilities. Printcast engine 324 may use the data about the connected imaging device to determine how it will function. Flowchart 500 shows the steps used to complete the configuration.
[0064]       Each MFP 104 comes with pre-installed engine firmware and other firmware. The firmware may be of a particular version at the time MFP 104 is brought on-line. The firmware components may be upgraded after MFP 104 is shipped. Moreover, all MFPs and devices become old or obsolete. Future versions of the firmware may include features, bug fixes, enhancements, and the like. The new upgrades may not be backward compatible with existing firmware on MFP 104. The upgrades are known to the MFP manufacturer and may be catalogued at the factory or other location. A mapping of firmware versions may be provided at the factory, for example, and then contained in a server or on the internet/cloud. It may be in a database and shared through queries using SQL connections and other methods. In other words, the firmware upgrades and associated information may be accessible at a storage location on network 108 by printcast device 102. Alternatively, it may be possible to package this data and include it when setting up printcast device 102, either as a resource file or statically linked with its software components.
[0065]       Step 502 executes by querying engine capabilities. Printcast printing computing system 300, and more specifically, printcast engine 324, can query for the mapping of firmware versions and associated data from a server, such as server 114, in order to determine what PDLs and technologies are enabled for MFP 104 and engine 106. It also may query what limitations, restrictions, concerns, and the like might apply to MFP 104. For example, printcast engine 324 queries for engine firmware versions, capabilities, and other relevant information in order to determine necessity for firmware upgrades or for determining what PDLs are supported on engine 106.
[0066]       In some embodiments, the data may be included in printcast printing computing device 102 as static data. The static data may be a separate resource file stored in memory 304 or can be statically linked with printcast printing computing system 300. Printcast engine 324 may query only server 114 for data that is newer than what is already included locally in printcast device 102. In other words, printcast engine 324 may determine whether data about MFP 104 also needs to be upgraded.
[0067]       Step 504 executes by determining engine parameters for engine 106 of MFP 104. Printcast engine 324 receives and processes data for its queries for engine restrictions, limitations, features, and other capabilities. With this data, printcast engine 324 effectively “knows” the capabilities, or lack thereof, of connected MFP 104. It may use this knowledge to provide and enable new features, enhancements, and upgraded capabilities and technologies to MFP 104.
[0068]       This step also may be referred to as defining rules and capabilities. Printcast engine 324 may define at least three rules and capabilities. These may be shown in steps 506-510. Step 506 executes by defining PDL pass-through support. PDL pass-through support is enabled for PDLs that are known to be working on MFP 104 and have no critical issues. Print jobs may pass through printcast printing computing system 300 as normal, and may even go directly to communication layer 328 for output to MFP 104. Newer firmware versions or upgrades are not detected.
[0069]       If the local PDL is known to have critical issues either in firmware or hardware, printcast engine 324 may intercept incoming print jobs with the compromised PDL. Printcast engine 324 processes the print jobs locally in printcast printing computing system 300 through RIP firmware 322. It then sends the print job to MFP 104 for processing. Though PDL pass-through support is enabled because MFP 104 includes the proper version of the local PDL, printcast engine 324 determines that the local PDL is corrupt, possibly due to ASIC, halftone, hard-drive, or ROM memory corruption and institutes this intercept mode. Printcast engine 324 may receive information about the local PDL from MFP 104.
[0070]       Step 508 executes by defining the PDL intercept mode by printcast engine 324. The PDL intercept mode is similar to what is defined above. The print job for a PDL is intercepted and processed by printcast printing computing system 300. It is not passed through to MFP 104. If a new version of PDL is available for print job processing that is better than what is installed on MFP 104, then printcast engine 324 will intercept the print jobs with the PDL. The print jobs are processed locally on printcast device 102. Once processing is complete, the print job is output to engine 106.
[0071]       Step 510 executes by optimizing for speed. If the rendering capabilities of engine 106 can be determined, then printcast engine 324 may enable generation, translation, or conversion of incoming print jobs to a format that is processed more efficiently on engine 106. For example, if printcast engine 324 determines that MFP 104 includes a version 2.3 of some compression and decompression algorithm in the application-specific integrated circuit (ASIC) of the MFP, then the printcast engine will inform RIP firmware 322 in printcast printing computing system 300 about such version. RIP firmware 322 would translate and convert applicable incoming print jobs not going through pass-through mode to generate the raster image representation of the pages in a format compliant to version 2.3 of the known compression and decompression algorithm in the ASIC of MFP 104.
[0072]       Other rules may be enabled or disabled in order to take advantage of the processing power and upgraded features in printcast printing computing device 102. Examples of these rules may be defining and enabling restricted user access. Some users may not be able to use MFP 104 and these rules may change over time. Printcast device 102 can enforce these rules using printcast engine 324. Another example may be enabling document storage permissions. Rules also may include defining and assigning color or monochrome printing access on MFP 104. In other words, rules that apply to what or who can access MFP 104 may be enabled using printcast device 102 according to the disclosed embodiments.
[0073]       Step 512 executes by enabling the features. Once printcast printing computing device 102 is configured and the rules are defined, it will apply and perform the rules as print jobs are received. Printcast engine 324 will treat print jobs accordingly. Printcast device 102 also may receive commands from administrators, such as pushed firmware upgrades. In this situation, a firmware upgrade may be received at printcast device 102. This may cause printcast engine 324 to move a local PDL from a pass-through parameter to an intercept mode one.
[0074]       Figure 6 depicts a flowchart 600 for processing a print job or a printcast command using printcast printing computing device 102 according to the disclosed embodiments. Flowchart 600 shows what happens if printcast device 102 receives data from another device within system 100. Preferably, an external device connected over network 108 sends the data to have some action performed, such as printing a document or asking printcast device 102 to perform a process. Step 602, therefore, executes by receiving a “print job” from an external, remote, or connected device or application. As disclosed above, printcast device 102 may be selected as a destination for the print job or action, like a printer or MFP 104.  The term “print job” is used but this refers to real PDL print jobs as well as printcast commands.
[0075]       Step 604 executes by scheduling the print job using print job manager 320. Print job manager 320 receives the print job request and schedules it accordingly. This is one reason all incoming requests are treated as “print jobs” in that they are scheduled as such. The jobs are processed in order. For example, printcast commands are not given preferential treatment over normal print jobs. Step 606 executes by receiving the print job at printcast engine 324 when it is scheduled for processing. Printcast engine 324 analyzes the print job to determine how it will be treated in printcast device 102.
[0076]       Step 608 executes by analyzing the header of the print job. As disclosed above, the print job may include a specific header that identifies it as a printcast command. The header data includes an encoded start identifier, such as “%PrintCast!” in hexadecimal form. This alerts printcast engine 324 that the print job actually includes a printcast command for printcast printing computing system 300. After the header is determined, step 610 executes by determining whether the print job includes a printcast command using printcast engine 324. In some embodiments, the print job can include a plurality of printcast commands.
[0077]       If step 610 is yes, then printcast engine 324 will process the print job as a printcast command. Printcast engine 324 will task components within printcast printing computing system 300 to perform the functionality specified in the command or launch applications within printcast printing computing system 300 to accomplish tasks. This process is disclosed in greater detail below by Figures 7-10.
[0078]       If step 610 is no, then printcast engine 324 will treat the print job as a normal PDL print job. Printcast engine 324 may determine the version of PCLXL or PDF interpreter already supported in engine 106 of MFP 104. With this information, printcast engine 324 may allow incoming PCLXL and PDF print jobs to pass-through and processed directly by MFP 104. If for any reason the version installed on engine 106 has a known bug that cannot be fixed with a firmware upgrade or there is some lack of support by engine 106, then the disclosed embodiments will process incoming print jobs in device 102 by pre-rendering it, and downloading only compatible data to MFP 104. Thus, incoming jobs identified as print jobs in step 610 may be processed in step 614 either by sending directly to engine 106 or processed in device 102. Further, if the intercept mode is enabled, as disclosed above, then the print job will be intercepted and processed by printcast device 102.
[0079]       Step 616 executes by sending a result of steps 612 or 614 to MFP 104.  The result may be data generated from the actions of printcast printing computing system 300 either from the printcast command or PDL print job. The result is the data provided to MFP 104 due to the interaction of printcast device 102 with the incoming request from an external device. The data may be upgraded firmware to be deployed on MFP 104 or a processed document for printing. Preferably, the data is in a format usable by engine 106 or MFP 104. The result comes from communication layer 328 that communicates with MFP 104.
[0080]       Figure 7 depicts a flowchart 700 for processing a print job on MFP 104 using printcast printing computing device 102 according to the disclosed embodiments. Flowchart 700 corresponds to step 614, but step 614 is not limited by the steps disclosed in Figure 7. The document received for printing on MFP 104 may be processed by printcast device 102 and sent as the result to directly to engine 106. As disclosed above, printcast printing computing system 300 may include components that convert the received document into a PDL format compatible with engine 106 or other firmware within MFP 104.
[0081]       If MFP 104 does not support the PDL in the incoming print job, then the incoming PDL print job will be processed in printcast device 102 if that PDL is supported within the device. Printcast device 102 intercepts all unsupported print job types and processes them internally using printcast printing computing system 300.
[0082]       Printcast engine 324 may perform firmware upgrades on MFP 104 if it finds that there is available newer firmware. Such newer or upgraded firmware may be available over network 108 from server 114 or other source. Firmware upgrades also may be pushed through printcast device 102 using a printcast command. In some embodiments, these features are used to upgrade printing devices on the production floor, to restore “back to life” unused MFPs, to integrate third-party MFPs as part of a fleet of managed imaging devices, or to add new features or capabilities to the third-party MFPs.
[0083]       Each imaging device, like MFP 104 or printers, include ASIC, graphics processors, CPUs, data buses, specific and limited random access memory (RAM)/read-only memory (ROM) memory sizes, hard-drive format(s), and specific firmware technologies for data compression, encoding, and encryptions. All of these define a MFP to be, for example, a version 2.4 of a certain model of the product line. Each new upgrade to the product line includes new sets of any or all of the hardware, firmware, and software components that make the new sets less and less backward compatible. A new iteration in the product line is expected to improve on the functionality, performance, and features of previous devices. The result is that older products may be considered less valuable as time goes by.
[0084]       Thus, printcast device 102 may bring those older MFPs and printers back online to gain new value. Use of the legacy devices extends the product life and provides better return on investment (ROI) to businesses and customers that utilize printcast device 102. In order to realize this, printcast device 102 may know the capabilities, technologies, and limitations of each version or model of MFP 104. Printcast device 102 may query for such information from MFP 104 itself, from a local network server, such as server 114, from the original equipment manufacturer (OEM), or from a server or location in the cloud.
[0085]       When printcast device 102 knows which ASIC, graphics processors, memory sizes, hard-drive formats, and the associated algorithms for data compression, encoding, and processing, it is possible for the device to generate and render backward compatible PDL print jobs that are printed efficiently and with high quality on MFP 104. Thus, the PDL print job generated for one model of a MFP or printer may be different when printcast device 102 is connected to another model of the MFP or printer.
[0086]       Referring to Figure 7, step 702 executes by defining the rules and capabilities for printcast device 102 and MFP 104. This step corresponds to steps 504, 506, 508, and 510 in Figure 5. Printcast engine 324 receives and processes data for its queries for engine restrictions, limitations, features, and other capabilities. Printcast engine 324 may know the capabilities, or lack thereof, of MFP 104. Printcast engine 324, in turn, knows when to intercept a print job before delivering it to MFP 104 and when to let it pass through. As discussed above, printcast engine 324 intercepts print jobs with PDLs known to have critical issues or are not supported by MFP 104. Printcast engine 324 also may intercept print jobs if a version hosted by printcast device 102 is better than what is installed on MFP 104.
[0087]       Step 704 executes by receiving the PDL print job at printcast printing computing system 300. Step 706 executes by determining the rules for the PDL print job that are applicable. Based on the rules and capabilities of MFP 104, step 708 determines whether to intercept the PDL print job for processing within printcast device 102. Printcast engine 324 may determine whether to intercept the PDL print job if the rules defined earlier apply to the specific job.
[0088]       If step 708 is no, then step 710 executes by sending the PDL print job to communication layer 328. The PDL print job is supported by the firmware and hardware in MFP 104 so there is no need for processing within printcast device 102. Step 712 executes by downloading the PDL print job to MFP 104 from printcast device 102. Step 716 executes by printing the document of the PDL print job using engine 106, much like a normal print job sent to MFP 104. Other actions also may be taken at this step other than printing, such as storing the document or making it available for editing using MFP 104 or another attached device.
[0089]       If step 708 is yes, then printcast engine 324 intercepts the PDL print job for processing in printcast device 102 using printcast printing computing system 300. This step is disclosed in greater detail below in Figures 8-12. Once processing is complete, flowchart 700 proceeds to step 710 to send the PDL print job to communications layer 328.
[0090]       Figure 8 depicts a flowchart 800 for processing a PDL print job in printcast device 102 according to the disclosed embodiments. Flowchart 800 may correspond to step 714 disclosed in flowchart 700. Step 714, however, is not limited to the embodiments shown in flowchart 800.
[0091]       In order to achieve the best performance for PDL print jobs generated by printcast device 102, the generated PDL print jobs preferably will be print jobs containing a rasterized image. A rasterized image may be one that is already processed through PDL interpreter 330 and graphics rendering component 332 of RIP firmware 322. The raster image is in a format that can be processed directly in engine 106 of MFP 104 without having to go through duplicate or re-processing through the RIP firmware local to engine 106. The raster image preferably is in a format that the engine firmware of MFP 104 can directly process to render pixels onto paper because it is in a “native” format to be processed directly by engine 106. The engine compatible raster image will be wrapped to appear like a regular print job, but one that engine 106 can process directly. Thus, the engine compatible raster image may be device dependent to the connected MFP.
[0092]       Step 802 executes by providing the PDL print job to RIP firmware 322 of printcast printing computing system 300. Step 708 of flowchart 700 determines that the PDL print job should be intercepted according to the rules set forth for MFP 104. Printcast engine 324 applies the rules to intercept the PDL print job.
[0093]       Step 804 executes by determining the best format for the PDL print job in order to download it to engine 106 of MFP 104. The main content of the print job sent to MFP 104 is the raster image generated within printcast device 102. The raster image should be a band-by-band compressed data representation of the rendered document pages that can be processed directly at engine 106. For the best performance and compatibility, the raster image is processed at the raster processing unit level of engine 106. In some embodiments, the compressed binary format may be an “MFP native format.” Thus, printcast engine 324 determines the best way to achieve the raster image for download to MFP 104.
[0094]       Four methods may be selected for formatting the PDL print job. Additional methods may be considered as well. Alternatively, some printcast devices may only implement three or less of the disclosed methods. The four methods are disclosed in greater detail in Figures 9-12. As shown in Figure 8, step 806 executes by translating the PDL print job to native PDL. The raster image generated by RIP firmware 322 is wrapped inside a regular PDL print job for MFP 104. Step 808 executes by generating a wrapped raster image in a supported image format. This step generates the raster image in one of the supported image for formats that MFP 104 already can print. Step 810 executes by generating a wrapped raster image in an MFP native format. A new PDL is used to identify the print job generated by printcast device 102 as a print job that contains a band-by-band compressed raster image in the MFP native format for MFP 104. Step 812 executes by translating the PDL print job to a third party PDL. The raster image is wrapped in a format that MFP 104 already supports, such as a third party PDL. Examples of third party PDLs may be proprietary by well-known printer control languages or page description languages.
[0095]       A summary of the processes disclosed below in Figure 9-12 provides an overview of how printcast device 102 differentiates processed print jobs in the formats from the regular print jobs in those formats. In other words, print jobs generated by printcast device 102 should be identifiable and differentiated from other PDL print jobs. One way to do this is adding job parameters that identify the new kind of print jobs as printcast generated print jobs.
[0096]       In some embodiments, a printcast print job file format specification may be implemented. The file format may be similar to other binary PDLs that have PJL, PRESCRIBE, or other job parameter wrappers. The following is an example of a PCLXL print job with printcast print job parameters, underlined below.
%-12345X@PJL JOB NAME=”job name”
@PJL SET TIMEOUT=300
@PJL SET RESOLUTION=600
@PJL SET BITSPERPIXEL=1
@PJL COMMENT=”INFO:NUP 1; DUPLEX OFF; QTY 1; COLORMODE COLOR;”
@PJL COMMENT=”APP:C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE;”
@PJL SET ECONOMODE=OFF
@PJL SET USERNAME=”username”
@PJL SET JOBNAME=”job name”
@PJL SET PRINTCAST_MODE=TRUE (printcast print job parameter)
@PJL SET PRINTCAST_JOB_ID=100 (printcast print job parameter)
@PJL SET QTY=1
@PJL SET KPAGESPERSHEET=1
@PJL ENTER LANGUAGE=PCLXL
[0097]       The binary data in the middle of the file is the band-by-band compressed data representation of the document pages within the print job. The binary data shown above is an example of how the main binary data may look.
[0098]       The print job shown above may include print job parameters in PJL, XPS PrintTickets formats, or PRESCRIBE or other job parameter specifications depending on the PDL type of the print job. The job parameters may identify the printcast print job as a print job with native raster image content. In some embodiments, the printcast job parameters are printcast mode and printcast job identification (ID). Other printcast job parameters may be defined such as document name, file name, timestamp of printing, CRC code for encoding all of the information to ensure the same document is to be processed, and the like. Additional printcast job parameters may be added, as needed, in order to facilitate the processing of a print job generated by printcast device 102.
[0099]       The printcast mode job parameter may be a new command to alert MFP 104 that an incoming PDL print job is a printcast print job. In other words, the incoming print job is already processed in printcast device 102. In some embodiments, the printcast mode job parameter may be a command with a possible TRUE or FALSE value. If the parameter does not exist, then the setting is defaulted to OFF or FALSE. When TRUE, the firmware in MFP 104 may skip processing the print job through its local PDL interpreter and graphics rendering component. The print job may be downloaded directly to engine 106.
[00100]      In other embodiments, the printcast mode job parameter is a keyword that corresponds to a PDL command. RIP firmware 322 adds this in the generated print job to inform MFP 104 and its associated firmware that the incoming print job contains a raster image that is in the “native” format. The print job may be downloaded directly to engine 106.
[00101]      In further embodiments, the printcast mode job parameter may be a setting of 0, or false, and 1, or true. The setting is a new command that corresponds to a mode command for the PDL. RIP firmware 322 adds this setting in the generated print job to inform MFP 104 and its associated firmware that the incoming print job contains a raster image that is in the “native” format. Like the ones above, the print job may be downloaded directly to engine 106.
[00102]      Another printcast parameter is the printcast job ID job parameter. A job ID may be assigned to each print job generated by printcast device 102. The job ID may be used for job management, such as cancellation, pause, and other functionalities that applications may want to perform on the print job. This parameter may be a numeric counter generated in printcast engine 324 and added to the generated print job.
[00103]      Once the print job is generated by printcast printing computing system 300 and printcast device 102, step 814 downloads the generated print job to MFP 104. This step also may include sending the generated print job to communications layer 328, which then sends it to MFP 104. As noted above, the generated print job should alert MFP 104 that it can bypass firmware and go to engine 106 for printing.
[00104]      Figure 9 depicts a flowchart 900 for translating the PDL print job to native PDL using printcast device 102 according to the disclosed embodiments. Flowchart 900 may correspond to step 806 disclosed in flowchart 800. Step 806, however, is not limited to the embodiments shown in flowchart 900. The processes disclosed by flowchart 800 may be known as translating the PDL print job to a known PDL language, which is supported by MFP 104. Thus, flowchart 900 wraps the resulting raster image generated by RIP firmware 322 inside a regular PDL print job, such as PCL5, PCLXL, XPS, or other PDLs. As disclosed above, printcast device 102 may be upgraded with available PDLs as needed.
[00105]      Step 902 executes by creating a file buffer for the print job. The file buffer may be created in memory 304 of printcast device 102. The file buffer will temporarily store the print job while being processed.
[00106]      Step 904 executes by generating the native PDL job, document, and page headers. Step 906 also may be executed to add job, document, and page tickets to the print job. These steps format the headers for the native PDL print job to be populated by the data from the received print job. The headers may match the format disclosed above along with printcast print job parameters that inform MFP 104 that the print job has already been formatted for printing by RIP firmware 322.
[00107]      Step 908 executes by generating the native PDL commands. Step 910 also executes with step 908 by translating the incoming PDL commands to the native PDL commands. Printcast engine 324 may obtain the native PDL commands from MFP 104 and its associated firmware. Then, it translates an incoming command to a native command by associating the incoming command with the corresponding native command. These associations may be stored within printcast device 102 and accessible by printcast printing computing system 300. The native PDL print job is populated with the translated PDL commands.
[00108]      Step 912 executes by generating the native PDL job, document, and page footer data for the native PDL print job. The footers may be created after the translated PDL commands and the band-by-band compressed data of the document pages. Step 914 executes by closing the file buffer and forwarding the translated native PDL print job to communication layer 328 for download to MFP 104.
[00109]      Figure 10 depicts flowchart 1000 for generating a raster image in a supported image format according to the disclosed embodiments. Flowchart 1000 may correspond to step 808 disclosed in flowchart 800. Step 808, however, is not limited to the embodiments shown in flowchart 1000. Flowchart 1000 generates the raster image in one of the supported image formats that MFP 104 already can print, such as JPG, TIFF, PNG, and the like. This feature may be especially desirable when printing an image, like a picture, from a mobile device, such as mobile device 110, to MFP 104. Mobile device 110 may send a print job in an image format not recognized by MFP 104. Printcast device 102 determines that the print job needs to be intercepted and converted to a supported image format.
[00110]      Step 1002 executes by creating the file buffer for the print job. The file buffer may be created in memory 304 of printcast device 102. The file buffer will temporarily store the print job while being processed.
[00111]      Step 1004 executes by generating the raster image format headers. The headers resemble the example headers disclosed above having the printcast print job parameters inserted. Step 1006 executes by processing the incoming PDL print job by RIP firmware 322.
[00112]      Step 1008 executes by generating bands of raw data by graphics rendering component 332. Step 1010 also executes by converting each generated band from graphics rendering component 332 to a raster image format. Step 1010 may be accomplished by printcast engine 324.
[00113]      Step 1012 executes by updating the raster image dimension with the converted band. Step 1014 executes by finalizing other file properties for the raster image. Step 1016 executes by closing the file buffer of the print job and forwarding the print job to communication layer 328.
[00114]      Figure 11 depicts a flowchart 1100 for generating a print job in a native format according to the disclosed embodiments. Flowchart 1100 may correspond to step 810 disclosed in flowchart 800. Step 810, however, is not limited to the embodiments shown in flowchart 1100. The disclosed embodiments may generate a new PDL to identify the printcast generated print job as a print job that contains band-by-band compressed raster image data in a native format for MFP 104, or MFP native format. MFP native format may refer to the compressed binary format for the main content of the print job. The main content may be the printcast generated raster image. The raster image is a band-by-band compressed data representation of the rendered document pages that can be processed directly at the engine firmware of MFP 104.
[00115]      Step 1102 executes by creating a file buffer for the print job. The file buffer may be created in memory 304 of printcast device 102. The file buffer will temporarily store the print job while being processed.
[00116]      Step 1104 executes by generating the PDL job, document, and page headers. The headers may match the format disclosed above along with printcast print job parameters that inform MFP 104 that the print job has already been formatted for printing by RIP firmware 322. Step 1106 executes by processing the incoming print job by RIP firmware 322. The print job may be processed through PDL interpreter 330, as disclosed above.
[00117]      Step 1108 executes by generating band of raw data by graphics rendering component 332. Step 1110 also may execute by storing each generated band of data in the native format. The bands of data may represent the binary data that is a representation of the document pages.  Step 1112 executes by finalizing the file properties for the print job having the bands of data. Step 1114 executes by closing the file buffer of the print job and forwarding the print job to communication layer 328.
[00118]      Figure 12 depicts a flowchart 1200 for translating the print job to a third-party PDL according to the disclosed embodiments. Flowchart 1200 may correspond to step 812 disclosed in flowchart 800. Step 812, however, is not limited to the embodiments shown in flowchart 1200. A translation to a third party PDL may be preferred when MFP 104 supports a PDL not readily supported by printcast device 102. The PDL may be a third party PDL from another manufacturer or entity. Thus, MFP 104 may not have the same manufacturer as printcast device 102. In these instances, the third party PDL may be made available to printcast device 102. As such, printcast device 102 may translate incoming PDL print jobs to the third party PDL supported by MFP 104.
[00119]      Step 1202 executes by creating a file buffer for the print job. The file buffer may be created in memory 304 of printcast device 102. The file buffer will temporarily store the print job while being processed.
[00120]      Step 1204 executes by generating the third party PDL print job, document, and page headers. Step 1206 also may execute to add job, document, and page tickets to the print job. These steps format the headers for the third party PDL print job to be populated by the data from the received print job. The headers may match the format disclosed above along with printcast print job parameters that inform MFP 104 that the print job has already been formatted for printing by RIP firmware 322.
[00121]      Step 1208 executes by generating third party PDL commands.  Step 1210 also executes with step 1208 by translating the incoming PDL commands to the third party PDL commands. Printcast engine 324 may obtain the third party PDL commands from MFP 104 and its associated firmware, or from an upgraded printing device. Then, it translates an incoming command to a third party command by associating the incoming command with the corresponding third party command. These associations may be stored within printcast device 102 and accessible by printcast printing computing system 300.
[00122]      Step 1212 executes by generating the third party’s PDL print job, document, and any page footer data in the file. The footers may be created after the translated PDL commands and the band-by-band compressed data of the document pages. Step 1214 executes by closing the file buffer and forwarding the translated third party PDL print job to communication layer 328 for download to MFP 104.
[00123]      Thus, a device attached or connected to a MFP device may receive print jobs from external devices and computers over network. The print jobs may vary in format and type. The printcast engine determines whether to intercept the print job for processing within the printcast printing computing system in the printcast device. If so, then the processed print job may go directly to the engine in the MFP.
[00124]      As will be appreciated by one skilled in the art, the present invention may be embodied as a system, method or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer-usable program code embodied in the medium.
[00125]      Any combination of one or more computer usable or computer readable medium(s) may be utilized.  The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
[00126]      Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user’s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user’s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
[00127]      The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
[00128]      The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures.  For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
[00129]      The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a,” “an” and “the” are intended to include plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specific the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
[00130]      Embodiments may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product of computer readable media. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program instructions for executing a computer process. When accessed, the instructions cause a processor to enable other components to perform the functions disclosed above.
[00131]      The corresponding structures, material, acts, and equivalents of all means or steps plus function elements in the claims below are intended to include any structure, material or act for performing the function in combination with other claimed elements are specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for embodiments with various modifications as are suited to the particular use contemplated.
[00132]      One or more portions of the disclosed networks or systems may be distributed across one or more MFP systems coupled to a network capable of exchanging information and data. Various functions and components of the MFP system may be distributed across multiple client computer platforms, or configured to perform tasks as part of a distributed system. These components may be executable, intermediate or interpreted code that communicates over the network using a protocol. The components may have specified addresses or other designators to identify the components within the network.
[00133]      It will be apparent to those skilled in the art that various modifications to the disclosed may be made without departing from the spirit or scope of the invention. Thus, it is intended that the present invention covers the modifications and variations disclosed above provided that these changes come within the scope of the claims and their equivalents.
REFERENCE SIGNS LIST
[00134]       
100    System
102     Device
102X    Device
102Y    Device
104    MFP
106    Engine
108    Network
110    MOB
112    Computer
114    Server
116    Cloud Storage
120    MFP
122    Wireless or Wired Connection
What is claimed is:
1.    A printing computing device for printing documents from an external device at a multi-function printing (MFP) device attached to a network, the printing computing device comprising:
a print job manager to schedule a print job received over the network;
an engine to determine whether the print job includes a page description language (PDL) print job;
a raster image processing (RIP) firmware to process the PDL print job from the print job manager, wherein the RIP firmware comprises a PDL interpreter and a graphics rendering component; and
a communication layer to download the processed PDL print job to the attached MFP device.
2.    The printing computing device of claim 1, further comprising a power supply.
3.    The printing computing device of claim 2, further comprising connectors to connect the power supply to the MFP device.
4.    The printing computing device of any one of claims 1 to 3, further comprising an operating system.
5.    The printing computing device of any one of claims 1 to 4, wherein the engine is configured to intercept the PDL print job according to a rule corresponding to the MFP device.
6.    The printing computing device of any one of claims 1 to 5, wherein the engine is configured to pass through the PDL print job to the communication layer according to a rule corresponding to the MFP device.
7.    The printing computing device of any one of claims 1 to 6, further comprising a memory having a file buffer to store the PDL print job.
8.    A method for processing a print job at a printing computing device for a multi-function printing (MFP) device, wherein the printing computing device is connected to an external device through a network, the method comprising:
determining whether a print job received from the external device includes a page description language (PDL) print job using an engine;
determining whether to process the PDL print job using a raster image processing (RIP) firmware within the printing computing device;
processing the PDL print job using the RIP firmware; and
sending the processed PDL print job to a communication layer for download to the MFP device, wherein the processed PDL print job is in a format ready for printing by the MFP device.
9.    The method of claim 8, wherein determining includes analyzing a header of the print job to determine whether it is the PDL print job.
10.   The method of claim 8 or 9, further comprising intercepting the PDL print job by the engine within the printing computing device according to a rule corresponding to the MFP device.
11.   The method of any one of claim 8 to 10, further comprising determining the format for the PDL print job, wherein the format is supported by the MFP device.
12.   The method of any one of claim 8 to 11, wherein the processing step includes translating the PDL print job to a native PDL supported by the MFP device.
13.   The method of any one of claim 8 to 12, wherein the processing step includes generating the processed PDL print job in an image format supported by the MFP device.
14.   The method of any one of claim 8 to 13, wherein the processing step includes generating the processed PDL print job in a native format supported by the MFP device.
15.   The method of any one of claim 8 to 14, wherein the processing step includes translating the PDL print job to a third party PDL supported by the MFP device.
16.   A method for using a printing computing device with a multi-functional printing (MFP) device in a network having an external device to send print jobs to the MFP device, the method comprising:
receiving a print job at a print job manager within the printing computing device; analyzing a header of the print job using an engine when scheduled by the print job manager;
determining whether the print job includes a PDL print job according to the header;       determining a format for the PDL print job by the engine based on the MFP device; processing the PDL print job according to the format using a raster image processing (RIP) firmware in the printing computing device; and
downloading the processed PDL print job to the MFP device using a communication layer within the printing computing device.
17.   The method of claim 16, further comprising generating at least one print job parameter for the processed PDL print job.
18.   The method of claim 17, wherein the at least one print job parameter indicates that RIP firmware processing of the PDL print job has been completed when received by the MFP device.
19.   The method of claim 17 or 18, wherein the at least one print job parameter includes a mode job parameter or a job identification job parameter.
20.   The method of any one of claims 16 to 19, further comprising passing the print job through to the communication layer when instructed by the engine.
1.  Abstract
PROBLEM TO BE SOLVED
2.  SOLUTION
A printing computing device connects to a multi-function printing (MFP) device to enable additional functionality and capabilities not offered by the MFP device. The printing computing device connects to a network to receive print jobs from external devices within the network. The printing computing device processes the print jobs according to rules such that print jobs are processed accordingly. The printing computing device also includes firmware not available on the MFP device such that print jobs not supported by the MFP device still may be processed. The printing computing device also includes an engine that determines whether an incoming print job is a PDL print job or a command to perform a function not available on the MFP device.
3. Representative Drawing: Fig. 1
2019149146.tif 000015
2019149146.tif 000016
2019149146.tif 000017
2019149146.tif 000018
2019149146.tif 000019
2019149146.tif 000020
2019149146.tif 000021
2019149146.tif 000022
2019149146.tif 000023
2019149146.tif 000024
2019149146.tif 000025
2019149146.tif 000026