[第1の実施形態]
<システム概要>
本発明の情報処理システムに好適な第1の実施形態である文書処理システムの概要を、図1〜図12を参照して説明する。この文書処理システムでは、一般アプリケーションにより作成されたデータファイルが、電子原稿ライタによって電子原稿ファイルに変換される。製本アプリケーションはその電子原稿ファイルを編集する機能を提供している。以下、その詳細は説明する。
<システム構成及び動作>
図1は、本実施形態の文書処理システムのソフトウェア構成を示す図である。文書処理システムは、本発明の情報処理装置に好適な実施形態であるデジタルコンピュータ101(以下、ホストコンピュータとも呼ぶ)によって実現されている。一般アプリケーション101は、ワードプロセシングやスプレッドシート、フォトレタッチ、ドローあるいはペイント、プレゼンテーション、テキスト編集などの機能を提供するアプリケーションプログラムであり、OSに対する印刷機能を有している。これらアプリケーションは、作成された文書データや画像データなどのアプリケーションデータを印刷するにあたって、オペレーティングシステム(OS)により提供される所定のインターフェース(一般に、GDIと呼ばれる)を利用する。すなわち、アプリケーション101は、作成したデータを印刷するために、前記インターフェースを提供するOSの出力モジュールに対して、あらかじめ定められる、OSに依存する形式の出力コマンド(GDI関数と呼ばれる)を送信する。出力コマンドを受けた出力モジュールは、プリンタ等の出力デバイスが処理可能な形式にそのコマンドを変換し、変換されたコマンド(DDI関数と呼ばれる)を出力する。出力デバイスが処理可能な形式はデバイスの種類やメーカ、機種などによって異なるために、デバイスごとにデバイスドライバが提供されており、OSではそのデバイスドライバを利用してコマンドの変換を行い、印刷データを生成し、JL(Job Language)でくくることにより印刷ジョブが生成される。OSとしてマイクロソフト社のウインドウズを利用する場合には、前述した出力モジュールとしてはGDIと呼ばれるモジュールが相当する。
電子原稿ライタ102は、前述のデバイスドライバを改良したものであり、本文書処理システム実現のために提供されるソフトウェアモジュールである。ただし、電子原稿ライタ102は特定の出力デバイスを目的としておらず、後述の製本アプリケーション104やプリンタドライバ106により処理可能な形式に出力コマンドを変換する。この電子原稿ライタ102による変換後の形式(以後電子原稿形式と呼ぶ)は、ページ単位の原稿を詳細な書式をもって表現可能であれば特に問わない。実質的な標準形式のうちでは、例えばアドビシステムズによるPDF形式や、SVG形式などが電子原稿形式として採用できる。アプリケーション101により電子原稿ライタ102を利用させる場合には、出力に使用するデバイスドライバとして電子原稿ライタ102を指定してから印刷を実行させる。ただし、電子原稿ライタ102によって作成されたままの電子原稿ファイルは、電子原稿ファイルとして完全な形式を備えていない。そのため、デバイスドライバとして電子原稿ライタ102を指定するのは製本アプリケーション104であり、その管理下でアプリケーションデータの電子原稿ファイルへの変換が実行される。製本アプリケーション104は、電子原稿ライタ102が生成した新規の不完全な電子原稿ファイルを後述する形式を備えた電子原稿ファイルとして完成させる。以下では、この点を明瞭に識別する必要がある際には、電子原稿ライタ102によって作成されたファイルを電子原稿ファイルと呼び、製本アプリケーションによって構造を与えられた電子原稿ファイルをブックファイルと呼ぶ。また、特に区別する必要がない場合は、アプリケーションにより生成されるドキュメントファイル、電子原稿ファイル、及びブックファイルをいずれも文書ファイル(または文書データ)と呼ぶ。
このようにデバイスドライバとして電子原稿ライタ102を指定し、一般アプリケーション101によりそのデータを印刷させることで、アプリケーションデータはアプリケーション101によって定義されたページ(以後論理ページあるいは原稿ページと呼ぶ)を単位とする電子原稿形式に変換され、電子原稿ファイル103としてハードディスクなどの記憶媒体に格納される。なお、ハードディスクは、本実施形態の文書処理システムを実現するコンピュータが備えているローカルドライブであってもよいし、ネットワークに接続されている場合にはネットワーク上に提供されるドライブであっても良い。
製本アプリケーション104は電子原稿ファイルあるいはブックファイル103を読み込み、それを編集するための機能を利用者に提供する。ただし製本アプリケーション104は、各ページの内容を編集する機能は提供しておらず、ページを最小単位として構成される、後述する章やブックの構造を編集するための機能を提供している。
製本アプリケーション104によって編集されたブックファイル103を印刷する際には、製本アプリケーション104によって電子原稿デスプーラ105が起動される。電子原稿デスプーラ105は、製本アプリケーションと共にコンピュータ内にインストールされるプログラムモジュールであり、製本アプリケーションで利用するドキュメント(ブックファイル)を印刷する際に、プリンタドライバへ描画データを出力するために使用されるモジュールである。電子原稿デスプーラ105は、指定されたブックファイルをハードディスクから読み出し、ブックファイルに記述された形式で各ページを印刷するために、前述したOSの出力モジュールに適合する出力コマンドを生成し、不図示の出力モジュールに出力する。その際に、出力デバイスとして使用されるプリンタ107のドライバ106がデバイスドライバとして指定される。出力モジュールは、指定されたプリンタ107のデバイスドライバ106を用いて受信した出力コマンドを、プリンタ107で解釈実行可能なデバイスコマンドに変換する。そしてデバイスコマンドはプリンタ107に送信され、プリンタ107によってコマンドに応じた画像が印刷される。
図2は、コンピュータ100のハードウェアブロック図である。図2において、CPU201は、ROM203のプログラム用ROMに記憶された、あるいはハードディスク211からRAM202にロードされたOSや一般アプリケーション、製本アプリケーションなどのプログラムを実行し、図1のソフトウエア構成や、後述するフローチャートの手順を実現する。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。キーボードコントローラ(KBC)205は、キーボード209や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)206は、CRTディスプレイ210の表示を制御する。ディスクコントローラ(DKC)207は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、後述する編集ファイル等を記憶するハードディスク(HD)211やフロッピー(登録商標)ディスク(FD)等とのアクセスを制御する。PRTC208は、接続されたプリンタ107との間の信号の交換を制御する。NC212はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
<電子原稿データの形式>
編集アプリケーション104の詳細に言及する前に、ブックファイルのデータ形式を説明する。ブックファイルは紙媒体の書物を模した3層の層構造を有する。上位層は「ブック」と呼ばれ、1冊の本を模しており、その本全般に係る属性が定義されている。その下の中間層は、本でいう章に相当し、やはり「章」と呼ばれる。各章についても、章ごとの属性が定義できる。下位層は「ページ」であり、アプリケーションプログラムで定義された各ページに相当する。各ページついてもページごとの属性が定義できる。ひとつのブックは複数の章を含んでいてよく、また、ひとつの章は複数のページを含むことができる。
図3(A)は、ブックファイルの形式の一例を模式的に示す図である。この例のブックファイルにおいては、ブック,章,ページは、それぞれに相当するノードにより示されている。ひとつのブックファイルはひとつのブックを含む。ブック,章は、ブックとしての構造を定義するための概念であるから、定義された属性値と下位層へのリンクとをその実体として含む。ページは、アプリケーションプログラムによって出力されたページごとのデータを実体として有する。そのため、ページは、その属性値のほか、原稿ページの実体(原稿ページデータ)と各原稿ページデータへのリンクを含む。なお、紙媒体等に出力する際の印刷ページは複数の原稿ページを含む場合がある。この構造に関してはリンクによって表示されず、ブック、章、ページ各階層における属性として表示される。
図3において、ブック301には、ブック属性が定義されているとともに、2つの章302A,302Bがリンクされている。このリンクにより、章302A,302Bがブック301に包含されていることが表示される。章302Aには、ページ303A,303Bがリンクされ、これらページが含まれることが示されている。各ページ303A,303Bにはそれぞれ属性値が定義され、その実体である原稿ページデータ(1)、(2)へのリンクが含まれる。これらリンクは、図3(B)に示す原稿ページデータ304のデータ(1),(2)を指し示し、ページ303A、303Bの実体が、原稿ページデータ(1)、(2)であることを表示する。
図4は、ブック属性のリストである。下位層と重複して定義可能な項目に関しては、下位層の属性値が優先採用される。そのため、ブック属性にのみ含まれる項目に関しては、ブック属性に定義された値はブック全体を通して有効な値となる。しかし、下位層と重複する項目については、下位層において定義されていない場合における既定値としての意味を有する。なお、図示された各項目は具体的に1項目に対応するのではなく、関連する複数の項目を含むものもある。
図5は章属性の、図6はページ属性のリストである。章属性とページ属性との関係もブック属性と下位層の属性との関係と同様である。
ブック属性に固有の項目は、印刷方法、製本詳細、表紙/裏表紙、インデックス紙、合紙、章区切りの6項目である。これらは、ブックを通して定義される項目である。印刷方法属性としては、片面印刷、両面印刷、製本印刷の3つの値を指定できる。製本印刷とは、別途指定する枚数の用紙を束にして2つ折りにし、その束をつづり合わせることで製本が可能となる形式で印刷する方法である。製本詳細属性としては、製本印刷が指定されている場合に、見開き方向や、束になる枚数等が指定できる。
表紙/裏表紙属性は、ブックとしてまとめられる電子原稿ファイルを印刷する際に、表紙および裏表紙となる用紙を付加することの指定、及び付加した用紙への印刷内容の指定を含む。インデックス紙属性は、章の区切りとして、印刷装置に別途用意される耳付きのインデックス紙の挿入の指定およびインデックス(耳)部分への印刷内容の指定を含む。この属性は、印刷用紙とは別に用意された用紙を所望の位置に挿入するインサート機能を持ったインサータが使用する印刷装置に備えられている場合か、あるいは、複数の給紙カセットを使用可能である場合に有効となる。これは合紙属性についても同様である。
合紙属性は、章の区切りとして、インサータからあるいは給紙カセットから供給される用紙の挿入の指定、および、合紙を挿入する場合には、給紙元の指定などを含む。
章区切り属性は、章の区切り目において、新たな用紙を使用するか、新たな印刷ページを使用するか、特に何もしないか等の指定を含む。片面印刷時には新たな用紙の使用と新たな印刷ページの使用とは同じ意味を持つ。両面印刷時には、「新たな用紙の使用」を指定すれば連続する章が1枚の用紙に印刷されることは無いが、「新たな印刷ページの使用」を指定すれば、連続する章が1枚の用紙の表裏に印刷されることがあり得る。
章属性に関しては、章に固有の項目はなく、すべてブック属性と重複する。したがって、章属性における定義とブック属性における定義とが異なれば、章属性で定義された値が優先する。ブック属性と章属性とにのみ共通する項目は、用紙サイズ、用紙方向、N−up印刷指定、拡大縮小、排紙方法の5項目である。このうち、N−up印刷指定属性は、1印刷ページに含まれる原稿ページ数を指定するための項目である。指定可能な配置としては、1×1や1×2、2×2、3×3、4×4などがある。排紙方法属性は、排出した用紙にステイプル処理を施すか否かを指定するための項目であり、この属性の有効性は使用する印刷装置がステイプル機能を有するか否かに依存する。
ページ属性に固有の項目には、ページ回転属性、ズーム、配置指定、アノテーション、ページ分割などがある。ページ回転属性は、原稿ページを印刷ページに配置する際の回転角度を指定するための項目である。ズーム属性は、原稿ページの変倍率を指定するための項目である。変倍率は、仮想論理ページ領域のサイズを100%として指定される。仮想論理ページ領域とは、原稿ページを、Nup等の指定に応じて配置した場合に、1原稿ページが占める領域である。例えば1×1であれば、仮想論理ページ領域は1印刷ページに相当する領域となり、1×2であれば、1印刷ページの各辺を約70パーセントに縮小した領域となる。
ブック、章、ページについて共通な属性として、ウォーターマーク属性およびヘッダ・フッタ属性がある。ウォーターマークとは、アプリケーションで作成されたデータに重ねて印刷される、別途指定される画像や文字列などである。ヘッダ・フッタは、それぞれ各ページの上余白および下余白に印刷されるウォーターマークである。ただし、ヘッダ・フッタには、ページ番号や日時など、変数により指定可能な項目が用意されている。なお、ウォーターマーク属性およびヘッダ・フッタ属性において指定可能な内容は、章とページとは共通であるが、ブックはそれらと異なっている。ブックにおいてはウォーターマークやヘッダ・フッタの内容を設定できるし、また、ブック全体を通してどのようにウォーターマークやヘッダ・フッタを印刷するかを指定することができる。一方、章やページでは、その章やページにおいて、ブックで設定されたウォーターマークやヘッダ・フッタを印刷するか否かを指定できる。
<ブックファイルの生成手順>
ブックファイルは上述したような構造および内容を有している。次に、製本アプリケーション104および電子原稿ライタ102によってブックファイルを作成する手順を説明する。ブックファイルの作成は、製本アプリケーション104によるブックファイルの編集操作の一環として実現される。図7は、製本アプリケーション104によりブックファイルを開く際の手順である。
まず、開こうとするブックファイルが、新規作成すべきものであるか、それとも既存のものであるか判定する(ステップS701)。新規作成の場合には、章を含まないブックファイルを新規に作成する(ステップS702)。新規に作成されるブックファイルは、図3の例で示せば、ブックノード301のみ有し、章のノードに対するリンクが存在しないブックのノードとなる。ブック属性は、新規作成用としてあらかじめ用意された属性のセットが適用される。そして、新規ブックファイルを編集するためのユーザインターフェース(UI)画面を表示する(ステップS704)。図11は、新規にブックファイルが作成された際のUI画面の一例である。この場合には、ブックファイルは実質的な内容を持たないために、UI画面1100には何も表示されない。
一方、既存のブックファイルがあれば、指定されたブックファイルを開き(ステップS703)、そのブックファイルの構造、属性、内容に従ってユーザインターフェース(UI)画面を表示する。図10は、このUI画面の一例である。UI画面1100は、ブックの構造を示すツリー部1101と、印刷された状態を表示するプレビュー部1102とを含む。ツリー部1101には、ブックに含まれる章、各章に含まれるページが、図3(A)のような木構造で表示される。ツリー部1101に表示されるページは原稿ページである。プレビュー部1102には、印刷ページの内容が縮小されて表示される。その表示順序は、ブックの構造を反映したものとなっている。
さて、開かれたブックファイルには、電子原稿ライタによって電子原稿ファイルに変換されたアプリケーションデータを、新たな章として追加することができる。この機能を電子原稿インポート機能と呼ぶ。図7の手順によって新規に作成されたブックファイルに電子原稿インポートすることで、そのブックファイルには実体が与えられる。この機能は、図10の画面にアプリケーションデータをドラッグアンドドロップ操作することで起動される。図8に電子原稿インポートの手順を示す。
まず、指定されたアプリケーションデータを生成したアプリケーションプログラムを起動し、デバイスドライバとして電子原稿ライタ102を指定してアプリケーションデータを印刷出力させることで、電子原稿データに変換する(ステップS801)。変換を終えたなら、変換されたデータが画像データであるか否かを判定する(ステップS802)。この判定は、ウインドウズ(登録商標)OSの下であれば、アプリケーションデータのファイル拡張子に基づいて行える。例えば、拡張子が「bmp」であればウインドウズ(登録商標ビットマップデータであり、「jpg」であればjpeg圧縮された画像データ、「tiff」であればtiff形式の画像データであると判定できる。また、このような画像データの場合はS8010のようにアプリケーションを起動せずに、画像データから直接電子原稿ファイルを生成することが可能であるため、S8010の処理を省略することも可能である。
画像データでなかった場合には、ステップS801で生成された電子原稿ファイルを、現在開かれているブックファイルのブックに、新たな章として追加する(ステップS803)。章属性としては、ブック属性と共通するものについてはブック属性の値がコピーされ、そうでないものについては、あらかじめ用意された規定値に設定される。
画像データである場合には、原則として新たな章は追加されず、指定されている章に、ステップS801で生成された電子原稿ファイルに含まれる各原稿ページが追加される(ステップS804)。ただし、ブックファイルが新規作成されたファイルであれば、新たな章が作成されて、その章に属するページとして電子原稿ファイルの各ページが追加される。ページ属性は、上位層の属性と共通のものについてはその属性値が与えられ、アプリケーションデータにおいて定義された属性を電子原稿ファイルに引き継いでいるもにについてはその値が与えられる。例えば、Nup指定などがアプリケーションデータにおいてされていた場合には、その属性値が引き継がれる。このようにして、新規なブックファイルが作成され、あるいは、新規な章が追加される。
図9は、図8のステップS801において、電子原稿ライタ102により電子原稿ファイルを生成させる手順のフローチャートである。まず、新たな電子原稿ファイルを作成してそれを開く(ステップS901)。指定したアプリケーションデータに対応するアプリケーションを起動し、電子原稿ライタをデバイスドライバとして、OSの出力モジュールに対して出力コマンドを送信させる。出力モジュールは、受信した出力コマンドを電子原稿ライタによって電子原稿形式のデータに変換し、出力する(ステップS902)。出力先はステップS901で開いた電子原稿ファイルである。指定されたデータすべてについて変換が終了したか判定し(ステップS903)、終了していれば電子原稿ファイルを閉じる(ステップS904)。電子原稿ライタ102によって生成される電子原稿ファイルは、図3(B)に示した、原稿ページデータの実体を含むファイルである。
<ブックファイルの編集>
以上のようにして、アプリケーションデータからブックファイルを作成することができる。生成されたブックファイルについては、章及びページに対して次のような編集操作が可能である。
(1)新規追加
(2)削除
(3)コピー
(4)切り取り
(5)貼り付け
(6)移動
(7)章名称変更
(8)ページ番号名称振り直し
(9)表紙挿入
(10)合紙挿入
(11)インデックス紙挿入
(12)各原稿ページに対するページレイアウト。
このほか、一旦行った編集操作を取り消す操作や、さらに取り消した操作をやり直す操作が可能である。これら編集機能により、例えば複数のブックファイルの統合、ブックファイル内で章やページの再配置、ブックファイル内で章やページの削除、原稿ページのレイアウト変更、合紙やインデックス紙の挿入などといった編集操作が可能となる。これらの操作を行うと、図4乃至5に示す属性に操作結果が反映されたり、あるいはブックファイルの構造に反映される。たとえば、ブランクページの新規追加操作を行えば、指定された箇所にブランクページが挿入される。このブランクページは原稿ページとして扱われる。また、原稿ページに対するレイアウトを変更すれば、その変更内容は、印刷方法やN−up印刷、表紙/裏表紙、インデックス紙、合紙、章区切りといった属性に反映される。
<ブックファイルの出力>
以上のように作成・編集されるブックファイルは印刷出力を最終目的としている。利用者が図10に示す製本アプリケーションのUI画面1100からファイルメニューを選択し、そこから印刷を選択すると、指定した出力デバイスにより印刷出力される。この際、まず製本アプリケーション104は、現在開かれているブックファイルからジョブチケットを作成して電子原稿デスプーラ105に渡す。電子原稿デスプーラ105は、ジョブチケットをOSの出力コマンド、例えばウインドウズ(登録商標のGDIコマンドに変換し、それを出力モジュール、例えばGDIに送信する。出力モジュールは、指定されたプリンタドライバ106によってデバイスに適したコマンドを生成し、そのデバイスに送信する。
ジョブチケットは原稿ページを最小単位とする構造を有するデータである。ジョブチケットにおける構造は、用紙上における原稿ページのレイアウトを定義している。ジョブチケットは1ジョブにつき1つ発行される。そのため、まず最上位にドキュメントというノードがあり、文書全体の属性、例えば両面印刷/片面印刷などが定義されている。その下には用紙ノードが属し、用いるべき用紙の識別子や、プリンタにおける給紙口の指定などの属性が含まれる。各用紙ノードには、その用紙で印刷されるシートのノードが属する。1シートは1枚の用紙に相当する。各シートには、印刷ページ(物理ページ)が属する。片面印刷ならば1シートには1物理ページが属し、両面印刷ならば1シートに2物理ページが属する。各物理ページには、その上に配置される原稿ページが属する。また物理ページの属性として、原稿ページのレイアウトが含まれる。
電子原稿デスプーラ105は、上述のジョブチケットを、出力モジュールへの出力コマンドに変換する。
<そのほかのシステム構成>
本実施形態の文書処理システムの概要は以上のようなものである。これはスタンドアロン型のシステムであるが、これを拡張したサーバクライアントシステムでもほぼ同様の構成・手順でブックファイルが作成・編集される。ただし、ブックファイルや印刷処理はサーバによって管理される。
図12はサーバクライアント型文書処理システムの構成を示すブロック図である。クライアント文書処理システムは、スタンドアロン型システムに、クライアントモジュールであるDOMS(Document Output Management Service:文書出力管理サービス)ドライバ109およびDOMSプリントサービスモジュール110、DS(文書サービス)クライアントモジュール108を加えた構成を有する。このクライアント文書処理システム1200に、文書管理サーバ1201および印刷集中管理サーバ1202およびプリントサーバ1203が接続されている。これらサーバは、通常ネットワークによってクライアント文書処理システムと接続されるが、サーバが同時にクライアントとしても機能する場合には、ネットワーク間の通信をシミュレートするプロセス間通信によって接続される。なお図12では文書管理サーバ1201と印刷集中管理サーバ1202の両サーバがクライアントに接続されているが、いずれか一方のみがネットワーク上に存在する場合もあり得る。接続されているサーバが文書管理サーバであれば、そのクライアントモジュールを含む文書管理サーバクライアントシステム1201SCが、印刷集中管理サーバ1202であれば、そのクライアントモジュールを含む印刷管理サーバクライアントシステム1202SCが、スタンドアロン型文書管理システムに追加される。
文書管理サーバ1201は、製本アプリケーション104により作成・編集されたブックファイルを格納するサーバである。文書管理サーバ1201によってブックファイルを管理する場合、ブックファイルは、クライアントPCのローカルHDに代わって、あるいはそれに加えて、文書管理サーバ1201のデータベース1211に保存される。製本アプリケーション104と文書管理サーバ1201との間のブックファイルの保存および読み出しは、DSクライアント108及びDSコア1212を介して行われる。
印刷集中管理サーバ1202は、クライアント文書管理システム1200に格納された、あるいは文書管理サーバ1201に格納されたブックファイルの印刷を管理するサーバである。クライアントにおける印刷要求は、DOMSドライバ109およびDOMSプリントサービスモジュール110を介して印刷集中管理サーバ1202のDOMSWGサーバモジュール1221に送信される。集中印刷管理サーバ1202は、クライアントのプリンタで印刷する場合にはクライアントのDOMSプリントサービスモジュール110を介して電子原稿デスプーラ105に電子原稿データを渡し、プリントサーバ1203により印刷する場合には、プリントサーバ1203のDOMSプリントサービスモジュール1203に送信する。集中印刷管理サーバは、例えば保存されているブックファイルに対して印刷要求を発行した利用者の資格などについてセキュリティチェックを行ったり、印刷処理のログを保存したりする。このように、文書処理システムは、スタンドアロンとしても、クライアントサーバシステムとしても実現できる。
<印刷設定UI及び手順>
上述した文書処理システムにおいて、文書ファイルを印刷する場合には、その文書ファイルの印刷方法の設定に応じた単位で、印刷対象となる範囲の設定が可能である。本実施形態では、印刷方法として製本印刷が指定されている場合には、製本単位(束)ごとに印刷範囲を指定でき、片面あるいは両面が指定されている場合には、章単位あるいは印刷ページ単位あるいは原稿ページ単位で範囲を指定できる。また、印刷方法に関わらず文書全体を印刷対象として指定できることはもちろんである。
図13は、印刷方法として片面印刷が、レイアウトとして1印刷ページに1原稿ページを配置する指定がされているブックファイルを開いた場合の製本アプリケーションによるUI画面の例である。この例では「WORD−A4」なる名称のブックファイルが開かれており、このファイルはword−1という名称の章と、word−2という名称の章とで構成される。片面印刷の指定は、UI画面1300の「印刷体裁」メニューからブックの詳細設定を選択し、それにより表示される図14の画面1400において、印刷方法指定欄1401のラジオボタン「片面印刷」を選択することで行える。なお、1印刷ページにN原稿ページを配置するレイアウトをN−upと呼ぶ。図13の例は1upのレイアウトを示している。
図13のUI画面1300において、ツリー部1301には現在開かれているブックファイルの構造が表示されている。プレビュー部1302には、印刷される状態を示すプレビュー表示がされる。プレビュー表示には、印刷ページを縮小表示する印刷ビューモード、印刷ページのレイアウトのみ表示する簡易ビューモード、原稿ページの内容を表示する原稿ビューモードの3モードがあるが、図13では印刷ビューが選択されている。プレビュー部1302においては、印刷ページを示すページ画像1303が表示されるとともに、その下部には原稿ページ番号が示され、右上部には印刷枚数を示すシート番号が示される。印刷方法として片面印刷が指定され、また、レイアウトとして1up指定がされている場合には、1枚のシート(用紙)と原稿ページとは1対1に対応する。従って、図13では、各印刷ページごとにシート番号が振られ、原稿ページのページ番号も振られる。
このブックファイルの印刷設定を行うためには、利用者は画面1300からファイルメニューを選択し、その中から「印刷設定」を指定する。それにより、図15の印刷設定画面1500が表示される。印刷設定画面においては、部数欄1501と印刷対象欄1502とが含まれる。部数欄1501は印刷方法に依存せず指定可能であるが、印刷対象欄1502は印刷方法の設定によって指定可能な項目が異なる。図15は印刷方法として片面印刷あるいは両面印刷が指定されている場合の例である。この場合図15に示すように、印刷対象としてはブックファイル全体を印刷する「book(すべて)」と、指定した章を印刷する「章」と、指定したページを印刷する「ページ」と、製本印刷で指定された製本単位である「束(冊子)」のいずれかが指定できる。なお、「束(冊子)」の指定は印刷方法として製本印刷が指定されている場合に限り意味を持つため、製本印刷が指定されている場合に限り選択可能な項目としてもよい。
(1)全範囲の指定
印刷対象欄1502から「book(すべて)」が指定されたばあいには、指定すべき範囲はないため指定に引き続いてOKボタン1503を押すことで設定に応じた印刷処理が開始される。本実施形態でいう印刷処理とは、プリンタにおける印刷処理ではなく、製本アプリケーション104が電子原稿デスプーラに描画データの生成をさせる処理と、OSを介してプリンタドライバに印刷データ(印刷ジョブ)の生成を行わせる処理に相当する。
(2)章番号による指定
「章」が指定された場合には、図16に示すように、印刷対象欄1502には章指定欄1602が表示され、その欄において印刷対象の章が指定可能である。片面1up印刷の場合には、図13のプレビュー部に示すとおり章の区切り目は必ずシートの区切り目にあたる。そのため、製本アプリケーションは、指定された章に対応するシートを含むジョブチケットを作成し、図1の電子原稿デスプーラ105に渡す。
印刷方法として両面印刷が指定されているばあいには、章の区切り目がシートの区切り目と一致するとは限らない。図19は、図18と同じブックファイルについて両面1up印刷が指定された場合のプレビュー画面の一例の図である。両面印刷であるため、1枚のシートにはその両面に2原稿ページが印刷される。そのため、ページ番号は図18と同様に原稿ページごとに表示されるが、シート番号は2ページおきに付されている。プレビュー部1902では両面印刷であることが視覚的に確認できるように、シートの両面の印刷ページを若干段をずらして表示している。この場合にも、章番号による印刷範囲の指定のためのUI画面は図16と同様の画面となる。しかし、指定された範囲の先頭あるいは末尾のシートが2つの章にまたがっている場合もある。図19の例では、シート2には第1章の第3ページと第2章の第1ページが印刷される。このような場合には、指定された章を含むシートに載るすべてのページを印刷の対象とする。すなわち、図19で第2章が印刷対象として指定された場合、ページ1−3もページ2−1とともに印刷される。これは、部分的な印刷は、通常一部の差し替えのために行われることが多いためである。
これは、1印刷ページに複数の原稿ページを配置するNup指定がされているブックファイルについても同様である。図21は、図19と同じブックファイルについて2up指定がされている場合のUI画面の一例である。プレビュー部2102には、シート2の印刷ページとして、第1章の第2ページと第2章の第1ページが配置された画像が表示されている。印刷対象として、例えば第2章が指定されると、ページ1−3もページ2−1とともに印刷される。
印刷方法として製本印刷が指定されている場合に章番号による印刷範囲の指定がされたときにも、指定された章を含むシートに載るすべてのページが印刷の対象とされる。図22に製本印刷の指定を行うための画面を示す。図22の画面2201は図14の画面と同様の手順によって表示される。ただし、印刷方法欄2202において製本印刷が指定されているために、指定可能な項目は開き方向2203や製本印刷の単位(束)となる用紙の枚数2204となっている。この例では製本単位は2枚に指定されている。また、章区切りはしないものと指定されており、連続する章の間において改ページや改用紙は行われない。
製本単位とは、指定枚数を重ねて2つ折りにすることで作成した冊子である。その冊子を綴じれば1冊の本となる。このため、レイアウトは形式的には両面2upと同様であるが、製本後に見開きの順序が原稿ページの順序になるよう、原稿ページが配置される。
このように製本印刷が指定されていると、製本アプリケーションによりブックファイルを開いた場合のUI画面は図23の様なものとなる。開いているブックファイルにはchapter1という名称の第1番目の章と、chapter2という名称の第2番目の章とが含まれている。第1番目の章には15原稿ページが、第2番目の章には少なくとも14原稿ページが含まれる。プレビュー部2302には、1行に1束ずつ、見開きの順に原稿ページのプレビュー画像が表示される。また、表示形式も見開きを模したものとなっている。図23の場合、製本単位が2枚であるため、各冊子は2枚のシートから構成される。各シートの一方の面には2原稿ページがレイアウトされるため、1つの冊子は8原稿ページからなる。
このような製本印刷の場合には、章番号で印刷対象の範囲が指定されると、指定された章を含むすべての冊子が印刷される。図23の例では、最初の冊子においては、その内側シートの表面にはページ1−4及び1−5が、裏面には1−3及び1−6が印刷される。外側シートには、その表面にページ1−2及び1−7が、裏面にはページ1−2及び1−8が印刷される。第2番目の冊子においては、その内側シートの表面にはページ1−12及び1−13が、裏面には1−11及び1−14が印刷される。外側シートには、その表面にページ1−10及び1−15が、裏面にはページ1−9及び2−1が印刷される。そのため、第2章が印刷範囲として指定されると、第2番目の冊子には第2章の最初のページが含まれることから、第2番目の冊子を含めて、第3番目、第4番目というように、第2章を含むすべての冊子が印刷される。
このように、章番号が指定された場合には、指定された章を含むすべての印刷単位、すなわち片面印刷および両面印刷場合には指定された章を含むすべてのシートが、製本印刷の場合には指定された章を含むすべての冊子が印刷範囲とされ、印刷される。
(3)ページ番号による指定
印刷対象欄から「ページ」が指定された場合には、図17または図18に示すように、印刷対象欄1502には、印刷ページで範囲を指定するための欄1702と、原稿ページで範囲を指定するための欄1703とが表示される。利用者がラジオボタン1704を選択することで、いずれか一方の欄が設定可能となる。印刷ページ番号による範囲指定の一例を図17に、原稿ページ番号による範囲指定の一例を図18に示す。
原稿ページ番号で範囲を指定する場合、プレビュー画面上では、ページ番号は、章番号と各章における原稿ページとをハイフンで接続した番号として表示されるが、範囲指定は通し番号に換算して指定する。もちろん、これは本実施形態のシステムに関する仕様であり、プレビュー表されるページ番号そのもので範囲指定を行わせることもできる。ただし、範囲を表す記号をハイフン以外の記号に定義し直すなど、表記のしかたについて混同を防止するための処置をとる必要はある。
印刷ページ番号で範囲を指定する場合にも、印刷ページ番号の通し番号で範囲を指定する。
原稿ページで範囲指定するばあいも、印刷ページで範囲指定するばあいも、何れのばあいも章番号による指定と同様、指定されたページを含むすべての印刷単位、すなわち片面印刷および両面印刷場合には指定されたページを含むすべてのシートが、製本印刷の場合には指定されたページを含むすべての冊子が印刷範囲とされ、印刷される。
(4)束(冊子)による指定
束による指定は、製本印刷の場合に有効となる。図22に示すように製本印刷が印刷方法として指定されている場合、図23の画面から「ファイル」メニューを選択し、そこから「印刷」項目をさらに選択すると、図24に示す印刷設定UI画面2400が表示される。印刷対象欄2301から「束(冊子)」を選択すると、束番号指定欄2402が表示される。利用者はこの欄で印刷対象の冊子を指定する。図23のプレビュー部2302においては、ひとつの束は横1列の原稿ページのまとまりとして表示される。プレビュー画面における束番号はこのプレビュー部2302に表示された束の順序で与えられる。
冊子単位で印刷対象が指定された場合、指定された冊子を構成する全ページが、製本印刷の手順に従って印刷される。
<印刷設定手順>
図13〜図24のUI画面を参照して説明した印刷範囲設定の手順を、図25のフローチャートを参照し、製本アプリケーションによる処理手順の側面から説明する。図25の手順は、図13や図19、図21あるいは図23の画面において、利用者が「ファイルメニュー」から「印刷設定」の項目を選択した場合に、図15に示す画面を表示した後から開始される。
まず、ステップS2501において印刷対象欄の選択を判定する。選択された対象が「book」であればそのまま入力待ちとなる。ステップS2505で入力待ちをし、入力がOKボタンであればステップS2506に進んでブック全体を印刷対象として含むジョブチケットを生成する。ジョブチケットはすでに説明したとおり、用紙(シート)上における原稿ページのレイアウトを定義している。ジョブチケットの構造は、まず最上位にドキュメントというノードがあり、文書全体の属性、例えば両面印刷/片面印刷などが定義されている。その下には用紙(シート)ノードが属し、用いるべき用紙の識別子や、プリンタにおける給紙口の指定などの属性が含まれる。各用紙ノードには、印刷ページノードが属する。片面印刷ならば1シートには1印刷ページが属し、両面印刷ならば1シートに2印刷ページが属する。各印刷ページノードには、その上に配置される原稿ページがリーフノードとして属する。例えば、2up指定されていれば、1印刷ページには2原稿ページが属する。また印刷ページの属性として、原稿ページの位置やサイズ等が含まれる。ジョブチケットはこのように木構造を有している。ステップS2506では、ブックファイルの構造及び各ノードにおける属性に従って、ブックファイル全体からジョブチケットを生成する。
そして、ステップS2510では、生成したジョブチケットを電子原稿デスプーラに送信する。
一方、ステップS2505における入力待ちで、印刷対象が変更された場合には、ステップS2501に戻って印刷対象の判定を繰り返し行う。
ステップS2501の判定で印刷対象が「章」であれば、ステップS2502で図16の画面を表示し、入力待ちとなる。ステップS2505における入力待ちで、印刷対象が変更された場合には、ステップS2501に戻って印刷対象の判定を繰り返し行う。
章番号指定欄1602に章番号が指定されてOKボタンが押されたなら、ステップS2505に進んで指定された章を含む全シートを出力するためのジョブチケットを生成する。そのために、図3に示すブックファイルのブック属性に含まれる印刷方法およびN−up指定およびブックファイルの構造を参照し、指定された章の原稿ページを含むシートを印刷の対象としてジョブチケットを生成する。
ひとつの方法として、いったんブックファイル全体を対象とするジョブチケットを生成し、その後、指定された章に含まれる原稿ページをリーフノードとして含むシートノードを頂点とする部分木のみを残し、他のシートノードを頂点とする部分木を削除するという方法がある。ただし、製本印刷の場合には指定範囲が章であろうとも冊子単位で印刷するために、指定された章を全く含まないシートであっても、指定された章を含む冊子の一部であれば印刷対象となる。そこで、ジョブチケットのシートノードを印刷単位として指定された枚数ごとに区分し、指定された章に属する原稿ページが含まれる区分内のシートはすべて印刷対象としてジョブチケットを生成する。なおブックファイル全体のジョブチケットの作成は、片面または両面印刷であれば、N−up指定に応じて、Nページずつ原稿ページを各印刷ページに配置するようにして作成できる。また製本印刷の場合には、(製本単位×4)ページずつ原稿ページを区切り、各区切り(これが束である)ごとに、見開き順に原稿ページを(製本単位×4)ページ分の枠に配置していくことで作成できる。
そして、ステップS2510では、生成したジョブチケットを電子原稿デスプーラに送信する。
ステップS2501において印刷対象が「ページ」であれば、ステップS2503で図17の画面を表示し、入力待ちとなる。ステップS2505における入力待ちで、印刷対象が変更された場合には、ステップS2501に戻って印刷対象の判定を繰り返し行う。
図17におけるボタン1704によって印刷ページか原稿ページかいずれを対象とするかが指定され、印刷ページの場合には印刷ページ番号欄1702に番号が入力されたOKボタンが押されたなら、ステップS2508へ進む。原稿ページの場合には図18の画面を表示しなおして、原稿ページ番号欄1703にページ番号が指定されてOKボタンが押されたなら、ステップS2508に進む。
印刷ページ番号指定欄1702に印刷ページ番号が指定されてOKボタンが押されたなら、ステップS2508に進んで指定された印刷ページを含む全シートを出力するためのジョブチケットを生成する。そのために、図3に示すブックファイルのブック属性に含まれる印刷方法およびN−up指定およびブックファイルの構造を参照し、指定された印刷ページを含むシートを印刷の対象としてジョブチケットを生成する。
ひとつの方法として、いったんブックファイル全体を対象とするジョブチケットを生成し、その後、指定された印刷ページを含むシートノードを頂点とする部分木のみを残し、他のシートノードを頂点とする部分木を削除するという方法がある。ただし、製本印刷の場合には指定範囲が印刷ページであろうとも冊子単位で印刷するために、指定された印刷ページを全く含まないシートであっても、指定された印刷ページを含む冊子の一部であれば印刷対象となる。そこで、ジョブチケットのシートノードを印刷単位として指定された枚数ごとに区分し、指定された章に属する印刷ページが含まれる区分内のシートはすべて印刷対象としてジョブチケットを生成する。
印刷対象が原稿ページで指定されている場合には、前述の「印刷ページ」を「原稿ページ」に置換した方法でジョブチケットを生成できる。なお、原稿ページ番号は通し番号で指定されているために、それを章番号及び各章における原稿ページ番号に換算しなければならない。換算によって原稿ページを特定できる。
以上の手順で印刷の対象としてジョブチケットを生成する。そして、ステップS2510では、生成したジョブチケットを電子原稿デスプーラに送信する。
ステップS2501の判定で印刷対象が「束」であれば、ステップS2504で図24の画面を表示し、入力待ちとなる。ステップS2505における入力待ちで、印刷対象が変更された場合には、ステップS2501に戻って印刷対象の判定を繰り返し行う。
章番号指定欄2402に束番号が指定されてOKボタンが押されたなら、ステップS2505に進んで指定された束に含まれる全シートを出力するためのジョブチケットを生成する。なお、束指定は印刷方法が製本印刷の場合に限られる。
ひとつの方法として、いったんブックファイル全体を対象とするジョブチケットを、各冊子(束)ごとに原稿ページの順序を見開き順に印刷ページに配置した製本印刷の形式で生成しておく方法がある。このように生成されたジョブチケットにおいて、束は、製本単位の数ごとに区切られたシートノードで表現できる。例えば製本単位が2枚の場合、印刷順に前からふたつずつシートノードを区切れば、各区切りが束となる。そこで、指定された束に含まれないシートノードをジョブチケットから削除することで、指定された束を含むジョブチケットを生成する。なお、製本印刷では、ジョブチケット生成時に各冊子ごとに原稿ページの順序を見開き順に配置しておくことはもちろんである。
そして、ステップS2510では、生成したジョブチケットを電子原稿デスプーラに送信する。
以上の手順によって、指定された部分を含むジョブチケットを生成することができる。電子原稿デスプーラは、ジョブチケットを受信すると、オペレーティングシステムの有する出力モジュールに適合したコマンドにジョブチケットを変換し、そのコマンドを出力モジュールに送信する。出力モジュールは、印刷を実際におこなうプリンタ等のデバイスドライバを用いてそのプリンタに適した形式の印刷コマンドを生成し、それをプリンタに送信して印刷させる。
<その他の構成>
上記実施形態では、製本印刷の場合、指定された範囲を含むシートを冊子単位で印刷している。しかし、製本単位の枚数が多い場合や、ブックファイル全体が製本単位として指定されている場合には、必要な用紙枚数が少ないという利点が失われてしまう。そこで、印刷範囲の指定が章または印刷ページ又は原稿ページでされている場合には、指定された範囲を含むシートを印刷することもできる。この場合には、上述の手順とほぼ同様の手順で印刷できるが、指定された範囲を含む束の判定を行う必要がない分だけ処理手順は簡単になる。また、印刷される用紙の枚数を減らすことが可能であることはもちろんである。
また、範囲指定のしかたとして、用紙単位の指定を付け加えても良い。シートはジョブチケットのノードのひとつであり、しかもシート単位の指定は指定された範囲で必ず完結するために、指定範囲を含む部分的なジョブチケットを作成することは容易である。また、シートの番号はプレビュー部において各シートの右肩部に表示されるため利用者がシートをプレビュー画面から特定することが容易である。シートが印刷範囲として指定された場合には、ブックファイル全体のついてのジョブチケットから、指定範囲外のシートのノードを削除することで、指定範囲を印刷するためのジョブチケットを生成することができる。指定されたシートの番号はジョブチケットにおけるシートノードの順序に対応しているため、この処理は容易である。
また、本実施形態では、部分印刷のジョブチケットを生成する際には、全体についてのジョブチケットから必要な部分のみを残すような処理を行うとしているが、必要な部分だけを選び出してジョブチケットを再構成することもできる。また、全体についてのジョブチケットを生成しながら、不要な部分を削除する処理を並行して行うことで、ジョブチケットの生成に必要な資源を節約することができる。
<部分印刷の具体的手順の例>
また、部分印刷を行う方法として、ジョブチケットから不要な部分を取り除く方法ではなく、ジョブチケットに対して印刷範囲を指定する指示を追加し、部分印刷に必要なジョブチケットの部分を電子原稿デスプーラによって読み出す方法を採用することも可能である。その例を以下に示す。
(文書全体(ブック)の指定)
図26は、ジョブチケットの形式の一例を模式的に示す図である。この例のジョブチケットでは、1つのドキュメントの内容と印刷に対する指示などの情報が階層構造で表現されている。印刷指示は「ResourcePool」2601の部分に含まれており、ドキュメントに対する印刷指示は、「PrintParams」2602以下に記載されている。さらに、各シートに関する情報は「Sheet」2603以下に記載され、各シートに配置される印刷ページ(物理ページ)に関する情報は「Surface」2604以下に記載されており、「Surface」2604には原稿ページの印刷ページ上への配置指示が含まれる。
図25のフローチャートにおいて、ブック全体を印刷するためのジョブチケットを生成するステップS2506では、図27に示すように、「PrintSheetList="1〜−1"」という印刷範囲の指示2701を生成する。この例では印刷範囲を示す文字列に以下の書式を利用している。なお図においては下線を付しているがこれは図示の便宜のためである。
・シートを指定するシート番号は、ドキュメントの先頭シートから順に1,2,3,あるいは最終シートから順に−1,−2,−3と表現する。
・印刷するシート番号をスペースで区切って指定する。例えば、3シート目と5シート目を指定する場合には、"3 5"と表現する。
・連続したシートを指定する場合、"(最初のシート番号)〜(最後のシート番号)"という書式で表現できる。例えば、1シート目から3シート目を指定する場合には"1〜3"と表現する。
図27の例では、印刷範囲は、「PrintSheetList」なる記述によりシート(用紙)単位で指定されするものとしている。そのため、ステップS2506では、ブック全体を出力範囲とする範囲の指定として"1〜−1"、すなわち先頭のシートから最終のシートまでの指定を生成し、「PrintSheetList」の直後にそれを付加する。そして、生成された、範囲を指定するための記述「PrintSheetList="1〜−1"」は、「PrintParams」2602に含まれる項目のひとつとしてジョブチケットに挿入される。
(章単位の指定)
指定された章を印刷するためのジョブチケットを生成するステップS2507では、まず指定された章に含まれる原稿ページを調べる。これには、図3で示した章属性、ページ属性の階層を利用して調べることができる。そして、得られた原稿ページが配置される印刷ページを調べる。これには、図4および図5に示したブック属性および章属性の内、原稿ページの配置にかかわる情報(印刷方法、N−up印刷など)を元に調べることができる。
1シートの片面に配置される原稿ページ数は、N(NはN−up印刷指定における、1物理ページに配置される原稿ページ数)ページである。したがって、1シートに配置される原稿ページ数は、片面印刷指定であればN、両面印刷指定であれば2Nとなる。したがって原稿ページ数とシート数との関係は、原稿ページ数/N(片面指定)または原稿ページ数/2N(両面指定)となる。また、章の間で改用紙の指定があれば、新たな章は必ずシートを改めてから印刷される。章の間で改ページの指定があれば、新たな章は必ず印刷ページを改めてから印刷される。したがって、これらの点を鑑みて、指定された章が含まれるシートが特定される。具体的にはステップS2507で行われるのは次のような手順を一例として採用できる。
(1)指定された章以前の章について、シート枚数(P)を数える。このためには、章のシート枚数=章に含まれる原稿ページ数/N(片面指定)または原稿ページ数/2N(両面指定)として計算する。ただし、両面印刷指定であり、かつ、章間の改ページ指定がない場合には、章ごとに計算せず、連続する章についてまとめて計算する。また章に含まれる原稿ページ数は、図3(A)の章ノード302A、302Bから分岐する葉ノードの数に相当する。
(2)章間に改用紙指定があれば、次の章は新たなシート(P+1)から印刷される。
(3)章間に改ページ指定があれば、両面指定の場合には次の章はその前の章の最終ページを同じシート(P)の裏面から印刷される。片面印刷指定の場合には新たなシート(P+1)から印刷される。
(4)指定された章以前のすべての章について(1)〜(3)を繰返し行い、指定された章についてその先頭ページの属するシート(Pstart)を求める。
(5)指定された章について(1)と同じ要領でシート枚数(P')を数える。(6)印刷範囲をシートPstart〜Pstart+P'と決定する。
以上の手順により、章単位で指定された範囲をシートに置き換えることができる。もちろん、複数の章が指定されている場合には、それぞれの指定された章について独立してこの手順を適用することができる。
ただし、これらの手順は、図21のようなGUI画面を表示する際にも行われるものである。したがって、そのGUI画面表示時にシートと原稿ページ、章の対応関係を決定したならばその情報を保存しておき、印刷範囲が指定された場合には、その保存された情報を参照してシートの範囲を決定することもできる。
なお製本印刷指定の場合には、章単位の印刷範囲は束の単位で指定されるものとする。したがって、指定された章が含まれる束をシートの範囲に対応付けて、印刷対象のシートの範囲が決定される。製本印刷指定の場合には、1束のシート数×4が1束に印刷される原稿ページ数となる。また、章の間に改用紙指定があれば、章の最終ページ番号が奇数であるならその直後に白紙ページが挿入されたものとして指定された章以前の章のみが属する束の数が判定される。このようにして数えられた束の数は、1束のシート数を乗じてシート数(P)に換算される。
そして、指定された章が属する束の先頭のシート番号(P+1)が、印刷すべき範囲の先頭となる。指定された章の原稿ページ数から、指定された章が含まれる束の数はただちに求められる。このとき、先頭の束に含まれる、指定された章以外の章の原稿ページ数を含めて束の数は判定される。そして、指定された章が含まれる最後の束の最終シートが、印刷すべき範囲の末尾となる。
以上のようにして決定された範囲を「PrintSheetList」の直後に付加し、これを「PrintParams」2602に挿入する。
例えば、図19に示した両面1−upのドキュメントの2章を印刷対象に指定した場合、指定された第2章以前の章、すなわち第1章のシート枚数は、2章に含まれる原稿ページは2−1から2−5の5ページであり、これらの原稿ページが配置されるシートは2から4の3つのシートとなる。よって、この場合には、PrintSheetList="2〜4"という表現で印刷範囲を指定することとなる。
(原稿ページ単位の指定)
指定されたページ(原稿ページ)を印刷するためのジョブチケットを生成するステップS2508では、指定された原稿ページが配置される印刷ページを調べる。この処理は、章を指定された場合の処理と同様に求めることができる。すなわち、上述した章単位の指定の手順において、(1)〜(6)における「章」を「原稿ページ」と読み替えれば、ほぼそのまま上記手順を適用できる。ただし、手順(1)では1原稿ページ当たりのシート枚数が求められてしまうので、この値に指定された原稿ページより前の原稿ページ数を乗じてシート枚数に換算する必要がある。
さらに、換算されたシート枚数が整数ではない場合、指定された原稿ページはそれ以前のページと同じシート上に印刷される可能性があるため、章区切りの指定に応じて調整が必要となる。
(a)章区切りの改ページ指定および改用紙指定がいずれもされていない場合には、換算されたシート枚数の整数部分が、指定された原稿ページが印刷されるシートより前のシートの枚数に相当する。
(b)ただし、改ページ指定されている場合、注目章のページ数として、図3のデータから得られる原稿ページ数をそのまま採用せず、注目章のページ数より大きい最小のNの倍数を、注目章の原稿ページ数として採用する。そしてその原稿ページ数を、上記手順でシート枚数に換算する。これは、改用紙指定されており、かつ、片面印刷指定されている場合も同様である。また、改用紙指定されており、かつ、両面印刷指定されている場合には、注目章のページ数として、注目章のページ数より大きい最小の2Nの倍数を、注目章のページ数として採用する。ただし、NはN−up印刷指定における、1印刷ページに配置される原稿ページ数である。これは、章区切りにより生じる空白を空白原稿ページとして換算するためである。
例えば、図19に示したドキュメントの原稿ページ2−1と2−5とを印刷対象に指定した場合を考える。両面に刷指定がされていることから、1原稿ページ当たりのシート枚数は、1/2である。章区切りの指定は特にされていないから、範囲指定されたページ2−1以前のシート数は、3(原稿ページ数)×1/2(シート枚数/原稿ページ)=3/2の整数部分、すなわちP=1枚である。したがって、指定された原稿ページが含まれるシートはP+1=2枚目ということになる。同様にして、原稿ページ2−5は4枚目のシートに含まれる。すなわち、指定された原稿ページを含むシートはシート2と4の2つのシートとなる。この場合には、「PrintSheetList="2 4"」という表現で印刷範囲を指定することとなる。
束(冊子)単位の指定)製本印刷時に指定された束を印刷するためのジョブチケットを生成するステップS2509では、指定された束の含むシートを求める。例えば、製本印刷時に5枚ごとに冊子を分ける指示を行った場合に2冊子目印刷するのであれば、6から10の5つのシートが印刷対象となるので、PrintSheetList="6〜10"という表現で印刷範囲を指定することとなる。
電子原稿デスプーラは、上記処理で作成されたジョブチケットを受け取り、PrintSheetListに指定されたシートのみを印刷対象と判断し、対応するシートのみ指定された指示に従ってオペレーティングシステムの有する出力モジュールに適合したコマンドにジョブチケットを変換し、そのコマンドを出力モジュールに送信する。図28A及び図28Bはひとつのジョブチケットを示している。図28A及び図28Bに示すジョブチケットの例では、PrintParamsのPrintSheetList="1"(1シート目を印刷する)を読み出し、指定されたLayoutのSignatureに属するシートのみを印刷対象としてコマンド生成を行うこととなる(図の太字のSignature部分のみ)。
このようにして、複数の印刷範囲指定方法で指定された印刷範囲を、印刷対象のシートを指定するジョブチケットによって表現し、ジョブチケットから不要部分を取り除くのではなく、印刷対象のシート情報を追加して印刷範囲を指定することが可能である。また、ジョブチケットの一部を書き換えるだけで、ドキュメントの任意の部分を印刷対象として指定することが可能となるため、印刷範囲を指定するジョブチケットの作成処理が容易(高速)となる、印刷範囲の変更が可能となるといった効果がさらに得られる。
<電子原稿デスプーラにおける印刷処理>
電子原稿デスプーラにおける印刷処理をさらに詳細に説明する。電子原稿デスプーラは、ジョブチケットに記載された印刷指示に従って、原稿ページの描画データをOSの出力コマンド(例えばWindows(登録商標)のGDIコマンド)に変換し、プリンタドライバ経由でプリンタに描画命令を転送する。
ジョブチケットには、先頭のシートから順にシート情報が記載されており、Nシート目を印刷する際には、ジョブチケットの先頭からN番目の「Sheet」の部分を読み出すことで、印刷対象のシート情報を取得することができる。Sheetには、片面印刷時には1つのSurface、両面印刷時には2つのSurfaceが含まれており、Surfaceには、印刷ページ(物理ページ)の情報が記載されている。さらに、Surface内にはその印刷ページ内に描画される原稿ページに関する情報がContentObjectとして含まれている。
図29に、電子原稿デスプーラにおける印刷処理のフローチャートを示す。ステップS2901では、ジョブチケットからジョブの初期化コマンド出力に必要な情報を取得する。初期化コマンドは、例えば印刷先のプリンタを識別する情報、指定解像度、部数といった、印刷ジョブ全体に指定するパラメータ群であり、ジョブチケットのResourcePool以下のPrintParamsやDeviceの部分に指定されている。これらの値を取得し、OSの印刷処理方法に合わせて、出力先プリンタを指定し、解像度、部数などのジョブ全体に指定すべきパラメータを出力する。次に、ステップS2902では、印刷範囲を取得するために、ジョブチケットからPrintSheetListの値を取得する。ステップS2903では、PrintSheetListの内容を元に、実際に印刷するシート番号のリストを生成する。例えば、PrintSheetList="1〜3 6 8〜10"であれば、印刷するシート番号のリスト(1, 2, 3, 6, 8, 9, 10)を生成する。ステップS2904からステップS2907では、リストの先頭のシート番号を取り出し(ステップS2905)、そのシートの印刷処理(ステップS2906)を行い、リストの先頭のシート番号を削除し(ステップS2907)、リストに含まれるすべてのシートの印刷処理が終了するまで繰り返し処理を行っている。なお、印刷範囲がすべてのシートの場合には、リストを作成し、印刷するシートを特定する処理を省略し、先頭のシートから順に印刷することが可能である。
図30に、図29のステップS2906におけるシートの印刷処理のフローチャートを示す。図26のSignature2605は、シート属性(例えば用紙サイズ、給紙口など)の定義を含んでおり、同一のシート属性を持ったシートがそのSignatureに含まれるよう構成されている。ステップS3001では、印刷対象として指定されたシートを含むSignatureの情報を読み出し、もしシート属性が直前の状態と異なる場合には、OSの印刷処理方法に合わせて、その属性を変更するコマンド(用紙サイズ・給紙口の変更コマンドなど)を出力する。
ステップS3002では、印刷対象のシート(Sheet)に含まれる、まだ印刷コマンドを出力していない印刷ページ(Surface)の情報を取得する。図31に、Sheet2603のサンプルを示す。このSheetには、二つのSurface3101,3102が含まれており、これは1枚のシートの表面と裏面の印刷ページを示している。ステップS3002では、表面の印刷ページ情報(Surface3101,3102)を読み出し、さらに印刷ページに含まれる原稿ページ情報(ContentObject3103)を読み出し、原稿ページに含まれる描画情報をOSの有する出力モジュールに適合したコマンドに変換して、印刷処理を実行する。ContentObjectのOrdには、原稿ページ番号が示されており、それが指し示す原稿ページに含まれているテキスト、グラフィック、イメージなどの描画オブジェクトを、OSに合わせて印刷命令に変換し、プリンタドライバでプリンタが解釈可能な描画コマンドに変換して印刷を実行する。図31の例では、Ordとして、原稿ページ番号0,1,2,3が示されている。
図32に、原稿データの構造の例を示す。各原稿ページに含まれる描画オブジェクトが、原稿ページ単位で記録されている。描画オブジェクトが参照するテキストやグラフィックの属性(フォント属性、線属性など)は、複数の描画オブジェクトで共通に利用するために、各原稿ページ以外の部分に記録し、各原稿ページの部分には、属性へのリンク情報のみを持つことにより、データを効率よく保存することも可能である。ステップS3002で取得した、ContentObjectのOrdに指定されている原稿ページ番号より、ステップS3003では、指定された原稿の描画オブジェクト群を原稿データから取得し、OSに合わせて印刷命令に変換することになる。
図31の例では、一つのSurfaceに二つのContentObjectが含まれているが、これは2−up印刷する(一つの印刷ページ上に二つの原稿ページを面付け配置する)ことを意味している。図31のContentObjectに含まれるCTMの指定はアフィン変換を示しており、原稿ページの描画内容を印刷ページ上に位置、大きさ、回転角を指定して配置する指示を示している。詳細は省略するが、OSに合わせて、描画する位置、大きさ、回転各を指定して、原稿ページに含まれる描画オブジェクトを印刷コマンドに変換し、印刷ページ上に描画する処理を行うことが可能である。ステップS3003およびステップS3004を印刷ページに含まれる全原稿ページに対して繰り返し実行することにより、印刷ページの描画コマンドが生成される。そして、両面印刷の場合には、一つのシートに二つの印刷ページが含まれるため、ステップS3002からステップS3005の処理を裏面に対しても実行する。このようにして、1枚のシートの印刷処理を実行することができる。
図33に、プリンタドライバが生成し、プリンタに送信される印刷データの例を示す。3301は、図29のステップS2901で出力されたジョブの初期化コマンドの部分である。3302、3306は、図30のステップS3001で出力されたシートの初期化コマンドの部分である。3303、3304、3305、3307は、図30のステップS3002からS3005で出力された一つの印刷ページの描画コマンドをそれぞれ示している。
このようにして、ジョブチケットに指定された印刷範囲に合わせた印刷データを生成し、指定されたシートの印刷データのみを印刷することが可能となる。
<実施形態のシステムによる利点>
以上のようにして、プレビュー部に表示されたプレビュー画像をみながらページ番号や章番号あるいは束によって所望の部分のみの印刷を指定することができる。プレビュー画面には印刷出力されるレイアウトを忠実に表現したプレビュー画像が表示されているために、利用者はそれを参照して正確に印刷範囲を指定できる。
また範囲指定を、章、印刷ページ、原稿ページ、冊子という、様々な単位によって行うことができるために、印刷対象の範囲や、あるいは印刷後の差し替え箇所の特定をしやすい単位を、利用者が選択することが可能である。
また、指定した範囲とともに、その範囲と同じ用紙に印刷される指定範囲外の部分も印刷される。このため、利用者は内容を変更したページや章を指定するだけで、差し替えるべき用紙あるいは冊子単位で印刷され、非常に操作性がよく、指定した印刷範囲の過誤も少ない。また製本印刷の場合に指定範囲を含む冊子単位で印刷させることで、差し替えが非常に容易となる。また、製本印刷の場合に指定範囲を含むシート単位で印刷させることで、必要な用紙の数量をいたずらに増加させることがない。