以下、図面を参照して本発明をさらに詳細に説明する。以下の説明においては、本発明を適用した通信装置として、ネットワークインターフェースを有する複写機能及びFAX機能を有する複合機を例にして説明を行う。しかし、そのほかの校正を有する機器であっても本発明を構成しうることは言うまでもない。
(ハードウェア構成)
複合機システムの全体構成を図1に示す。コントローラ2000は画像入力デバイスであるスキャナ2070や画像出力デバイスであるプリンタ2095に接続される。また、その一方で、LAN2011や公衆回線(WAN)2051に接続することで、画像情報やデバイス情報の入出力を行う。CPU2001は複合機全体を制御する汎用プロセッサである。RAM2002はCPU2001が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ROM2003はブートROMであり、複合機のブートプログラムが格納されている。HDD2004はハードディスクドライブで、システムソフトウェア、画像データを格納する。操作部I/F2006は操作部(UI)2012とのインターフェース部で、操作部2012に表示する画像データを操作部2012に対して出力する。また、操作部2012から本システム使用者が入力した情報を、CPU2001に伝える役割をする。Modem2050は公衆回線2051に接続し、情報の入出力を行う。以上のデバイスがシステムバス2007上に配置される。
画像バスI/F2005はシステムバス2007と画像データを高速で転送する画像バス2008を接続し、データ構造を変換するバスブリッジである。画像バス2008は、PCIバスまたはIEEE1394で構成される。画像バス2008上には以下のデバイスが配置される。ネットワークI/F2010はシステムバス2007をLAN2011に接続し、情報の入出力を行う。ラスターイメージプロセッサ(RIP)2060はPDL(ページ記述言語)コードをビットマップイメージに展開する。デバイスI/F部2020は、画像入出力デバイスであるスキャナ2070やプリンタ2095とコントローラ2000を接続し、画像データの同期系/非同期系の変換を行う。スキャナ画像処理部2080は、入力画像データに対し補正、加工、編集を行う。プリンタ画像処理部は、プリント出力画像データに対して、プリンタの補正、解像度変換等を行う。画像回転部2030は画像データの回転を行う。画像圧縮伸長部2040は、多値画像データはJPEG、2値画像画像データはJBIG、MMR、MHの圧縮伸張処理を行う。
以上説明したような構成は画像処理部分の拡張性を考慮してシステムバス2007部、及び画像バス2008部が分離されるような構成となっており、一般的なコンピュータの構成を応用したものである。上記構成では画像バスI/Fを汎用I/Fにすることで、画像処理を任意に組み合わせることが可能な自由度、また将来性を考慮し拡張性をもたせている。特に画像圧縮伸長部部分は将来様々な規格が提案される可能性もあり、容易に交換できるよう画像バス側に接続される。
複合機システムの正面外観例を図2に示す。画像入力デバイスであるスキャナ部2070は、原稿を照明し、CCDラインセンサ(図示せず)を走査することで、ラスターイメージデータとして電気信号に変換する。原稿は原稿フィーダ2072のトレイ2073にセットし、装置使用者が操作部2012から読み取り起動指示する。これにより、コントローラCPU2001がスキャナ2070に指示を与え、フィーダ2072は原稿を1枚ずつフィードし原稿画像の読み取り動作を行う。
画像出力デバイスであるプリンタ部2095は、ラスターイメージデータ2096を紙などの被記録材上の画像に変換する部分である。プリンタ部2095の方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微小ノズルアレイからインクを吐出して用紙上に直接画像を形成するインクジェット方式等があるが、どの方式でも構わない。プリント動作の起動は、コントローラCPU2001からの指示によって開始する。プリンタ部2095には、異なる被記録材サイズまたは異なる被記録材の向きを選択できるように複数の供給段を持ち、それに対応したカセット2101,2102,2103,2104がある。また、排出トレイ2111は印字し終った被記録材を受けるものである。
・操作部
操作部2012の外観例を図3に示す。LCD表示部2013は、LCD上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報をコントローラCPU2001に伝える。スタートキー2014は原稿画像の読み取り動作を開始する時などに用いる。スタートキー2014中央部には、緑と赤の2色LED2018があり、その色によってスタートキー2014が使える状態にあるかどうかを示す。ストップキー2015は稼働中の動作を止める働きをする。IDキー2016は、使用者のユーザーIDを入力する時に用いる。リセットキー2017は操作部からの設定を初期化する時に用いる。
・スキャナ画像処理部
スキャナ画像処理部2080の構成を図4に示す。画像バスI/Fコントローラ2081は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、スキャナ画像処理部2080内の各デバイスの制御及びタイミングを発生させる。フィルタ処理部2082は、空間フィルタでコンボリューション演算を行う。編集部2083は、例えば入力画像データからマーカーペンで囲まれた閉領域を認識して、その閉領域内の画像データに対して、影つけ、網掛け、ネガボジ反転等の画像加工処理を行う。変倍処理部2084は、読み取り画像の解像度を変える場合にラスターイメージの主走査方向について補間演算を行い拡大、縮小を行う。副走査方向の変倍については、画像読み取りラインセンサ(図示せず)を走査する速度を変えることで行う。テーブル変換部2085は、読み取った輝度データである画像データを濃度データに変換するのテーブル変換を行う。2値化処理部2086は、多値のグレースケール画像データを、誤差拡散処理やスクリーン処理によって2値化する。
処理が終了した画像データは、再び画像バスコントローラ2081を介して、画像バス上に転送される。
・プリンタ画像処理部
プリンタ画像処理部2090の構成を図5に示す。画像バスI/Fコントローラ2091は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、スキャナ画像処理部2090内の各デバイスの制御及びタイミングを発生させる。解像度変換部2092は、LAN2011あるいはWAN2051から受信した画像データを、プリンタ2095の解像度に変換するための解像度変換を行う。スムージング処理部2093は、解像度変換後の画像データのジャギー(斜め線等の白黒境界部に現れる画像のがさつき)を滑らかにする処理を行う。
・画像圧縮伸長部
画像圧縮伸長部2040の構成を図6に示す。画像バスI/Fコントローラ2041は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する。また、入力バッファ2042・出力バッファ2045とのデータのやりとりを行うためのタイミング制御及び、画像圧縮伸長部2043に対するモード設定などの制御を行う。本発明においては、データの圧縮を符号化、伸長を復号化として取り扱う。以下に画像圧縮伸長部の処理手順を示す。
画像バス2008を介して、CPU2001から画像バスI/Fコントローラ2041に画像圧縮制御のための設定を行う。この設定により画像バスI/Fコントローラ2041は画像圧縮伸長部2043に対して画像圧縮に必要な設定(たとえばMMR圧縮・JBIG伸長等の)を行う。必要な設定を行った後に、再度CPU2001から画像バスI/Fコントローラ2041に対して画像データ転送の許可を行う。この許可に従い、画像バスI/Fコントローラ2041はRAM2002もしくは画像バス2008上の各デバイスから画像データの転送を開始する。受け取った画像データは入力バッファ2042に一時格納され、画像圧縮伸長部2043の画像データ要求に応じて一定のスピードで画像を転送する。この際、入力バッファは、画像バスI/Fコントローラ2041と、画像圧縮伸長部2043両者の間で、画像データを転送できるかどうかを判断する。そして、画像バス2008からの画像データの読み込み及び、画像圧縮伸長部2043への画像の書き込みが不可能である場合は、データの転送を行わないような制御を行う(以後このような制御をハンドシェークと呼称する)。
画像圧縮伸長部2043は受け取った画像データを、一旦RAM2044に格納する。これは画像圧縮を行う際には行う画像圧縮処理の種類によって、数ライン分のデータを要するためであり、最初の1ライン分の圧縮を行うためには数ライン分の画像データを用意してからでないと画像圧縮が行えないためである。画像圧縮を施された画像データは直ちに出力バッファ2045に送られる。出力バッファ2045では、画像バスI/Fコントローラ2041及び画像圧縮伸長部2043とのハンドシェークを行い、画像データを画像バスI/Fコントローラ2041に転送する。画像バスI/Fコントローラ2041では転送された圧縮(もしくは伸長)された画像データをRAM2002もしくは画像バス2008上の各デバイスにデータを転送する。こうした一連の処理は、CPU2001からの処理要求が無くなるまで(必要なページ数の処理が終わったとき)、もしくはこの画像圧縮伸長部から停止要求が出るまで(圧縮及び伸長時のエラー発生時等)繰り返される。
・画像回転部
画像回転部2030の構成を図7に示す。画像バスI/Fコントローラ2031は、画像バス2008と接続し、そのバスシーケンスを制御する働き、画像回転部2032にモード等を設定する制御及び、画像回転部2032に画像データを転送するためのタイミング制御を行う。以下に画像回転部の処理手順を示す。
画像バス2008を介して、CPU2001から画像バスI/Fコントローラ2031に画像回転制御のための設定を行う。この設定により画像バスI/Fコントローラ2041は画像回転部2032に対して画像回転に必要な設定(たとえば画像サイズや回転方向・角度等)を行う。必要な設定を行った後に、再度CPU2001から画像バスI/Fコントローラ2041に対して画像データ転送の許可を行う。この許可に従い、画像バスI/Fコントローラ2031はRAM2002もしくは画像バス2008上のデバイスから画像データの転送を開始する。尚、ここでは画像バス2008の幅を32bit、回転を行う画像サイズを32×32(bit)、画像バス2008上に画像データを転送させる際には32bitを単位とする画像転送を行うものとする(扱う画像は2値を想定する)。
上述のように、32×32(bit)の画像を得るためには、上述の単位データ転送を32回行う必要があり、且つ不連続なアドレスから画像データを転送する必要がある(図8参照)。不連続アドレッシングにより転送された画像データは、読み出し時に所望の角度に回転されているように、RAM2033に書き込まれる。例えば、90度反時計方向回転であれば、最初に転送された32bitの画像データを、図9のようにY方向に書き込んでいく。読み出し時にX方向に読み出すことで、画像が回転される。
32×32(bit)の画像回転(RAM2033への書き込み)が完了した後、画像回転部2032はRAM2033から上述した読み出し方法で画像データを読み出し、画像バスI/Fコントローラ2031に画像を転送する。
回転処理された画像データを受け取った画像バスI/Fコントローラ2031は、連続アドレッシングを以て、RAM2002もしくは画像バス2008上の各デバイスにデータを転送する。こうした一連の処理は、CPU2001からの処理要求が無くなるまで(必要なページ数の処理が終わったとき)繰り返される。
・デバイスI/F部
デバイスI/F部2020の構成を図10に示す。画像バスI/Fコントローラ2021は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、デバイスI/F部2020内の各デバイスの制御及びタイミングを発生させる。また、外部のスキャナ2070及びプリンタ2095への制御信号を発生させる。スキャンバッファ2022は、スキャナ2070から送られてくる画像データを一時保存し、画像バス2008に同期させて画像データを出力する。シリアルパラレル・パラレルシリアル変換部2023は、スキャンバッファ2022に保存された画像データを順番に並べて、あるいは分解して、画像バス2008に転送できる画像データのデータ幅に変換する。パラレルシリアル・シリアルパラレル変換部2024は、画像バス2008から転送された画像データを分解して、あるいは順番に並べて、プリントバッファ2025に保存できる画像データのデータ幅に変換する。プリントバッファ2025は、画像バス2008から送られてくる画像データを一時保存し、プリンタ2095に同期させて画像データを出力する。
画像スキャン時の処理手順を以下に示す。スキャナ2070から送られてくる画像データをスキャナ2070から送られてくるタイミング信号に同期させて、スキャンバッファ2022に保存する。そして、画像バス2008がPCIバスの場合には、バッファ内に画像データが32ビット以上入ったときに、画像データを先入れ先出しで32ビット分、バッファからシリアルパラレル・パラレルシリアル変換2023に送る。このようにして、32ビットの画像データに変換し、画像バスI/Fコントローラ2021を通して画像バス2008上に転送する。また、画像バス2008がIEEE1394の場合には、バッファ内の画像データを先入れ先出しで、バッファからシリアルパラレル・パラレルシリアル変換部2023に送る。これによりシリアル画像データに変換し、画像バスI/Fコントローラ2021を通して画像バス2008上に転送する。
画像プリント時の処理手順を以下に示す。画像バス2008がPCIバスの場合には、画像バスから送られてくる32ビットの画像データを画像バスI/Fコントローラで受け取り、パラレルシリアル・シリアルパラレル変換部2024に送る。そして、プリンタ2095の入力データビット数の画像データに分解し、プリントバッファ2025に保存する。また、画像バス2008がIEEE1394の場合には、画像バスからおくられてくるシリアル画像データを画像バスI/Fコントローラで受け取る。そして、パラレルシリアル・シリアルパラレル変換2024に送り、プリンタ2095の入力データビット数の画像データに変換し、プリントバッファ2025に保存する。そして、プリンタ2095から送られてくるタイミング信号に同期させて、バッファ内の画像データを先入れ先出しで、プリンタ2095に送る。
(システム構成)
図11は、本実施形態の通信装置を他の機器と接続して使用する場合の接続関係や機器間のデータのやり取りの例を示したネットワーク・システム構成図である。
通信装置148はLAN2011を介して電子メールクライアント141及び146、ローカル電子メールサーバ142、DNSサーバ143、展開サーバ装置1416と接続されている。また、LAN2011にはルータ1412が接続される。通信装置148はルータ1412を介してインターネット/イントラネット1413等他のネットワークに接続されたリモート電子メールサーバ1414やインターネットFAX装置1415との通信が可能である。また、通信装置148はLAN2011以外にもPSTN(公衆交換電話網)/ISDN等の公衆回線1410を介してFAX装置1411とも通信可能である。
リモート電子メールサーバ1414や電子メールクライアント141、146から通信装置148へ送信された電子メールは、ローカル電子メールサーバ142が受信した後、通信装置148に転送される。通信装置148が受信した電子メールデータの中に展開サーバ装置1416でなければ展開できない添付ファイルが含まれている場合がある。この場合、通信装置148から展開サーバ装置1416に対しこの添付ファイルのバイナリデータを通信装置148が取り扱いできる形式のデータ(TIFFバイナリ等)に変換を依頼する。展開サーバ装置1416と通信装置148との通信については後で詳述する。
(ソフトウェア)
以下、本実施形態の動作について説明する。
図12は、ワードプロセッサ文書や表計算ファイルなど、非画像データが添付ファイルとして添付された電子メールデータ例を示す図で、MIMEフォーマットで記述された電子メールデータ内容図である。
図に示すように、電子メールデータは、ヘッダパート91と、メール文書の記載された本文パート92及び、エンコードされた電子データが記載された添付ファイルパート93から構成される。ヘッダパート91には、送信元、送信先、タイトル、メールの種類(スタイル)情報などが記載される。そして、各パートは境界を示す文字(図12においては"---Boundary---"で区切られ、各パートのヘッダ部分(パートの開始部分)には、各パートの文字コード情報や、エンコード方法、ファイル名などが記載される。
図13は、本発明の通信装置における電子データの保存管理、変換処理、及びプリント処理に用いる電子データ管理テーブルのデータ構造図である。
ID管理テーブル213は、受付番号カウンタ、文書IDカウンタ及びトランザクションIDカウンタの各領域を有し、受付番号、文書ID及びトランザクションIDの番号を発生するためのテーブルである。
電子データ変換トランザクション管理テーブル21は、受信した電子メールのデータを解析する際に獲得されるテーブルであり、ID管理テーブル213の発生するIDと、電子メールのヘッダから抽出した各種情報を記憶する。電子データ変換トランザクション管理テーブル21の文書管理テーブル・ポインタは、そのトランザクションで獲得した最初の文書管理テーブルの開始位置を示す。
文書管理テーブル23〜25は、電子メールデータの各パート毎に取得されるテーブルであり、各パートの内容に応じて設定される各種情報用の領域を有している。各文書管理テーブルは次のパートに対応する文書管理テーブルの開始位置を示す次ポインタ領域を有し、最終のパートに対応する文書管理テーブル(25)においてはNULLポインタとなっている。また個々の文書管理テーブルは、オリジナル文書領域22、エラーレポート文書領域28及び最終変換文書領域29を有している。
ページ管理テーブル210〜212は、後述するように、受信した展開文書データを管理するために必要な情報を記憶する領域を有しており、文書管理テーブルと同様、テーブルのポインタ領域で各テーブルがリンクされている。
これらのテーブルは、RAM2002或いはHDD2004のように、CPU2001が読み書き可能な装置に必要に応じて記憶、展開される。
LAN2011又はWAN2051からの電子データ(特に電子メール)の受信が開始されると、CPU2001はHDD2004或いはRAM2002の特定領域に電子データ変換トランザクション管理テーブル21(の領域)を獲得する。その際、ID管理テーブル213の「トランザクションIDカウンタ」領域の値がインクリメントされ、電子データ変換トランザクション管理テーブル21の「トランザクションID」領域にセットされる。同様に、ID管理テーブル213の「受け付け番号カウンタ」領域の値がインクリメントされ、電子データ変換トランザクション管理テーブル21の「受け付け番号」領域にセットされる。
図12のようなMIMEで記述された電子メールのマルチ・メディア・データを電子データ区切り処理(図17〜図20)とコンテント・タイプ解析処理(図21)により、メディア区分毎に分割する。それぞれに対応した文書管理テーブル23、24、25を獲得する。そして、テーブルにデータをセットしながら電子データ変換トランザクション管理テーブル21の「文書管理テーブル・ポインタ」を先頭とした文書管理テーブルのキューを構成していく。各区分データに関する情報は、文書管理テーブル中の「オリジナル文書」領域22を中心にセットされる。
図12に示したメールを例にとって説明すると、ヘッダ部91が第1番めの文書管理テーブル23としてリンクされ、その「文書種別」領域には「テキスト」、「言語種別」領域には「ASCII」がセットされる。メールの本文部92は2番めの文書管理テーブル24としてリンクされ、その「文書種別」領域には「テキスト」、「言語種別」領域には「日本語S−JIS」がセットされる。残りの添付ファイル部93は第3番目の文書管理テーブル25としてリンクされ、その「文書種別」領域にはUUENCODE等のバイナリコードをテキストに符号化したデータを表す「エンコーデイッド・テキスト」がセットされる。
文書管理テーブルは新たに獲得される度にID管理テーブル213の「文書IDカウンタ」領域の値がインクリメントされ、獲得された文書管理テーブルの「文書ID」領域にセットされる。その際、「受け付け番号」領域は、電子データ変換トランザクション管理テーブル21の「受け付け番号」領域の値をコピーされる。また、文書管理テーブルの「文書順序番号」領域は1から順に管理テーブルの獲得の度にインクリメントされた値がセットされる。
文書管理テーブルの「受信セッション中変換有無」領域は、受信中に「変換する」「変換しない」を種々の変換処理毎に変更可能である。これは、受信時の受信データの画像データの変換等の変換処理の時間と受信セッションで受信データを受信終了して応答を返すまでの許容時間を鑑みて変更可能である。
従って、システム・パラメータ等により受信セッション中の受信データに対する応答の許容時間にあわせた最適化が容易である。
また、文書管理テーブルの「エラーレポート作成有無」領域に対し「作成あり」「作成なし」の情報をセットするだけで、エラー・レポート(文字列と画像データの2種類がある)の作成要否を容易に変更可能である。
図14は、図12の電子メールデータのデータ内容を判別し、文書種別決定と本通信装置の印字装置で出力やFAX送信等を行うために必要なデータ変換処理と変換後の文書種別に関するシーケンス図である。
以下、図14及び図12を参照して、本発明における処理の流れを説明する。
先ず「開始」から始め、電子メールデータの添付ファイル部93にはデータ“Content-Transfer-Encodeing”が存在するので添付ファイル部93の「文書種別」は「エンコーディッド・テキスト」として判別される。また、添付ファイル部には”x-uuendode"と”Content-Type”、”text/plain”及び”name”が存在するので、最終的に本発明の通信装置でプリントするためには、
1)添付ファイル部93のテキストデータである“uuencodeで符号化されたreport.docの内容”を、uudecodeでバイナリに変換する
↓
2)展開サーバ装置上のワード・プロセッサ・ソフトウエアでプリント処理し、展開サーバ装置上のプリンタ・ドライバで本発明の通信装置が解釈できる、「TIFFバイナリ」データに変換する
↓
3)展開サーバ装置から本発明の通信装置に「TIFFバイナリ」データを送信する
という処理の流れとなることがわかる。添付ファイル部93にJPEG等の画像ファイルがテキスト変換されたデータが含まれる場合など、他のタイプのファイルが添付されている場合は、MIMEヘッダの情報を元に必要な処理が行われる。図14で示したシーケンス図の詳細説明は、後述する図17〜図20を用いたデータ区切り処理の説明で行う。
図15は、図11に示したネットワーク構成において、本実施形態の通信装置148が、電子メールアカウント141からの電子メールをローカル電子メールサーバ142のような電子メール装置から受信する際のプロトコルシーケンスを示す。本実施形態において電子メールの受送信はSMTP(Simple Mail Transfer Protocol)により行われる。
まず、電子メール装置が通信装置に対し、SMTPのリスナーポートであるポート番号25を用いて接続要求を送信する(S13)。接続要求を受信した通信装置においては電子メール受信のためのSMTPデーモンである電子メール受信プロセスを起動し、正常応答を返す(S14)。次いで電子メール装置は通信装置のホスト名(”MailFaxMachine”)を送信する(S15)。通信装置は受信したホスト名が自分に割り当てられているホスト名と一致すれば正常応答を返す(S16)。
電子メール装置は次いで電子メールの差し出し人アドレス(”username1@mail_srv.ccc.dd.ee”)を送信する(S17)。通信装置はアドレスを受信すると正常応答を返し(S18)、これに応答してメール装置はメールの送信宛先アドレス(”mail_fax_machine@MailFaxMachine.ccc.dd.ee”)を送信する(S19)。通信装置は、送信宛先が自分宛で、メール転送も不要であるか確認する。本例においては転送が不要なので、メール装置に対し正常応答を返す(S110)。
次いで電子メール装置は、メールデータ転送開始通知を送信する(S111)。通信装置はこの通知を受信すると、電子メール受信に必要な初期化などの動作を行った後、正常応答を返す(S112)。この応答に応じてメール装置は電子メールデータを送信し(S113)、送信が終了すると電子メール送出終了通知を続いて送信する(S114)。通信装置は終了通知を受け取ると、電子メールデータの受信ファイルをクローズするなどの終了作業を行ってから、正常応答を返す(S115)。
メール装置は送信するメールが1通であれば送信終了通知を送信し(S116)、通信装置からの正常応答(S117)を待ってポート切断要求を送信する(S118)。これによってメール送信のセッションが終了する。
図16は、本実施形態の通信装置が行う、電子データ受信から変換処理、電子メールデータのプリント、FAX送信、およびエラーレポートのメール送信に至る、電子データ受信処理全体の流れを示すフローチャートである。
以下、図16を参照して本実施形態の通信装置の全体動作を説明する。
電子データの到着を待ち(S1513)、外部装置からTCP/IPによるポート接続要求があったら、そのポート番号を判別する(S1514)。ポート番号が25(SMTPによる接続を要求するポート番号)で無ければ、他のデータ処理を行い(S158)、電子データの到着待ち状態に復帰する。
ポート25に対する接続要求を受信すると、上述したメール受信プロトコルシーケンス(図15、S14〜S114)を実行する(S151)。この受信処理の中で、メールデータ転送開始通知(S112)の受信時、電子メール受信用のファイルの確保と管理テーブルデータの初期化動作を行う。初期化動作は、例えば、電子メール受信用のファイル名の、電子データ変換トランザクション管理テーブル21の「電子データ・パス・ファイル名」領域へのセットなどである。電子メールデータ送出終了通知(図15、S114)としてのメールデータの終了デリミターである”.”(ピリオド)とキャリッジを受信すると(S1515)、電子メールデータの受信ファイルをクローズする。
次に、電子データの区切り処理を行い(S152)、通信装置内では展開できず、展開サーバへの展開依頼が必要なデータが含まれているかを調べる(S1516)。具体的には電子データ変換トランザクション管理テーブル21からリンクされている、メールデータの各パートに対応する文書管理テーブルキュー23、24、…、25の中に「外部処理有無」領域が「あり」であるものの有無を検索する。検索の結果展開サーバ1416が必要なデータがあった場合は、サーバー1416に対し、TCP/IPを用いてアソシエーションを張り、「サーバー生存確認」コマンドを送出する(S153)。規定時間内に応答が返り、かつ「ビジー応答」でなければ(S1517)、分割済み文書変換処理(S154)に移行する。S1516において、検索の結果展開サーバが必要なデータがない場合は、直接分割済み文書変換処理(S154)に移行する。
次に、分割済み文書変換処理が正常終了したかどうかを確認する(S1518)。正常終了なら電子メールデータ送出終了通知に対する正常応答(図15、S115)を送信側の電子メール装置に返し(S159)、図15のS116〜S118に相当するセッション終了処理(S1510)を行う。
メール受信処理が完了したら、次に、受信したデータをプリントし(S1511)、同じく受信した電子メールデータからFAXデータに変換されたものをS1512で所望の宛先にFAX送信する。
FAX宛先の送信元からの指定方法としては、以下のような方式が考えられる。
(1)ヘッダ部で指定する方法
電子メールデータのヘッダ部、例えばメールの題名(Sub:)の後ろに、送信先のFAX番号を付加する。すなわち、図12に示した電子メールデータの例においては、調査報告(FAX03-3756-1234)の様に指定する。或いは送信元アドレスに“FROM: FAX03-3756-1234@xxxx.yyyy.zzzz"の様に指定するなどが考えられる。
(2)本文部で指定する方法
本文部92の中に、電話番号を記述した例えば“FAXNO = 03-3756-1234”という行を付加する。
いずれの場合も、電子データ区切り処理S151において検出を行い、番号を抽出してRAM2002又はHDD2004の所定領域に記憶しておき、S1512において読み出して使用すればよい。
番号の抽出に当たっては、(1)の場合は、”Sub:”または”FROM:”の後ろの文字列から、“FAX(及び数字)”の文字列を、(2)の場合は、“FAXNO=”から始まる行を検索し、それに続く数字の列をそれぞれ抽出すればよい。
一方、S1518で分割済み文書変換処理(S154)が異常終了ならば、S159で正常応答を返す替わりに、すなわち図15におけるS115のタイミングでメール送信元の電子メール装置に対してエラーを応答する(S155)。次いで電子メール装置から「通信終了通知」を受信し(図15、S116)、応答を返す(図15、S117)ことでセッションを終了する(S156)。その後、分割済み文書変換処理中に既に作成済みの「エラーレポート」を、電子データ変換トランザクション管理テーブル21の「電子データ・パス・ファイル名」領域に記録されたファイルから送信元アドレスを“From: aaaaa@xxxx.yyyy.zzzz”のパターンを検索して抽出し、送信元の電子メール・アドレス”aaaaa@xxxx.yyyy.zzzz“に対してエラーレポートの電子メールを送出する(S157)。
S1520、S1521の分割済み文書変換処理は、受信データ処理中に文書変換処理が完全になされない場合に実行される処理であり、既にすべての変換処理が完了している場合は、何も実行されないで次のステップに移行する。
次に、図16にS152として示したの電子データ区切り処理の詳細を、図13、図17〜図20を用いて説明する。なお、以下の説明においては、図12に示したMIMEフォーマットの電子メールデータを受信データとして説明する。
図17〜図20は電子データ区切り処理の詳細を示すフローチャートである。
まず、新たに文書管理テーブル23を獲得し、電子データ変換トランザクション管理テーブル21(以下、トランザクション管理テーブル)の「文書管理テーブル・ポインタ」にリンクする。文書管理テーブルは新たに獲得される度にID管理テーブル213の「文書IDカウンタ」領域の値がインクリメントされ、獲得した文書管理テーブルの「文書ID」領域にセットされる。その際、文書管理テーブルの「受け付け番号」領域には、トランザクション管理テーブル21の同名領域の値がコピーされる。また、文書管理テーブルの「文書順序番号」領域には1から順に新しい文書管理テーブルの獲得の度にインクリメントされた値がセットされる。
次に、トランザクション管理テーブル21の「電子データ・パス・ファイル名」領域に記録された名前のファイルをオープンし、先頭行から1行毎に検索する(S34)。検索の結果、エンド・オブ・ファイルか否か(S331)、空行か(S332)、いずれもNOの場合は、”Content-Type:”が行先頭にあるか確認を確認する(S333)。S331〜S333の確認結果がすべてNOの場合は、次行に移動して同様の確認を繰り返す。図12に示す電子メールデータの場合は4行目まではS331〜S333の確認結果はすべてNOであり、5行目に”Content-Type:”があるためS333からコンテントタイプ解析処理(S35)へ移行する。
ここで、図21を参照してコンテントタイプ解析処理の詳細を説明する。図21は、図17〜図20におけるコンテント解析処理の詳細を示すフローチャートである。先ず、電子メールデータ中の”Content-Type:”に続く文字列を検索する(S42)。文字列が”text/plain;”であれば(S411)、さらに続く文字列を検索する(S46)し、”charset=”であれば(S414)その次の文字列を解析する(S47)。そして、対応する文書管理テーブルの「言語種別」領域に言語種別を表すデータを、同テーブルの「オリジナル文書」領域の「文書種別」領域に「テキスト」をセットする。この際、文字列の解析において言語種別が確定できなかったり、フォントを持っていないなどの理由で対応可能でない言語である場合がある(S415)。その場合、文書管理テーブルの「処理結果」領域に「言語エラー」をセットして(S48)コンテント・タイプ解析処理を終了する。
一方、対応可能な言語であった場合は、文書管理テーブルの「外部処理有無」領域に「なし」を、同「文書変換処理内容」領域に「CG展開+TIFFファイル化」をセットして(S410)コンテント・タイプ解析処理を終了する。
S411にて”Content-Type:”に続く文字列が”text/plain”で無い場合には、”Multipart/Mixed;”であるかを調べる(S412)。そうである場合には、さらに”boundary=”を検索し(S43)、その次にダブルコーテーション("")で囲まれた文字列を取得する。そして、この文字列を電子データ変換トランザクションワーク領域214の「区切り文字列」領域にセット(S44)して、コンテント・タイプ解析処理を終了する。
S42、S412の判断においていずれもNO、すなわち、”Content-type:”に続く文字列が”text/plain;”でも、”Multipart/Mixed;"でもない場合は、S416へ進む。そして、S416及びS417において、”image/tiff;”か”image/jpeg;”であるかを調べる。いずれかに該当すれば文書管理テーブルの「外部処理有無」領域に「なし」を、同「文書種別」領域に「TIFFバイナリ」(”image/tiff;”の場合)又は「JPEGバイナリ」(”image/jpeg;”の場合)をセットする(S49)。以上で、コンテント・タイプ解析処理を終了する。
一方、S416、S417の判定においていずれもNOの場合には、文書管理テーブルの「処理結果」領域にエラーをセットして(S45)コンテント・タイプ解析処理を終了する。
本実施形態においては、図12のメールデータにおいて”Content-type:”に続く文字列は”Multipart/Mixed;”であるから、S43で”boundary=“文字列をさらに検索する。そして、S44で6行目で見つかった"boundary="に続くダブルコーテーション(")で括られた文字列”---Boundary---”を区切り文字列として検出する。そして、この区切り文字列を、電子データ変換トランザクションワーク領域214の「区切り文字列」に格納してS35を終了し、次行の処理に復帰する。
次に、メールデータの9行目の空行をS332で検出する。これにより、電子メールデータのヘッダ部(パート)91のファイル位置を対応する文書管理テーブル23の、「オリジナル文書」領域22の「有効データ先頭・末尾オフセット」領域にセットする。さらに、同領域の「文書パス・ファイル名」領域にトランザクション管理テーブル21の「電子データ・パス・ファイル名」領域のデータをコピーする。次に、同領域の「文書プロファイル」領域にヘッダ部91に示された文字列の範囲をヘッダ文字列情報としてセットする(S36)。
次に、S35におけるヘッダ部91のコンテント・タイプ解析処理の結果を示す「オリジナル文書」領域22の「処理結果」領域がエラーでないことを確認する(S334)。そして、エラーでなければ電子データ変換トランザクションワーク領域214の「区切り文字列」領域に区切り文字列がセットされているかをチェックし(S335)する。上述したように、ヘッダ部91のコンテント・タイプ解析処理は正常に行われ、区切り文字列"---Boundary---"がセット済みなので、次の文字列の検索を行う(S37)。
S336でエンド・オブ・ファイルであるかどうかのチェックを行う。次行は本文パートの先頭行でエンド・オブ・ファイルでないのでS337に移行する。S337では区切り文字列の検出を行う。本文パート92の先頭行は区切り文字列であるので、図18のS38へ移行し、さらに次の文字列検索を行う。ファイルの終端ではない(S342)のでS39に移行し、新たに本文部92用の文書管理テーブル24を獲得かつ初期化し、ヘッダ部91用に獲得済みの文書管理テーブル23の「次ポインタ」領域を用いてその後ろにリンクする。
次に、“Content-Transfer-Encodeing:”文字列の検索(S344)及び”Content-Disposition:”文字列の検索(S346)を行う。しかし、これらが存在せず、”Content-type:”が検出され(S347)、前述のS35と同様のコンテント・タイプ解析処理が行われる。本文部92の”Content-type:”に続く文字列は”text/plain; charset=iso-2022-jp”である。そのため、S411→S414→S47→S48と処理がなされ、文書管理テーブル24の「文書種別」領域には「テキスト」、「言語種別」領域には「日本語S−JIS」がそれぞれセットされた後、S343に復帰する。
以降、各行についてS343以降の処理が繰り返され、本文部92の最終行に達した際、S343において(ヘッダ情報の終わりを意味する)空白行が検出され、S317に移行する。S317は上述のS36の同様の処理であり、文書管理テーブル24の「オリジナル文書」領域の「文書パス・ファイル名」にトランザクション管理テーブル21の「電子データ・パス・ファイル名」領域のデータをコピーする。そして、文書管理テーブル24の「オリジナル文書」領域の「文書プロファイル」領域に本文部92の開始行(”---Boundary---”行から最終行(空行)までのヘッダ文字列情報のセットを行う。次にS320におけるコンテント・タイプ解析処理結果を示す、文書管理テーブル24の「処理結果」領域がエラーを示すデータでない(S348)ので、S312に移行し次の文字列を検索する。
検索の結果、添付ファイル部93の先頭の区切り記号がS341で検出され、S313で本文部92のファイル位置を文書管理テーブル24の「オリジナル文書」領域の「有効データ先頭・末尾オフセット」領域にセットする。
次にS38に移行し、S342でエンド・オブ・ファイルではないので、S39に移行し、新たに添付ファイル部93用の文書管理テーブル25を獲得かつ初期化する。そして、本文部92用に獲得済みの文書管理テーブル24の「次ポインタ」領域を用いてその後ろにリンクする。次に、S344において“Content-Transfer-Encodeing:"文字列が検出され、この文字列に続くエンコード方式を示す文字列は本発明の通信装置または展開サーバー装置で処理可能な"uuencode"である。従って、S311で文書管理テーブル25の「文書種別」領域に「エンコーディッド・テキスト」をセットし処理を続ける。次行の処理において、S347で”Content-Type:”が検出されるため、S320のコンテント・タイプ解析処理に移行する。”Content-type:”に続く文字列が”text/plain;”であり、続く文字列が”charset=”ではないので、S411→S414の処理を行うのみで解析処理を終了し、次行の処理に復帰する。
本実施形態において、通信装置148及び外部の展開サーバ1416が処理可能なエンコード方式、拡張子、言語種別などの情報は、予め通信装置148のコントロールユニット2000内の不揮発性記憶装置に記憶しておくことができる。例えば、ROM2003、HDD2004等に記憶しておき、この情報を元に必要な判断を行うことができる。
次に、添付ファイル部93の4行目の”Content-Disposition:”がS346で検出されるため、図19のS330へ移行する。そこで、文書管理テーブル25の「文書種別」領域に「コンピュータ・プロセッサブル・バイナリ」をセットし、S321で”filename=”に続く、ファイル名を示す文字列”report.doc”を抽出する。抽出したファイル名はその拡張子等によりファイルの種別を解析される(S322)。図12の例においては拡張子は”.doc”であり、本実施形態においては拡張子”.doc”のファイルは外部の展開サーバでなくては展開不能である。そのため、S350においてNO、S351でYESと判断され、文書管理テーブル25の「外部処理有無」領域に「あり」がセットされ(S324)たのち、図18のS343に復帰する。一方、拡張子”.doc”が通信装置148内部で展開可能であれば、S350でYESと判断され、図18のS343に復帰し次行の処理を続ける。通信装置148内部でも展開サーバ1416でも展開不可能な場合には、S351でNOと判断される。この場合、添付ファイル部93に対応する文書管理テーブル25の「処理結果」領域に「受信能力エラー」を示すデータをセット(S325)したのち、図18のS343に復帰し次行の処理を続ける。
以降、uuencode形式でテキスト形式に変換されたファイル”report.doc”が終了すると、添付ファイル部93の最終行の1行前の空行がS343で検出される。S317において、文書管理テーブル25の「オリジナル文書」領域の「文書パス・ファイル名」にトランザクション管理テーブル21の「電子データ・パス・ファイル名」領域のデータをコピーする。また、文書管理テーブル25の「オリジナル文書」領域の「文書プロファイル」領域に添付ファイル部93の開始行(”---Boundary---”行から最終行(空行)までのヘッダ文字列情報のセットを行う。次にS320におけるコンテント・タイプ解析処理結果を示す、文書管理テーブル25の「処理結果」領域がエラーを示すデータでない(S348)ので、S312に移行し次の文字列を検索する。
S341において、添付ファイル部93の次行の区切り文字列が検出されてS313に移行する。そこで、添付ファイル部93のファイル位置を24の次にリンクされている文書管理テーブル25の「オリジナル文書」領域の「有効データ先頭・末尾オフセット」領域にセットし、S38へ移行する。そしてS342において、エンド・オブ・ファイルが検出され、電子データ区切り処理が終了する。
一方、S331でエンド・オブ・ファイルが検出された場合には、図20のS326に移行する。そして、文書管理テーブル23の「オリジナル文書」領域22の「文書変換処理内容」領域に「CG展開+TIFFファイル化」を(S326)、文書管理テーブル23の「外部処理有無」領域に「なし」を(S327)セットする。さらに、テーブル23の「文書種別」領域に「テキスト」をセットし、「文書パス・ファイル名」領域にトランザクション管理テーブル21の「電子データ・パス・ファイル名」領域のデータをコピーする。加えて、「有効データ先頭・末尾オフセット」領域に、先頭位置(又は空行の次)から電子データサイズ末尾位置(又は次の区切り文字列の前の空行の前の位置)をセットする(S328)。
次にコンテント・タイプ解析処理結果を示すテーブル23の「処理結果」領域がエラーを示すデータでないかをチェックし(S360)、エラーでなければ文飾切り処理を終了する。
また、S336又はS340でエンド・オブ・ファイルが検出された場合には、図20のS314に移行する。そして、対応する文書管理テーブルの「処理結果」領域に「区切り位置エラー」を示すデータをセットしてから、上述のS327以降の処理を行う。
S35、S320のコンテント・タイプ解析処理において、解析処理がエラー終了した場合には、S318においてS329と同様にエラーレポート作成用のデータが文書管理テーブルの「文書変換処理内容」領域にセットされる。そして、後述するエラーレポートの作成に用いられる。
図23は、図16においてS154として説明された分割済み文書変換処理の詳細を説明するフローチャートである。
先ず、S52でカレントの文書管理テーブルの参照ポイントを、トランザクション管理テーブル21の「文書管理テーブル・ポインタ」領域が示す、文書管理テーブル23の先頭におく。次の文書管理テーブル24が存在するので、S510ではYESと判断される。次に、S53でカレント文書変換管理テーブルを文書管理テーブル23の「オリジナル文書」領域22に設定する。次の文書変換管理テーブル28が存在するので、S511ではYESと判断され、S54に移行する。S54では詳細を後述するオリジナル文書変換処理を行う。
次に、カレント文書変換管理テーブルを文書管理テーブル23のオリジナル文書領域22にリンクされた次の文書変換管理テーブルに設定する(S55)。リンクされたテーブルキューの末尾までS54のオリジナル文書変換処理を繰り返して、S56に移行する。次に、カレント文書変換管理テーブルを文書管理テーブルの「エラーレポート文書」領域28に設定し(S56)、後述するエラーレポート文書変換を行う(S58)。次に、次の文書変換管理テーブルを参照ポイントとして、「エラーレポート文書」領域28にリンクされる文書変換管理テーブルキューの末尾までS58のエラーレポート文書変換を繰り返す。テーブルキューの末尾まで処理が終わるとS512においてNOと判断され、次に、文書管理テーブルの参照ポイントを次の文書変換管理テーブルにきりかえる(S57)。以上の処理を、すべての文書管理テーブルに関して行うと、S510でNOと判断され、分割文書変換処理が終了する。
図24〜図30、図29及び図30、図31は、図23のオリジナル文書処理(S54)とエラーレポート文書処理(S58)でCallされる関数の詳細を示すフローチャートである。変換制御は、図22の状態遷移に従って動作する。基本的な制御は、変換の1ステップ毎に、変換された出力データを保存するための、出力用の文書変換処理テーブルを獲得してから変換処理を実行する。そして、完了すると出力側の変換データが次の変換の変換元データとなり、またその出力用の文書変換処理テーブルを確保してリンクしていく。
図22は、図24〜図30に示す、分割済み文書変換処理の制御を行うための状態遷移図である。各状態の意味を以下に示す。
「前段変換処理待ち(1101)」…前段階の変換処理の完了を待っている状態
「IDLE(1102)」…変換処理の準備開始(変換パラメータの設定)ができる状態
「情報設定完了(1103)」…変換処理の準備(変換パラメータの設定)が完了して、変換処理に移行した状態
「変換完了(1105)」…変換処理が完了した状態
「エラー後処理中(1104)」…変換処理がエラーとなり、後処理のための「エラーレポート」作成の為の準備処理を行っている状態
次に、分割済み文書変換をさらに分かり易く説明するため、図12の電子メールデータを受信し、図17〜図20、図21で示した電子データ区切り処理の実行後に実行される分割済み文書変換処理を説明する。図23、図24〜図30、図29及び図30、図31を用いて説明する。
説明に先立って、先ず図12の電子メールデータを受信し、上述した電子データ区切り処理、コンテント・タイプ解析処理を実行後の管理データの連接関係を図13の電子データ管理テーブルのデータ構造図をもとに説明する。
電子データ変換トランザクション管理テーブル21にヘッダ部91が第1番めの文書管理テーブル23としてリンクされている。また、「文書種別」領域には「テキスト」、「言語種別」領域には「ASCII」、「文書変換処理ステータス」領域には「IDLE」がセットされている。
次に、本文部92は2番めの文書管理テーブル24として文書管理テーブル23にリンクされる。その「文書種別」領域には「テキスト」、「言語種別」領域には「日本語S−JIS」、「文書変換処理ステータス」領域には「IDLE」がセットされている。また、「受信セッション中変換処理有無」領域には「あり」セットされているものとする。
次に、添付ファイル部93は第3番目の文書管理テーブル25として文書管理テーブル24にリンクされ、その「文書種別」領域には「エンコーディッド・テキスト」がセットされている。
図23のS52で処理対象の文書管理テーブルを最初の文書管理テーブル23(ヘッダ部91の情報がセットされている)として設定し、S53で文書管理テーブル23の先頭の文書変換処理管理テーブルを処理対象として設定する。次に、S54でオリジナル文書変換処理を実行する。
図24のS61で文書管理テーブル23の「文書変換処理ステータス」領域がチェックされ、該ステータスは「IDLE」なのでS637〜S640では分岐せずにS62に進み、「文書種別」領域がチェックされる。文書管理テーブル23の「文書種別」領域には「テキスト」がセットされているのでS641で分岐し、図25のS65に進む。次にS65では変換に必要なパラメータがそろっているので文書管理テーブル23の「文書変換処理ステータス」領域に「変換情報設定完了」をセットする。S66で、テーブル23の「文書変換処理管理テーブル・ポインタ」に変換後の文書情報をセットするために最終変換文書である文書変換処理管理テーブル29をリンクする。S67で22の「内部外部処理指定」領域に「内部」、「文書変換処理内容」領域に「CG展開+TIFFファイル変換」、「文書変換後処理」領域に「ファイルを残す」等のパラメータをセットする。
次にS68で文書変換処理管理テーブル29を処理対象テーブルに設定しページ管理テーブル210の獲得とパラメータ設定を行う。S69でオリジナル文書領域22の「文書種別」領域に「TIFFバイナリ」をセットし、S610で22の「文書プロファイル」領域に、作成するTIFFファイルにセットすべきパラメータをセットする。S611でページ管理テーブル210の「展開画像ファイル・パス・ファイル名」領域に、変換元のオリジナル文書であるファイル(内容は図12の内容)をオープンする。このファイルは、オリジナル文書領域22の文書プロファイルである「文書パス・ファイル名」領域で示される。そして、オリジナル文書領域22の「有効データ先頭・末尾オフセット」領域に設定された範囲でファイル・シークを行う。そして、例えばヘッダ部91の3行目の”Subject:”に続く文字列の"調査報告"を用いて変換後のファイル名”調査報告.tiff”をセットする。そして、S612で文書管理テーブル23の「文書変換処理ステータス」領域に「変換完了」をセットして、図24のS63に復帰する。
S63(S647)ではオリジナル文書領域22の「受信セッション中変換有無」領域を確認し「あり」なのでS64のコンバート処理(詳細の説明は後で記す)を実行しASCIIテキストからTIFF画像ファイルに変換する。変換されたファイル名はS610で設定された「パス・ファイル名」(”調査報告.tiff”)となる。S648においてコンバート処理が正常終了であった場合はオリジナル文書変換処理(図23、S54)を終了する。
次に、S55及びS511で次の処理対象の文書変換管理テーブルを探し、存在しないのでS56に進む。エラーレポート文書も存在しないのでS57において次の処理対象の文書管理テーブルとして本文部92処理用の文書管理テーブルである文書管理テーブル24を選択し、S510以降の処理をヘッダ部91と同様に行う。本文部92の文書変換処理は漢字のCG展開を行うことを除き前述したヘッダ部91の文書変換処理とほぼ同様なので説明は省略する。
本文部92の文書変換処理が正常終了すると、S57では、次の処理対象の文書管理テーブルとして添付ファイル部93処理用の文書管理テーブル25を選択する。S53では文書管理テーブル25の先頭の文書変換処理管理テーブルを処理対象として設定する。次に、S54でオリジナル文書変換処理を行う。
S61で文書管理テーブル25の「文書変換処理ステータス」領域がチェックされ、文書管理テーブル23と同様に「IDLE」なのでS637〜S640では分岐せずS62に進む。「文書種別」領域が「エンコーディド・テキスト」なのでS642で分岐して図26のS613に進む。S613では文書管理テーブル25の「文書変換処理ステータス」領域に「変換情報設定完了」をセットする。S614で添付ファイル部93のプロファイル情報(93の2行目から4行目)から”Content-Type:”を検索し、それに続く文字列が”text/plain;”なので、S649で分岐し、図27のS651に移行する。S651においてもNOと判断されるのでさらに分岐し、図28のS629に移行する。
S629では、文書変換処理管理テーブルを新規に獲得し(図示せず)、S630で文書管理テーブル25の「文書変換処理管理テーブル・ポインタ」領域にリンクする。次に、獲得した文書変換処理管理テーブルの「内部外部処理指定」領域に「外部」、「文書変換処理内容」領域に「外部サーバ変換処理」、「文書変換後処理」領域に「ファイルの消去」等のパラメータをセットする(S631)。次に、獲得した文書変換処理管理テーブルの初期設定を行い(S632)、その「文書プロファイル」領域に添付ファイル部93の2行目から4行目の文書プロファイル情報をセットする(S633)。次にS634で「文書種別」領域に「コンピュータ・プロセッサブル・バイナリ」をセットする。S635で「文書プロファイル」からファイル名である“report.doc”を抽出し、S630で獲得した文書変換処理管理テーブルの「文書パス・ファイル名」領域にセットする。そして、S636でこのテーブルの「文書変換処理ステータス」領域に「前段変換終了待ち」をセットして、図24のS63へ移行する。「文書変換処理ステータス」領域が「前段変換終了待ち」にセットされていると、外部サーバ(展開サーバ)の変換処理が完了するまで添付ファイル処理に関する次の処理を進行させない。例えば、外部ファイルサーバからの変換済みデータ受信が完了するまでプリント等の処理を行わない等が考えられる。
次に、図31を用いてS64のコンバート処理の詳細を説明する。以下の説明においては図12のヘッダ部91の文字列をCG展開とTIFF画像ファイルに変換する場合を想定して説明する。
S81で処理中の文書変換処理管理テーブルの「文書変換ステータス」領域に「変換処理中」をセットしCG展開とTIFF画像ファイル変換処理が完了するまで、次の処理に移行しないように制御する。次にこのテーブルの「文書変換処理内容」領域が「CG展開+TIFF化変換」にセットされているのでS830で分岐し、図32のS816に進みヘッダ部91の文字列をビットマップ画像に変換する。S817でMMR(2次元符号)圧縮し、S818でTIFFファイルに変換して、図31のS835に移行する。S835でテーブルの「処理結果」領域がエラーの場合は、S810で文書管理変換処理テーブルの「エラーレポート作成有無」領域を確認する。エラーレポートを作成「する」がセットされていればS811で22の「文書変換処理ステータス」領域に「エラー後処理中」をセットしコンバート処理を終了する。また、エラーレポートを作成「しない」がセットされている場合は、「文書変換処理ステータス」領域に「処理完了」をセットしてコンバート処理を終了する。
S811で「文書変換処理ステータス」領域に「エラー後処理中」がセットされると、図24〜図30のオリジナル文書/エラーレポート変換処理において、S648で分岐してS61に戻る。そして、S639で分岐して図29のS71に移行することでエラーレポート作成処理に移行する。
一方、図12の添付ファイル部93のコンバート処理の場合は、S833で分岐して図33のS819に移行する。そして、添付ファイル部93に記載された、「uuencodeで変換されたreport.docの内容」であるエンコーディド・テキストの展開をLAN(Local Area Network)や電話回線等で接続された外部サーバ(展開サーバ)に依頼する。
S820で展開サーバ装置から、エンコーディド・テキストからTIFFファイルに変換されたデータの1ページ、文書など所定単位をエラー無く受信したならば、S821へ進む。そして、S821で受信ファイルのTIFFファイルデータをページ管理テーブルで示した「展開画像ファイル・パス・ファイル名」で示したファイルに書き込むとともに、受信データが正しいかどうかチェックする。更に、TIFFファイルデータから文書プロファイル情報を抽出し文書管理テーブルの「文書プロファイル」領域に格納するとともに、受信データのデコードを行い受信画像のエラー有無を確認する。次に、「ページ単位に受信するモード」が「YES」ならばS822で1ページ毎にページ管理テーブルを獲得し210、211、212のようにページ管理テーブルキューを作成していく。次に、S823でページ管理テーブルの「ページ数」をインクリメントしてゆく。一方「NO」ならばS825で新たなページ管理テーブルは作成せずに、S820に移行する。
次に、添付ファイル部93の処理中に展開サーバ1416からの受信がエラーした場合の処理に関して図33を用いて説明する。データ受信処理(S820)においては、受信データのエラー訂正は例えばTCP/IPプロトコルで実現される。しかし、通信タイムアウト等の回復不能なエラーが発生した場合は、文書管理テーブル25内の文書変換処理管理テーブル領域の「処理結果」領域に「展開サーバーエラー」がセットされ(S824)、図31のS835に復帰する。「処理結果」領域がエラーとなっているため、S835で分岐し、S810で「文書変換処理管理テーブル」の「エラーレポート作成有無」領域がチェックされる。作成「する」ならば、S811で「文書変換処理ステータス」領域に「エラー後処理中」を、「しない」ならばS812で同領域に「変換完了」をセットして、コンバート処理、すなわち図24のS64を終了する。以下、「エラーレポート作成有無」領域が「あり」の場合を説明する。
次に、図24のS648において、「文書変換処理ステータス」領域が「エラー後処理中」なのでS61に移行し、「文書変換処理ステータス」が「エラー後処理中」なのでS639で分岐する。図29のS71に移行しエラーレポートのテキストデータを作成するために「文書変換処理ステータス」を「変換完了」にセットする。次にS73で、エラーレポートのテキストデータ生成処理を行うための処理を行なう。文書管理テーブル25の「エラー文書変換処理管理テーブル・ポインタ」領域に、エラーが発生した展開サーバー処理に使用された文書管理テーブル25内の「オリジナル文書」領域の「文書変換処理管理テーブル」アドレスをセットする。
次にS74で、展開サーバにより展開後のデータを格納するために用いられた「文書変換処理管理テーブル」を、エラーレポートのテキストデータを作成するために再利用するための処理を行なう。つまり、次に処理すべき処理中ポインタとして、文書管理テーブル25内の「オリジナル文書」領域の「文書変換処理管理テーブル」にリンクされている「文書変換処理管理テーブル・ポインタ」アドレスをセットする。
S75で該処理中ポインタが指す「文書種別」領域に「エラーレポート・作成元データ」をセットし、S76で該処理中ポインタが指す「文書変換処理ステータス」領域に「IDLE」をセットする。S72で「文書変換処理内容」領域を「エラーレポート作成」にセットすることで、エラーレポートのテキストデータ作成処理が継続される。
次に再び図24のS61に移行し、処理中ポインタが指し示す「文書変換処理ステータス」領域が「IDLE」なので、S637〜S640では分岐せず、S62に移行する。ここでは、「エラーレポート文書」領域の文書変換処理テーブル28の「文書種別」領域がチェックされる。同領域はS75において「エラーレポート・作成元データ」がセットされているので、S77(図30)に移行する。この最、処理中ポインタには、文書管理テーブル25の「文書変換処理テーブル・ポインタ」領域が指し示す「文書変換処理テーブル」アドレスがセットされている。S77では、処理中ポインタが指し示す「文書変換処理テーブル」の「文書変換処理ステータス」領域に「変換情報設定完了」をセットする。S78での処理中ポインタが指し示す「文書変換処理管理テーブル」の「次ポインタ」領域に文書管理テーブル25内の「エラーレポート文書」領域の先頭アドレスがセットされる。
次にS79で処理中ポインタに該「エラーレポート文書」の先頭アドレスがセットされる。S710で該処理中ポインタが指し示す、エラーレポート文書用「文書変換処理管理テーブル」の「文書種別」領域に「テキスト」がセットされエラーレポート用のテキスト変換が必要であることを指定する。次にS711で処理中ポインタが指し示す「文書変換処理管理テーブル」の「文書変換処理ステータス」領域に「前段変換終了待ち」をセットして、オリジナル文書変換処理、すなわち図23のS54を終了する。
次にS55(図23)でカレント文書変換処理テーブルポインタを次のそれに更新するが、添付ファイル部93に対応する文書管理テーブル25にリンクされている文書変換処理テーブルは存在しない。従って、S511では分岐せずS56に移行し、カレント文書変換処理テーブルを文書管理テーブル25の「エラー文書変換管理テーブル・ポインタ」の内容とする。もしこのポインタにデータが設定済みであれば、エラーレポート文書が存在するので、エラーレポート文書変換処理(S58)に移行する。
図24から開始するエラーレポート文書変換処理では、S61でカレント文書変換管理テーブルの「文書変換処理ステータス」領域がチェックされる。前述の通り、S71(図29)で「変換完了」にセット済みなので、S638で分岐し、エラーレポート文書変換処理を終了して、S59(図23)に復帰する。S59でカレント文書変換処理テーブルの次にリンクされている「文書変換管理テーブル」をカレント文書変換処理テーブルにセットし、再度S58のエラーレポート文書変換処理に移行する。エラーレポート文書変換処理では、S61(図24)でカレント文書変換管理テーブルの「文書変換処理ステータス」がチェックされる。前述したようにS77(図30)で「変換情報設定完了」にセット済みなので、S640で分岐してS63に移行し、現在は既に受信セッション中でないのでS64に移行しコンバート処理(図31)を実行する。
コンバート処理では、S81でカレント文書変換処理テーブルの「文書変換処理ステータス」領域を「変換処理中」にセットする。S82のチェックでは、前述の通りS72(図29)で「文書変換処理内容」が「エラー・レポート作成」に設定済みなのでS834で分岐し、S85に移行する。カレント文書管理テーブルの「言語種別」領域は、コンテントタイプ解析処理(図21、S47)において、「日本語S−JIS」が設定されている。また、カレント文書管理テーブルの「エラー文書変換処理管理テーブル・ポインタ」領域の示す「文書変換処理テーブル」の「処理結果」が、「展開サーバエラー」である(S824(図33)でセット済み)ことが判明する。そのため、Shift−JIS形式の文字コードで、例えば図37に示すようなエラーレポートのテキストデータを生成し、カレント文書変換処理テーブルの「文書パス・ファイル名」のテキストファイルとして書き込む(S85)。
次に、テキスト生成処理が正常なので、S835では分岐せず、カレント文書変換処理テーブルの「次ポインタ」領域にリンクされている「文書変換処理テーブル」の「文書変換処理ステータス」領域をチェックする(S83)。その内容が「前段変換終了待ち」ならば、S836でYESと判断されたのち、「IDLE」にセットし直し(S84)てからコンバート処理を終了する。
図24におけるコンバート処理(S64)が終了し、「文書変換処理ステータス」領域が「エラー後処理中」でないので、エラーレポート変換処理を終了し、図23のS59に移行する。次に、S59で、カレント文書変換処理テーブルを(現在の)カレント文書変換処理テーブルの「次ポインタ」領域にリンクされている「文書変換処理テーブル」に設定する。次テーブルが存在するので、S512でYESと判断され、S58で再度エラーレポート変換処理を行う。カレント文書変換処理テーブルの内容はS710(図30)でセットされた内容で、「文書種別」領域は「テキスト」と設定されており、これからの処理は前述したヘッダ部91に対する処理と同等であるため説明は省略する。
以上は、展開サーバーとの通信エラー時の処理を説明した。展開サーバーが展開元データを展開する際にエラーを検知した場合は、展開サーバー側で前記エラーレポートを生成し、本実施形態の通信装置に対し画像ファイルとして送信するようにしてもよい。また、展開サーバー側がエラー情報を通信装置に対して通知して、本通信装置がエラーレポートを作成してもよい。
図34は、図33のS819において、本発明の通信装置148内で展開できないデータについて、画像展開サーバ1418に対して展開依頼を行う際に用いる展開依頼のプロトコルシーケンス図である。画像展開サーバ1418はLAN2011(WAN2051でもよい)を介して接続されている。本実施形態において、プロトコルにはTCP/IPを用いている。
すなわち、まず、本発明の通信装置から展開サーバ装置に対しTCP/IPによって展開処理のデーモンプロセスに対応するポート番号(xxとする)でアソシエーションする(S121)。次に、展開サーバ装置が応答(S122)して、文書展開依頼のセッションが開始される。次いで「展開依頼」コマンドを展開サーバ装置に対し送出し(S123)、展開処理のセッションの開始を依頼する。
次に、通信装置は、展開サーバ装置の応答(S124)を受けて、展開依頼するデータに関する情報「展開制御データ」を通知するために「展開制御データ転送要求」コマンドを展開サーバ装置に対し送出する(S125)。そして、サーバからの正常応答(S126)を待って展開制御データを送信する(S127)。展開制御データとしては例えば、「言語種別」、「画像展開する紙サイズ」(A4、B4等)、「画像展開する際に展開画像を複数ページを1ファイルにまとめる」か「1ページ毎1ファイルにする」、「受け付け番号」等の情報が渡される。
展開制御データの送信が終了し、サーバからの正常応答(S128)を受け取ると、通信装置は展開データの送信要求コマンドをサーバに送信する(S129)。そして、サーバの応答(S1210)を待って、管理テーブル(図13)の所定領域に記録された情報に基いて展開データである電子メールデータ(添付ファイルデータ)を送信する(S1211)。この際に送信される展開データは、テキストからバイナリデータに変換(デコード)された「コンピュータ・プロセッサブル・バイナリ」ファイルである。展開要求を行う必要のある添付ファイルが複数ある場合には、上述の展開制御データ転送要求コマンドの送出(S125)からのステップを繰り返すことにより1回のセッションでの送出が可能である。電子メールデータの送信終了後、サーバの正常応答(S1212)を受信し、展開要求を行うべき(送信すべき)ファイルがなくなった時点で、通信装置は「セッション終了要求」コマンドを展開サーバ装置に対し送出する(S1213)。そして、それに対するサーバの正常応答(S1214)受信後、ポート切断要求を送信(S1215)してセッションが終了する。
一方、画像展開サーバ1416から通信装置148に対して展開済みの画像データを送る際に用いる展開済み文書転送プロトコルシーケンスを図35に示す。通信装置から展開依頼を行う場合と同様、TCP/IPによる。また、予め通信装置から「1ページ毎に1ファイルにする」展開制御データを受信していたものとする。
展開サーバ装置1416から通信装置148に対しTCP/IPにより、通信装置で動作している展開済み文書受信用のデーモンプロセスに対応するポート番号(xxとする)でアソシエーションする(S131)。これに対する通信装置の応答(S132)を受けて、サーバが「展開済みファイル転送セッション開始要求」コマンドを送信する(S133)。このコマンドに対して通信装置が正常応答して(S134)、展開済み文書転送のセッションが開始される。
先ず、展開サーバ装置から「展開済み文書転送要求」コマンドを送信する(S135)。通信装置はこのコマンドを受信すると、受信用メモリやテーブルの獲得等の受信準備を行った後に応答を返す(S136)。サーバは応答を受けて「受け付け番号」、「展開処理結果」等の「展開結果データ」を送信する(S137)。通信装置は受信した展開結果データのうち必要なデータを、管理テーブル(図13)の所定領域に設定した後に応答を返す(S138)。
展開サーバ装置は1ページ目の「展開済みファイルデータ転送要求」コマンドを送信する(S139)。通信装置はこのコマンドから得た送信されるファイルに関する情報を同じく管理テーブルの所定領域に設定した後に応答を返す(S1310)。サーバはこの応答を受けてTIFFバイナリに展開済みのファイルデータ(1ページ目)を送信する(S1311)。本実施形態では「1ページ毎1ファイルにする」ように展開要求時に設定されている。そのため、通信装置は受信したファイルをHDD2004等に保存する。また、文書管理テーブル23の最終変換文書領域29のページ管理テーブルポインタ領域にリンクされたページ管理テーブル210に管理情報を格納し、応答を返す(S1312)。
次いでサーバと通信装置は2ページ目のファイルについて、S139〜S1312のステップを実行し、通信装置ではページ管理テーブル211に2ページ目のファイルの過人利情報が格納される。以降残りのページについても同様の処理を繰り返す。最終(Nとする)ページについても同様に転送要求(S1313)〜ファイルデータの送信(S1315)を行う。通信装置が受信後の正常応答(S1316)を行うと、展開サーバ装置は「データ転送終了通知」コマンドを送信する(S1317)。通信装置からの正常応答(S1318)を受信し、正常に全てのページの送信が終了したことを確認し、他の展開済み文書がなければ、サーバは「セッション終了要求」コマンドを送信する(S1319)。複数文書を送信する場合は、「展開済み文書転送」コマンドの送信(S135)からS1318までを繰り返す。通信装置が「セッション終了要求」コマンドを受信し、正常応答(S1320)を返すと、展開サーバ装置が「ポート切断要求」コマンドを送信してセッションを終了する。
図36は、受信した電子データを本発明の通信装置のプリント装置で印字できる画像データに変換後に、他のプリントデータとページ単位で混在しないように制御するプリント処理フローチャートである。
先ず、受信データを格納し各種変換処理に使用した電子データ変換トランザクション管理テーブル21(図13)を参照する(S161)。そして、その「文書管理テーブル・ポインタ」領域にリンクされた「文書管理テーブル」をカレント文書管理テーブルとしてセットする(S162)。S1614で全文書管理テーブルを参照し終わったかチェックし、参照し終わったならば処理を終了し、さもなくばS163で「文書管理テーブル」の「エラーレポート文書」領域をカレント文書変換処理テーブルとして参照する。次にカレント文書管理テーブル内の全文書変換処理テーブルの参照が終了したか確認する(S1611)。YESでかつエラーレポート文書を参照中でないならば(S169)、S168でカレント文書管理テーブルを該テーブルの「次ポインタ」領域の内容にセットして、S1614に復帰する。
一方、S169において現在エラーレポートを参照中ならばカレント文書管理テーブルの「最終変換文書」領域をプリント用の文書としてカレント文書処理テーブルとして設定し(S1610)てS1611に移行する。そして、全文書変換処理テーブルを参照し終わっていないので、カレント文書変換処理テーブルの「文書種別」領域を参照し「TIFFバイナリ」または「JPEGバイナリ」であるかを確認する(S1615)。もしいずれかに該当する場合は、カレント文書変換処理テーブルの「文書パス・ファイル名」領域がセット済みかをチェックし(S1616)、セットされていればそのファイルをプリントする(S1617)。
一方、未セットならば、S164でカレント文書変換処理テーブルの「ページ管理テーブルポインタ」をカレントページ管理テーブルとして設定し、全ページが参照済みかチェックする(S1612)。前ページ参照済みならばS167で次のカレント文書変換管理テーブルを次のそれに設定しS1611に移行する。
一方、S1612で全ページを参照済みでないならば、カレントページ管理テーブルの「展開画像ファイル・パス・ファイル名」領域をチェックし(S1613)する。未セットならばS166へ移行し、さもなくばS165でセットされたファイルのプリントを行う。次にS166でカレントページ管理テーブルに該テーブルの「次ポインタ」の内容をセットし、S1612に移行する。このようにして、順次、文書変換管理テーブルの全ページを処理→全文書管理テーブルを処理→全文書管理テーブルを処理して、プリント処理が終了する。
[他の実施形態]
なお、上述の実施形態においては、複写機とFAX機能を有する複合機を例日本発明を適用した例を用いて説明した。しかし、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになるが、簡単に説明すると、図16に示すフローチャートを実現可能なモジュールを記憶媒体に格納することになる。