(57)【要約】【課題】異なるサイズや向きのページが混在する印刷データであっても、余白が少なく体裁のよいレイアウト印刷をできるようにすること。【解決手段】プリンタドライバ２０３の内部スプール処理部５０２内のデスプーラ５０６は、印刷データの各論理ページ情報及び印刷設定情報内のレイアウト数，出力用紙サイズに基づいて、レイアウトパターンを算出し、該算出されたレイアウトパターンに基づいて印刷データを生成する構成を特徴とする。【選択図】図５
2008015563.tif 000002
【特許請求の範囲】
【請求項１】
印刷データと、出力用紙にレイアウトする印刷データの論理ページ数を指定するレイアウト数、出力用紙サイズを含む該印刷データの印刷設定情報を保持する保持手段と、
前記印刷データの各論理ページ情報を取得する論理ページ情報取得手段と、
前記論理ページ情報及び前記印刷設定情報に基づいて、レイアウトパターンを算出するレイアウトパターン算出手段と、
前記レイアウトパターン算出手段により算出されたレイアウトパターンに基づいて印刷データを生成する生成手段と、
を有することを特徴とする印刷制御装置。
【請求項２】
前記レイアウトパターン算出手段は、
前記印刷設定情報内のレイアウト数と出力用紙サイズに基づいて、各論理ページの論理用紙サイズ毎に適用するレイアウト数を判定する判定手段と、
前記各論理ページを、論理ページの論理用紙サイズと向きに基づき、出力用紙を前記論理ページの論理用紙サイズに対応するレイアウト数で分割した領域にレイアウトするための位置を算出するレイアウト位置算出手段とを備え、
前記レイアウト位置算出手段により算出されたレイアウト位置に基づいて、異なるサイズや向きが混在する論理ページを向きを揃えて可変レイアウトするようにレイアウトパターンを算出することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記レイアウトパターン算出手段は、
前記各論理ページ情報に基づいて、論理用紙サイズが最小の論理ページの論理用紙を出力用紙に決定する出力用紙決定手段を有することを特徴とする請求項２に記載の印刷制御装置。
【請求項４】
前記レイアウト位置算出手段は、
異なるサイズや向きが混在する論理ページにおいて、各論理ページを同一の拡縮率で拡縮して出力用紙にレイアウトするようにレイアウトパターンを算出することを特徴とする請求項２又は３記載の印刷制御装置。
【請求項５】
前記レイアウト位置算出手段は、
異なる用紙系列やサイズや向きが混在する論理ページにおいて、出力用紙と用紙系列が異なる論理ページに関しては、出力用紙と用紙系列が同一の論理ページとは異なる拡縮率で拡縮して出力用紙にレイアウトするようにレイアウトパターンを算出することを特徴とする請求項２乃至４のいずれか１項に記載の印刷制御装置。
【請求項６】
前記レイアウトパターン算出手段により算出されたレイアウトパターンに基づいて余白となる領域の割合を示す余白率を算出する余白率算出手段を有し、
前記生成手段は、所定のレイアウト数までレイアウト数を変更し、該変更したレイアウト数毎に、前記レイアウトパターン算出手段にレイアウトパターンを算出させ、前記余白率算出手段により算出された余白率が最小となるレイアウトパターンに基づいて印刷データを生成することと特徴とする請求項１乃至５のいずれか１項に記載の印刷制御装置。
【請求項７】
前記レイアウトパターン算出手段により算出されたレイアウトパターンに基づいて余白となる領域の割合を示す余白率を算出する余白率算出手段を有し、
前記生成手段は、前記余白率算出手段により算出される余白率が所定の閾値を下回るまで、レイアウト数を変更し、該変更したレイアウト数毎に、前記レイアウトパターン算出手段にレイアウトパターンを算出させ、前記余白率算出手段により算出された余白率が最小となるレイアウトパターンに基づいて印刷データを生成することと特徴とする請求項１乃至５のいずれか１項に記載の印刷制御装置。
【請求項８】
前記レイアウト位置算出手段は、
異なるサイズや向きが混在する論理ページにおいて、余白が生じる場合、該余白を埋めるようにページ順序を変更してレイアウトするようにレイアウトパターンを算出することを特徴とする請求項１乃至７のいずれか１項に記載の印刷制御装置。
【請求項９】
印刷データと、出力用紙にレイアウトする印刷データの論理ページ数を指定するレイアウト数、出力用紙サイズを含む該印刷データの印刷設定情報を保持する保持手段を有する印刷制御装置における印刷制御方法において、
前記印刷データの各論理ページ情報を取得する論理ページ情報取得ステップと、
前記論理ページ情報及び前記印刷設定情報に基づいて、レイアウトパターンを算出するレイアウトパターン算出ステップと、
前記レイアウトパターン算出手段により算出されたレイアウトパターンに基づいて印刷データを生成する生成ステップと、
を有することを特徴とする印刷制御方法。
【請求項１０】
請求項１乃至８に記載された印刷制御装置としてコンピュータを機能させるための、又は、請求項９記載の印刷制御方法をコンピュータに実行させるためのプログラム。
【請求項１１】
請求項１乃至８に記載された印刷制御装置としてコンピュータを機能させるための、又は、請求項９記載の印刷制御方法をコンピュータに実行させるためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル複合機やプリンタなどで印刷を行う際に、１枚の用紙上に１ページの印刷データを印刷するのではなく、１枚の用紙上に複数ページ分の印刷データを縮小配置して印刷する技術に関する。
【背景技術】
【０００２】
デジタル複合機やプリンタなどで印刷を行う際に、１枚の用紙上に１ページの印刷データを印刷するのではなく、１枚の用紙上に複数ページ分の印刷データを縮小配置して印刷する技術がある。
【０００３】
このような印刷は、レイアウト印刷、Ｎページ印刷、Nup印刷等と呼ばれており、ドラフト印刷や、紙の節約などの目的のために利用されている。
【０００４】
しかし、複数のページサイズやページ向きが混在しているような文書をＮページ印刷すると、同一用紙にＮページ分印刷していないにも関わらず、ページサイズや向きが変わったところで排紙してしまうという問題がある。
【０００５】
こうした問題の解決手段として、特許文献１（特開平１１−９９７２３号公報）が提案されている。
【０００６】
特許文献１では、原稿サイズごとに拡縮率を変える、もしくは用紙の向きを変えるなどして、異なるページサイズや向きを１枚の用紙上に縮小配置し、ページサイズの変わり目において途中で排紙することなく、同一用紙にＮページ印刷する技術が提案されている。
【０００７】
この発明によれば、同一文書内に用紙サイズや用紙向きが混在しているような場合、論理ページ毎に拡縮率を決定して、異なる論理ページを同一用紙に縮小印刷する。この際、各論理ページの向きを揃えるようにレイアウトすることで、用紙サイズや向きが混在していない文書に近い出力を得ることを可能としている。
【０００８】
また、特許文献２（特開平１１−２４９８５８号公報）のように、白領域のない体裁の良い縮小レイアウトされた印刷結果を得るために、Ｎページ印刷をする際に、印刷文書のページ数がＮページの倍数でない場合に、無駄な余白領域が発生しないように可変ページ数で分割される縮小レイアウトを決定する技術が存在する（従来技術３）。
【０００９】
図２０〜図２２は、従来のレイアウト印刷を説明するための模式図である。
【００１０】
例えば、図２０の２００１に示すような９頁の原稿を４up印刷する場合、特許文献１のレイアウト技術を用いた場合は図２１のようにレイアウトされ、特許文献２のレイアウト技術を用いた場合は図２２のようにレイアウトされる。
【特許文献１】特開平１１−９９７２３号公報
【特許文献２】特開平１１−２４９８５８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら特許文献１に記載の技術には、次のような問題点がある。
【００１２】
図２０に示すように、論理用紙の向きが異なる際に、出力用紙を均等に分割した領域に印刷の向きを揃えつつ縮小配置するため、縮小後の画像の上下または左右に無駄な余白が生じてしまう（図２１）。逆に、無駄な余白を出さないようにすると印刷の向きが揃わないため、可読性が悪くなる。
【００１３】
論理用紙のサイズに関わらず、出力用紙を均等に分割した領域に収まるように縮小配置するため、各論理用紙で拡縮率が異なってしまい、元データの用紙混在の体裁が崩れてしまう。
【００１４】
論理用紙のサイズを考慮せずに、出力用紙を均等に分割した領域に収まるように縮小配置するため、ユーザが想定した縮小率以上の縮小が適用されてしまい（例：A3縦データをA4横2in1で出力）、文字データなどの可読性が悪くなる。
【００１５】
また、特許文献２では、同一文書内に用紙サイズや向きが混在している場合のＮページ印刷の体裁を整えるという目的は同じであるが、用紙混在の体裁が崩れてしまう（図２２）。
【００１６】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、異なるサイズや向きのページが混在する印刷データであっても、余白が少なく体裁のよいNup印刷を行うことができる仕組を提供することである。
【課題を解決するための手段】
【００１７】
本発明は、印刷データと、出力用紙にレイアウトする印刷データの論理ページ数を指定するレイアウト数、出力用紙サイズを含む該印刷データの印刷設定情報を保持する保持手段と、前記印刷データの各論理ページ情報を取得する論理ページ情報取得手段と、前記論理ページ情報及び前記印刷設定情報に基づいて、レイアウトパターンを算出するレイアウトパターン算出手段と、前記レイアウトパターン算出手段により算出されたレイアウトパターンに基づいて印刷データを生成する生成手段と、を有することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、各用紙の拡縮率や印刷の向きを元の原稿のままとして、体裁のよいレイアウト印刷を行うことができる。
【００１９】
また、用紙系列の異なるページに関しては、他のページと異なる拡縮率で変倍して全体として体裁のよいレイアウト印刷を行うことができる。
【００２０】
さらに、余白が生じる場合、ページ数を変更して、余白の少ないレイアウト印刷することができる。
【００２１】
従って、異なるサイズや向きのページが混在する印刷データであっても、余白が少なく体裁のよいレイアウト印刷を行うことができる等の効果を奏する。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００２３】
〔第１実施形態〕
図１は、本発明の一実施形態を示す印刷システムの構成を示すブロック図である。
【００２４】
図１において、印刷システムは、ホストコンピュータ３０００、及びプリンタ１５００を有し、これらはデータ転送経路１２１を介して互いに接続されている。
【００２５】
ホストコンピュータ３０００は、ＣＰＵ１０１と、ＲＡＭ１０２と、ＲＯＭ１０３と、入力コントローラ（入力Ｃ）１０５と、ビデオコントローラ（ＶＣ）１０６と、メモリコントローラ（ＭＣ）１０７と、通信インターフェースコントローラ（通信Ｉ／ＦＣ）１０８と、キーボード（ＫＢ）１０９と、ＣＲＴディスプレイ（ＣＲＴ）１１０と、外部メモリ１１１とを備える。
【００２６】
ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、入力Ｃ１０５、ＶＣ１０６、ＭＣ１０７、及び通信Ｉ／ＦＣ１０８は、システムバス１０４を介して互いに接続されている。
【００２７】
ＲＯＭ１０３又は外部メモリ１１１には、ＣＰＵ１０１の制御プログラムであるＢＩＯＳ（Basic Input／Output System）、オペレーティングシステムプログラム（以下、「ＯＳ」という。）、及び後述する各処理を実行するために必要な各種プログラム等が記憶されている。
【００２８】
本実施の形態で使用するＯＳは、例えば、マイクロソフト社製のウィンドウズＸＰ（登録商標）を想定するが、これに限られるものではない。
【００２９】
ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。ＣＰＵ１０１は、処理の実行に際して必要なプログラム等をＲＡＭ１０２にロードして、プログラムを実行することで各種動作を実現する。
【００３０】
入力コントローラ（入力Ｃ）１０５は、キーボード（ＫＢ）１０９や不図示のマウス等のポインティングデバイスからの入力を制御する。
【００３１】
ビデオコントローラ（ＶＣ）１０６は、ＣＲＴディスプレイ（ＣＲＴ）１１０等の表示器への表示を制御する。尚、表示器はＣＲＴに限られるものではなく、液晶ディスプレイであっても構わない。
【００３２】
メモリコントローラ（ＭＣ）１０７は、外部メモリ１１１へのアクセスを制御する。
【００３３】
外部メモリ１１１は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、及び各種データ等を記憶し、ハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）、又はＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等から構成される。
【００３４】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）１０８は、ネットワークを介した外部機器との接続・通信を制御する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信や、データ転送経路１２１を介してプリンタ１５００との間でデータ送受信等が可能である。
【００３５】
ＣＰＵ１０１は、例えば、ＲＡＭ１０２内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ＣＲＴ１１０に表示情報を表示する。また、ＣＰＵ１０１は、ＣＲＴ１１０にマウスカーソル等を表示することにより、ユーザによる指示を可能にする。
【００３６】
プリンタ１５００は、ＣＰＵ１１２と、ＲＡＭ１１９と、フォントＲＯＭ１１３ａと、プログラムＲＯＭ１１３ｂと、データＲＯＭ１１３ｃと、入力部１１８と、印刷部インターフェース（印刷部Ｉ／Ｆ）１１６と、印刷部１１７と、操作部１５０１と、メモリコントローラ（ＭＣ）１２０と、外部メモリ１１４とを備える。ＣＰＵ１１２、ＲＡＭ１１９、ＲＯＭ１１３、入力部１１８、印刷部Ｉ／Ｆ１１６、操作部１５０１と、ＭＣ１２０は、システムバス１１５を介して互いに接続されている。
【００３７】
プリンタＣＰＵ１１２は、プログラムＲＯＭ１１３ｂ又は外部メモリ１１４に記憶された制御プログラム等に基づいて、印刷部Ｉ／Ｆ１１６を介して印刷部（プリンタエンジン）１１７に出力情報としての画像信号を出力する。
【００３８】
プログラムＲＯＭ１１３ｂには、ＣＰＵ１１２の制御プログラム等が記憶される。フォントＲＯＭ１１３ａには、上記出力情報を生成する際に使用するフォントデータ等が記憶される。データＲＯＭ１１３ｃには、プリンタ１５００がハードディスク等の外部メモリ１１４を有していない場合には、ホストコンピュータ３０００上で利用される情報等が記憶される。
【００３９】
ＣＰＵ１１２は、入力部１１８を介してホストコンピュータ３０００との通信処理を行い、プリンタ１５００内の情報等をホストコンピュータ３０００に通知することができる。
【００４０】
ＲＡＭ１１９はＣＰＵ１１２の主メモリであり、ワークエリア等として機能する。また、ＲＡＭ１１９は、不図示の増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。尚、ＲＡＭ１１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等にも用いられる。
【００４１】
メモリコントローラ（ＭＣ）１２０は、外部メモリ１１４へのアクセスを制御する。外部メモリ１１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶し、ハードディスク（ＨＤ）、ＩＣカード等で構成される。
【００４２】
操作部１５０１は、操作のためのスイッチ及びＬＥＤ表示器等が配されている操作パネルである。尚、プリンタ１５００が備える外部メモリ１１４は、１個に限られるものではなく、少なくとも１個以上であれば複数であってもよい。また、プリンタ１５００は、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されてもよい。更に、プリンタ１５００は、操作部１５０１により設定されたプリンタモード設定情報を記憶するＮＶＲＡＭを有していてもよい。
【００４３】
本実施の形態では、プリンタ１５００がサポートするページ記述言語（以下、「ＰＤＬ」という。）は、LBP Image Processing System（以下、「ＬＩＰＳ」という。）等の比較的に高度なＰＤＬであると想定しているが、これに限られるものではない。
【００４４】
本発明を実現するための印刷制御プログラム（以下、「プリンタドライバ」という。）は外部メモリ１１１に記録されており、必要に応じてＲＡＭ１０２にロードされることによりＣＰＵ１０１によって実行される。プリンタドライバが用いる定義ファイル及び各種情報テーブルは外部メモリ１１１に格納されている。尚、上記印刷システムの構成は一例であり、用途や目的に応じて様々な構成例があることは云うまでもない。例えば、本発明は、単体の機器に適用されてもよく、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等のネットワークを介して接続された複数の機器からなるシステムに適用されてもよい。
【００４５】
図２は、図１におけるホストコンピュータ３０００のソフトウェア構成を示すブロック図である。
【００４６】
図２において、ホストコンピュータ３０００は、アプリケーションプログラム（以下、「アプリケーション」という。）２０１と、グラフィックスエンジン２０２と、プリンタドライバ２０３と、プリントサブシステム２０４とを備え、これらは、それぞれ外部メモリ１１１にファイルとして保存されたプログラムモジュールである。これらのモジュールは、ＯＳやそのモジュールを利用するモジュールによってＲＡＭ１０２にロードされて実行される。
【００４７】
アプリケーション２０１及びプリンタドライバ２０３は、ＦＤ、不図示のＣＤ−ＲＯＭ等の外部メモリ１１１から、又は後述するネットワーク３０１（図３）を介して接続された外部機器から、ハードディスク（ＨＤ）等の外部メモリ１１１に追加される。
【００４８】
外部メモリ１１１に保存されているアプリケーション２０１は、ＣＰＵ１０１によってＲＡＭ１０２にロードされて実行される。このアプリケーション２０１からプリンタ１５００に対して印刷を行わせる際には、同様にＣＰＵ１０１によってＲＡＭ１０２にロードされて実行されるグラフィックスエンジン２０２を利用して出力（描画）を行う。
【００４９】
グラフィックスエンジン２０２は、印刷装置毎に用意されたプリンタドライバ２０３を起動する。これにより、プリンタドライバ２０３は、ＣＰＵ１０１によって外部メモリ１１１からＲＡＭ１０２にロードさせて実行される。
【００５０】
グラフィックスエンジン２０２は、このプリンタドライバ２０３を用いて、アプリケーション２０１から出力された印字命令や描画命令をＰＤＬによるプリンタ制御命令に変換する。
【００５１】
プリンタドライバ２０３により変換されたプリンタ制御コマンドは、プリントサブシステム２０４を経由して、データ転送経路１２１を介してプリンタ１５００に出力される。
【００５２】
プリントサブシステム２０４は、ＯＳによって起動されて、ＣＰＵ１０１によって外部メモリ１１１からＲＡＭ１０２にロードされて実行されるものであり、印刷ジョブのスケジューリング、ホストコンピュータ３０００とプリンタ１５００との接続制御、及びプリンタ１５００のステータスの管理を行う。
【００５３】
尚、プリンタドライバ２０３は、前述した、アプリケーション２０１から出力された印字命令や描画命令をプリンタ制御命令に変換し、プリント出力に反映されるようプリンタに指示する機能に加えて、プリンタドライバ２０３やプリンタ１５００が有する機能を制御するための設定を行う機能（以下、「ユーザインタフェース（ＵＩ）」という。）、その設定を記憶する機能、プリンタドライバ２０３やプリンタ１５００が有する機能の情報をアプリケーション２０１やＯＳに提供する機能、ＵＩで設定された機能がプリンタ１５００の有する機能である場合にプリンタ制御命令を生成する機能、及び、ＵＩで設定された機能がプリンタドライバ２０３独自で行う機能である場合にその機能を実現する機能等を有する。
【００５４】
図３は、図１におけるホストコンピュータ３０００及びプリンタ１５００が適用された印刷システムの構成を示すブロック図である。
【００５５】
図３において、印刷システムは、複数のホストコンピュータ３０００、プリンタ１５００、及びプリントサーバコンピュータ４０００を有し、これらはネットワーク３０１を介して互いに接続されている。
【００５６】
ネットワーク３０１に接続されたホストコンピュータ３０００の通信Ｉ／Ｆコントローラ１０８は、ネットワークインタフェースカード（ＮＩＣ）の機能を有するものとする。
【００５７】
プリンタ１５００は、セントロニクスやＵＳＢ等のローカルインタフェース３０２を介してプリントサーバコンピュータ４０００と接続されて該プリントサーバ４０００を介してネットワーク３０１に接続される形態であってもよく、ネットワーク３０１に直接接続される形態であってもよい。ネットワーク３０１に直接接続されたプリンタ１５００の入力部１１８は、ネットワークインタフェースカード（ＮＩＣ）の機能を有するものとする。
【００５８】
ホストコンピュータ３０００は、プリントサーバコンピュータ４０００を介してネットワーク３０１に接続されたプリンタ１５００に印刷ジョブを送信する場合、まず、プリントサブシステム２０４を介して、プリントサーバコンピュータ４０００へ印刷ジョブを送信する。プリントサーバコンピュータ４０００は、ホストコンピュータ３０００から送信されてきた印刷ジョブを、プリントサーバコンピュータ４０００上の不図示のプリントサブシステムを介して、プリンタ１５００に送信する。
【００５９】
また、ホストコンピュータ３０００は、ネットワーク３０１に直接接続されたプリンタ１５００に印刷ジョブを送信する場合、プリントサブシステム２０４を介して、プリンタ１５００に直接印刷ジョブを送信する。
【００６０】
図４は、図２のホストコンピュータ３０００によって実行される印刷制御処理の基本的な流れを示す図である。
【００６１】
図４において、アプリケーション２０１は、直接プリンタドライバ２０３と情報の送受信を行うのではなく、ＯＳが有するグラフィックスエンジン２０２を介してプリンタドライバ２０３と情報の送受信を行う。
【００６２】
グラフィックスエンジン２０２は、アプリケーション２０１から指示を受け、プリンタドライバ２０３に対して指示を行う。
【００６３】
まず、アプリケーション２０１は、片面／両面印刷設定や部数設定等の印刷設定情報をＲＡＭ１０２に確保されたメモリを介してグラフィックスエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックスエンジン２０２より、その印刷設定情報と、その印刷設定情報に基づいてプリンタドライバ２０３が印刷処理を行う上で必要な情報（プリンタドライバ情報）を格納するためにＲＡＭ１０２上に確保されたメモリ領域の初期化要求とを受信する（ステップＳ４０１）。これにより、プリンタドライバ２０３は、プリンタドライバ情報を保持するメモリ領域を確保し、印刷設定情報に従ってそのメモリ領域を初期化する。
【００６４】
プリンタドライバ２０３は、プリンタドライバ２０３が参照するプリンタドライバ情報を保持するメモリ領域の初期化要求の受信により必要な処理を完了すると、ステップＳ４０１で受信した印刷設定情報に応じたプリンタドライバ２０３の印刷能力情報をグラフィックスエンジン２０２に通知する。
【００６５】
アプリケーション２０１は、グラフィックスエンジン２０２より、最終的にプリンタ１５００に送信される印刷ジョブとその印刷ジョブに反映させる印刷設定情報とを関連付けるために必要なハンドル値を取得する（ステップＳ４０２）。
【００６６】
次に、アプリケーション２０１が、印刷の開始要求をグラフィックスエンジン２０２に行うと、プリンタドライバ２０３は、グラフィックスエンジン２０２より印刷開始要求を受信する（ステップＳ４０３）。
【００６７】
これにより、プリンタドライバ２０３は、プリンタ１５００が印刷を開始するために必要なＰＤＬによるプリンタ制御命令を生成する。尚、プリンタ制御命令を生成する処理は、最初のページ（１ページ目）の印刷処理が開始された時点、即ち、アプリケーションからの最初のページの描画指示を受信した時点で行ってもよい。
【００６８】
アプリケーション２０１は、文字やイメージ等の描画オブジェクトの描画を実現するための描画指示をグラフィックスエンジン２０２に対して行うと、プリンタドライバ２０３は、その描画指示をグラフィックスエンジン２０２より受信する（ステップＳ４０４）。
【００６９】
これにより、プリンタドライバ２０３は、指定された描画オブジェクトや改ページ、更には印刷設定情報を途中で変更するための要求等を含む描画指示を反映したプリンタ制御命令を適宜生成し、生成したプリンタ制御命令をプリンタ１５００に出力する。尚、印刷するページ数はアプリケーション２０１からの指定に因る。
【００７０】
次に、アプリケーション２０１が、印刷終了要求をグラフィックスエンジン２０２に行うと、プリンタドライバ２０３は、グラフィックスエンジン２０２より印刷終了要求を受信する（ステップＳ４０５）。これにより、プリンタドライバ２０３は、プリンタ１５００が印刷終了に必要なプリンタ制御命令を生成し、プリンタ制御命令の生成処理を終了する。
【００７１】
次に、アプリケーション２０１は、ステップＳ４０２で取得したハンドル値の破棄要求をグラフィックスエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックスエンジン２０２より、メモリ領域格納されたプリンタドライバ情報の破棄要求を受信する。これにより、プリンタドライバ２０３は、上記プリンタドライバ情報の破棄処理を行う（ステップＳ４０６）。
【００７２】
上記ステップＳ４０３〜Ｓ４０５の処理により、プリンタ１５００に送信される１つの印刷ジョブが生成される。
【００７３】
図５は、図２に示したプリンタドライバ２０３の構成を詳細に示す図である。
【００７４】
図５において、プリンタドライバ２０３は、アプリケーション２０１からの印刷データを一旦中間コードデータでスプールする構成を有し、一旦スプールした中間コードデータの内容に対して加工することができる。これにより、アプリケーション２０１からの印刷データに対して、拡大縮小や、複数ページを１ページに縮小して印刷する等、アプリケーション２０１が有していない機能を実現することができる。
【００７５】
尚、印刷データの加工を行うためには、通常プリンタドライバ２０３が提供するウインドウから設定を行い、プリンタドライバ２０３がその設定内容をＲＡＭ１０２上又は外部メモリ１１１上に保管する。
【００７６】
まず、グラフィックスエンジン２０２からの印刷命令であるＤＤＩ関数をディスパッチャ５０１が受け取る。ディスパッチャ５０１がグラフィックスエンジン２０２から受け取った印刷命令（ＤＤＩ関数）が、アプリケーション２０１からグラフィックスエンジン２０２へ発行された印刷命令（ＧＤＩ関数）に基づくものである場合には、ディスパッチャ５０１は外部メモリ１１１に格納されている内部スプール処理モジュールであるスプーラ５０３をＲＡＭ１０２にロードし、通常の印字データ作成処理部５０７ではなくスプーラ５０３へ印刷命令（ＤＤＩ関数）を送付する。
【００７７】
スプーラ５０３は、受け取った印刷命令を解析し、ページ単位に中間コードデータに変換してスプールファイル５０４に保存する。このページ単位に保存されている中間コードデータのスプールファイルをページ描画ファイル（ＰＤＦ：Page Description File）と呼ぶ。
【００７８】
また、スプーラ５０３は、プリンタドライバ２０３に対して設定されている製本印刷、Nup、両面、ステイプル、カラー／モノクロ指定等の印刷データに関する、後述する図６に示す加工設定情報をプリンタドライバ２０３から取得してジョブ単位のファイルとしてスプールファイル５０４に保存する。このジョブ単位に保存されている加工設定情報のスプールファイルをジョブ設定ファイル（ＳＤＦ：Spool Description File）と呼ぶ。
【００７９】
尚、スプールファイル５０４は、外部メモリ１１１上にファイルとして生成されるが、ＲＡＭ１０２上に生成されても構わない。
【００８０】
スプーラ５０３は、外部メモリ１１１に格納されているスプールファイルマネージャ５０５をＲＡＭ１０２にロードし、スプールファイルマネージャ５０５に対してスプールファイル５０４の生成状況を通知する。その後、スプールファイルマネージャ５０５は、スプールファイル５０４に保存された印刷データに関する加工設定情報の内容に従って印刷を行えるか否かを判断する。
【００８１】
スプールファイルマネージャ５０５がグラフィックスエンジン２０２を利用して印刷を行えると判断した際には、外部メモリ１１１に格納されているデスプーラ５０６をＲＡＭ１０２にロードし、デスプーラ５０６に対して、スプールファイル５０４に記述された中間コードデータのページ描画ファイルの印刷処理を行うように指示する。
【００８２】
デスプーラ５０６は、スプールファイル５０４に含まれる中間コードデータのページ描画ファイルを、スプールファイル５０４に含まれる加工設定情報を含むジョブ設定ファイルに従って加工し、ＧＤＩ関数を再生成し、もう一度グラフィックスエンジン２０２にＧＤＩ関数を出力する。
【００８３】
ディスパッチャ５０１が、グラフィックスエンジン２０２から受け取った印刷命令（ＤＤＩ関数）がデスプーラ５０６からグラフィックスエンジン２０２へ発行された印刷命令（ＧＤＩ関数）に基づいたものである場合には、ディスパッチャ５０１はスプーラ５０３ではなく、プリンタドライバの通常の印字データ作成処理部５０７に印刷命令を送る。
【００８４】
プリンタドライバ２０３は、グラフィックスエンジン２０２から取得したＤＤＩ関数に基づいてＰＤＬ等からなるプリンタ制御命令を生成し、生成したプリンタ制御命令をプリントサブシステム２０４経由でプリンタ１５００に出力する。
【００８５】
本発明では、主にデスプーラ５０６がスプールファイルマネージャ５０５から印刷開始要求を受け付けた際の処理に機能が追加される。
【００８６】
図６は、図５に示したスプールファイル５０４に保存される加工設定情報の一例を示す図である。
【００８７】
この加工設定情報は、図７に示すドライバＵＩ１６００からユーザにより設定され加工設定情報（図６）に記憶される。
【００８８】
図７は、図５に示したプリンタドライバ２０３の印刷設定を行うドライバＵＩの一例を示す模式図である。
【００８９】
以下、図８〜図１５を参照して、本発明の自動レイアウト処理について説明する。
【００９０】
図８は、本発明における第１の制御処理手順の一例を示すフローチャートであり、図１に示したＣＰＵ１０１が図５におけるプリンタドライバ２０３を利用して実行する、自動レイアウト処理に対応する。即ち、このフローチャートの処理はＣＰＵ１０１が外部メモリ１１１に格納されるプリンタドライバプログラムをＲＡＭ１０２に読み出して実行することにより実現される。
【００９１】
なお、ここでは、図９に示す論理ページ８ページ且つ４up を指定した場合の出力結果を基に詳述する。
【００９２】
また、図１０は、図８に示した自動レイアウト処理の際にＲＡＭ１０２に記憶される情報を示す模式図である。
【００９３】
以下、図８の自動レイアウト処理の説明を開始する。
【００９４】
まず、図８のステップＳ７０１において、デスプーラ５０６は、スプールファイルマネージャ５０５から印刷開始要求を受け付けると、スプールファイル５０４に保存された印刷データに関する加工設定情報（図６）に含まれるNupの情報を参照して、Nup印刷が設定されているか否かを判別する。
【００９５】
ステップＳ７０１の判別の結果、Nup印刷が設定されていないとき（つまり、１up の場合）は、デスプーラ５０６は、ステップＳ７１２において、スプールファイル５０４に保存された印刷データに関する加工設定情報に基づいて通常印刷を行い、本処理を終了する。
【００９６】
一方、ステップＳ７０１の判別の結果、Nup印刷が設定されているとき（２up 以上の場合）は、デスプーラ５０６は、ステップＳ７０２において、スプールファイル５０４に保存されている各論理ページの中からの最小用紙サイズ検索し、出力用紙サイズ情報としてサイズおよび向きをＲＡＭ１０２に保持する。なお、図９に示す例では、出力用紙サイズ情報は、（Ａ４，ポートレイト）となる。
【００９７】
次に、ステップＳ７０３において、デスプーラ５０６は、スプールファイル５０４に保存された加工設定情報（図６）からNup情報を取得し、ＲＡＭ１０２に保持する。なお、Nup情報は、図７に示したドライバＵＩ１６００上のページレイアウト１６０２でユーザにより設定され、加工設定情報に記憶されている。
【００９８】
次に、ステップＳ７０４において、デスプーラ５０６は、ＲＡＭ１０２に保持されている、出力用紙サイズ情報とNup情報を基に図１１に示すレイアウトテンプレートを決定する。
【００９９】
図９に示した例では、出力用紙サイズ情報が「Ａ４ポートレイト」且つNup設定が「４ｕｐ」のケースであるので、決定されるレイアウトテンプレートは、「Ａ４ポートレイト４ｕｐ」となる。該情報は、ＲＡＭ１０２に保持される。
【０１００】
次に、ステップＳ７０５において、デスプーラ５０６は、ＲＡＭ１０２に保持されている、出力用紙サイズ情報とNup情報を基に、図１２に示す、論理用紙サイズに適用するNupのテーブルを作成する。
【０１０１】
この際、各論理用紙サイズで同じ拡縮率が適用されるようにNupを決定する。なお、ここで言う、ブロック数とは、論理用紙サイズをレイアウトする際に出力用紙をNup分割した領域をいくつ使用するかを意味している。該情報は、ＲＡＭ１０２に保持される。
【０１０２】
次に、ステップＳ７０６において、デスプーラ５０６は、図１１のレイアウトテンプレートと図１２のNupテーブルおよびスプールファイル５０４に保存されている、各論理用紙のサイズと向きを基に、図１３に示すレイアウトテーブルを決定する。該情報は、ＲＡＭ１０２に保持される。なお、ステップＳ７０６の各論理用紙のレイアウトテーブルを求める処理の詳細は、後述する図１５で説明する。
【０１０３】
次に、ステップＳ７０７において、デスプーラ５０６は、図１３のレイアウトテーブルを基に余白の割合求める。詳細には、「余白の割合＝１−（図１３に示すレイアウトテーブルのレイアウト番号の数）／（図１１のレイアウトテンプレートのレイアウト番号の数×出力ページ数）」に対応する算出式で余白の割合を計算する。例えば、図１３の例では、レイアウトテンプレートのレイアウト番号の数は「１１」、図１１の例ではレイアウトテンプレート「Ａ４ポートレート４ｕｐ」のレイアウト番号の数は「４」、図９の出力結果に示すように出力ページ数は「３」となるので、余白の割合は「１−１１／４×３」、即ち「１／１２」となる。該情報は、ＲＡＭ１０２に保持される。
【０１０４】
次に、ステップＳ７０９において、デスプーラ５０６は、ステップＳ７０７で求めた余白率が「０％」でなく、且つ、ステップＳ７０４で求めた、Nupテーブルにおける最大論理用紙サイズのNup設定が「１ｕｐ」でないと判定した場合には、デスプーラ５０６は、ステップＳ７１０において、ＲＡＭ１１に保持している、Nupの分割数を半分にして、ステップＳ７０４から処理を繰り返す。
【０１０５】
一方、ステップＳ７０９で、デスプーラ５０６が、ステップＳ７０７で求めた余白率が「０％」、又は、ステップＳ７０４で求めた、Nupテーブルにおける最大論理用紙サイズのNup設定が「１ｕｐ」であると判定した場合には、デスプーラ５０６は、ステップＳ７１１において、ＲＡＭ１０２に保持している、レイアウトテーブルの中から余白率の最も低いレイアウトテーブルを適用して出力する。なお、この際、図７に示したドライバＵＩ１６００上の出力用紙サイズ１６０１でユーザが明示的に出力用紙サイズを指定している場合は、その用紙サイズに拡大縮小して出力する（この例を後述する図１４に示す）。また、ステップＳ７１１の処理が終了すると、本フローチャートの処理を終了する。
【０１０６】
図１４は、図７に示したドライバＵＩ１６００上の出力用紙サイズ１６０１でユーザが明示的に出力用紙サイズが指定されており、その用紙サイズに拡大縮小して出力する場合の一例を示した模式図である。
【０１０７】
この例では、ドライバＵＩ１６００上の出力用紙サイズ１６０１
ドライバＵＩ１６００上のページレイアウト１６０２に「４ページ／枚」（即ち４up）が指定され、出力用紙サイズ１６０１に「Ａ３」が設定されている場合に対応する。
【０１０８】
図１４において、１４０１に示すように、Ａ４Ｐ，Ａ３Ｌが混在した原稿を出力するものとする。
【０１０９】
この場合、出力サイズが明示的に指定されていなければ、出力結果は１４０２に示すようにＡ４Ｐ用紙にNup出力されることとなる。
【０１１０】
しかしながら、出力サイズに「Ａ３」が明示的に指定されているので、この場合、１４０３に示すように、Ａ４のレイアウト結果を、出力用紙サイズＡ３にフィットするように拡大して出力する。
【０１１１】
また、出力サイズに「Ａ５」が明示的に指定されている場合は、出力サイズＡ５にフィットするように縮小して出力する。
【０１１２】
以下、図１５を参照して、図８のステップＳ７０６に示した各論理用紙のレイアウトテーブルを求める処理について詳細に説明する。
【０１１３】
図１５は、本発明における第２の制御処理手順の一例を示すフローチャートであり、デスプーラ５０６における図８のＳ７０６の各論理用紙のレイアウトテーブルを求める処理に対応する。即ち、このフローチャートの処理はＣＰＵ１０１が外部メモリ１１１に格納されるプリンタドライバプログラムをＲＡＭ１０２に読み出して実行することにより実現される。
【０１１４】
まず、ステップＳ８０１は、デスプーラ５０６は、スプールファイル５０４に保存されている中間コードのページ描画ファイルから、先頭の論理ページのサイズおよび向きの情報を取得し、ＲＡＭ１０２のカレント論理用紙に保持する。
【０１１５】
次に、ステップＳ８０２において、デスプーラ５０６は、ステップＳ８０１で取得した論理ページが出力用紙をNup分割した領域のどの位置にレイアウトするか（=レイアウト番号）を求める処理を実行する。なお、このステップＳ８０２のレイアウト番号を求める処理の詳細は後述する図１６に示す。
【０１１６】
次に、ステップＳ８０３において、デスプーラ５０６は、ステップＳ８０１，Ｓ８０２で求めた、論理ページのサイズおよび向きとレイアウト番号を、ＲＡＭ１０２に保持しているレイアウトテーブル（図１３）に追加する。
【０１１７】
次に、ステップＳ８０４において、デスプーラ５０６は、スプールファイル５０４に保存されている中間コードのページ描画ファイルから、次の論理ページのサイズおよび向きの情報を取得し、ＲＡＭ１０２のカレント論理用紙に保持する処理である。
【０１１８】
このとき、デスプーラ５０６は、論理ページが存在するか否をステップＳ８０５において判断し、論理ページが存在しない（全ての論理ページの処理が完了した）場合は、本処理を終了する。
【０１１９】
一方、ステップＳ５０６で、論理ページが存在すると判断した場合には、デスプーラ５０６は、ステップＳ８０６に処理を進める。
【０１２０】
ステップＳ８０６では、デスプーラ５０６は、ステップＳ８０４で取得した論理ページが出力用紙をNup分割した領域のどの位置にレイアウトするか（=レイアウト番号）を求める処理を実行する。なお、このステップＳ８０６の処理の詳細は後述する図１６に示す。
【０１２１】
次に、ステップＳ８０７において、デスプーラ５０６は、ステップＳ８０４，Ｓ８０６で求めた、論理ページのサイズおよび向きとレイアウト番号を、ＲＡＭ１０２に保持しているレイアウトテーブルに追加し、ステップＳ８０４に処理を戻す。そして、論理ページが全ページが終了するまでＳ８０４〜Ｓ８０７の処理を繰り返す。
【０１２２】
以下、図１６を参照して、図１５のステップＳ８０２，Ｓ８０６に示したカレントの論理ページと直前の論理ページとを比較してレイアウト位置を決める処理を詳細に説明する。
【０１２３】
図１６は、本発明における第３の制御処理手順の一例を示すフローチャートであり、デスプーラ５０６における図１４のステップＳ８０２，Ｓ８０６に示したカレントの論理ページと直前の論理ページとを比較してレイアウト位置を決める処理に対応する。即ち、このフローチャートの処理はＣＰＵ１０１が外部メモリ１１１に格納されるプリンタドライバプログラムをＲＡＭ１０２に読み出して実行することにより実現される。
【０１２４】
まず、ステップＳ９０１において、デスプーラ５０６は、ＲＡＭ１０２に保持されている、Nupテーブルから、ＲＡＭ１０２のカレント論理用紙に保存されている、現在の論理ページに対応するブロック数を求める。該情報はＲＡＭ１０２に保持する。
【０１２５】
次に、ステップＳ９０２において、デスプーラ５０６は、現在の論理ページが先頭ページであるかを判定し、先頭ページであると判定した場合には、ステップＳ９０９へ処理を進める。
【０１２６】
ステップＳ９０９において、デスプーラ５０６は、起点レイアウト番号を（１）とし、ステップＳ９１０に処理を進める。該情報はＲＡＭ１０２に保持される。
【０１２７】
一方、ステップＳ９０２で、現在の論理ページが先頭ページでないと判定した場合には、デスプーラ５０６は、ステップＳ９０３に処理を進める。
【０１２８】
ステップＳ９０３では、デスプーラ５０６は、ＲＡＭ１０２のカレント論理用紙に保存されている、現在の論理ページを同一の出力用紙にレイアウトするための領域があるか否かをチェックする。詳細には、「Nup情報 − 前ページのレイアウト番号 ＜＝ 現在の論理ページのブロック数」が「真」の場合にはレイアウトするための領域があると判断し、「偽」の場合にはレイアウトするための領域が無いと判断する。
【０１２９】
ステップＳ９０３で、ＲＡＭ１０２のカレント論理用紙に保存されている、現在の論理ページを同一の出力用紙にレイアウトするための領域が無いと判定した場合には、デスプーラ５０６は、同一の出力用紙に出力できないと判断して、ステップＳ９０９に処理を進め、起点レイアウト番号を（１）とし、ステップＳ９１０に処理を進める。該情報はＲＡＭ１０２に保持される。
【０１３０】
一方、ステップＳ９０３で、ＲＡＭ１０２のカレント論理用紙に保存されている、現在の論理ページを同一の出力用紙にレイアウトするための領域が有ると判定した場合には、デスプーラ５０６は、ステップＳ９０４に処理を進める。
【０１３１】
ステップＳ９０４では、デスプーラ５０６は、ＲＡＭ１０２に保持している、現在の論理ページと前ページで用紙サイズが同じであるか否かを判定し、同じであると判断した場合には、ステップＳ９０５に処理を進める。
【０１３２】
ステップＳ９０５では、デスプーラ５０６は、ＲＡＭ１０２に保持している、現在の論理ページと前ページで用紙の向きが同じであるか否かを判定し、向きが同じであると判定した場合には、ステップＳ９０７に処理を進める。
【０１３３】
ステップＳ９０７では、デスプーラ５０６は、「前ページのレイアウト番号＋１」を起点レイアウト番号とし、ステップＳ９１０に処理を進める。例えば、前ページのレイアウト番号が（１）であれば現在のページの起点レイアウト番号は（２）とする。該情報はＲＡＭ１０２に保持される。
【０１３４】
一方、ステップＳ９０５で、ＲＡＭ１０２に保持している、現在の論理ページと前ページで用紙の向きが同じでないと判定した場合には、デスプーラ５０６は、同一の出力用紙に出力できないと判断して、ステップＳ９０９に処理を進め、起点レイアウト番号を（１）とし、ステップＳ９１０に処理を進める。該情報はＲＡＭ１０２に保持される。
【０１３５】
一方、ステップＳ９０４で、ＲＡＭ１０２に保持している、現在の論理ページと前ページで用紙サイズが同じないと判定した場合には、ステップＳ９０６に処理を進める。
【０１３６】
ステップＳ９０６では、デスプーラ５０６は、現在の論理ページと前ページで用紙サイズが異なるが、現在の論理ページにNupを適用した結果、前ページとデータの向きが同じになるか否かを判定する。例えば、A3L 2up と A4P 4up、A3P 2up と A5P 8up等の場合、Nupを適用でデータの向きが同じになる。なお、L：ランドスケープ、P：ポートレイトを示す。
【０１３７】
ステップＳ９０６で、現在の論理ページにNupを適用した結果、前ページとデータの向きが同じになると判定した場合には、デスプーラ５０６は、同一の出力用紙にレイアウトできると判断できるため、ステップＳ９０８に処理を進める。
【０１３８】
ステップＳ９０８では、デスプーラ５０６は、次の式で起点レイアウト番号を求め、ステップＳ９１０に処理を進める。詳細には、「レイアウト番号＝前ページのレイアウト番号／Ｓ９０１で求めた現在のブロック数（切り上げ）×現在のブロック数＋１」となる。例えば、「前ページ A4P レイアウト番号（１）、現在のページ A3L でブロック数2の場合、起点レイアウト番号は（３）となる。該情報はＲＡＭ１０２に保持される。
【０１３９】
一方、ステップＳ９０６で、現在の論理ページにNupを適用しても前ページとデータの向きが同じにならないと判定した場合には、デスプーラ５０６は、同一の出力用紙にレイアウトできないと判断できるため、ステップＳ９０９に処理を進め、起点レイアウト番号を（１）とし、ステップＳ９１０に処理を進める。該情報はＲＡＭ１０２に保持される。
【０１４０】
最後に、ステップＳ９１０では、デスプーラ５０６は、ステップＳ９０７〜Ｓ９０９のいずれかで求めた、ＲＡＭ１０２に保存されている起点レイアウト番号を基準に、現在のブロック数分の領域をレイアウト番号とし、処理を終了する。例えば、起点レイアウト番号（３）、用紙サイズ A3L でブロック数が2の場合、レイアウト番号は（３）（４）となる。
【０１４１】
以上示したように、各用紙の縮小率や印刷の向きを元の原稿のままNup印刷することができる等の効果を奏する。
【０１４２】
〔他の実施形態〕
上記第１実施形態では、同系列（Ａ系／Ｂ系）の用紙を例にしてレイアウト制御する場合についえ説明したが、異系列の用紙が混在している場合でも、用紙混在の体裁を崩さずに出力用紙に収まるようにレイアウトするように構成しても良い。なお、この構成の場合、上下左右に多少の余白が生じる。
【０１４３】
また、上記第１実施形態では、全ての論理用紙に対して同じ拡縮率を適用しているが、Ａ４とＬＴＲのようにサイズの近い用紙においては、拡縮率を微調整して用紙に収まるようにレイアウトしてもよい。この構成の場合、ほぼ体裁を崩さずに出力用紙に収まるようにレイアウトすることができる。
【０１４４】
さらに、上記第１実施形態では、余白率が低いレイアウトモードを選択する構成について説明した。しかし、用紙削減のため、出力ページ数が最小になるレイアウトモードを選択するように構成してもよい。さらに、これらのモードをドライバＵＩ上で選択可能としてもよい。
【０１４５】
また、上記第１実施形態では、プリンンタドライバに設定された用紙サイズの情報（DEVMODE::dmPaperSize）によって用紙サイズを判断している。しかし、印刷データから用紙サイズを自動判別するように構成してもよい。例えば、Ａ３ランドスケープの左端にしかデータが書かれていないケースでは、Ａ４ポートレイトと判別する。
【０１４６】
さらに、どのレイアウトパターンを適用しても余白が発生していまう場合は、出力用紙サイズを可変にして余白部分を削除するモードを設けても良い。この例を図１７示す。
【０１４７】
図１７に示した例では、出力用紙サイズをＡ４→Ａ５に変更している。これにより、余白が「０」となる。
【０１４８】
また、余白が発生する場合は、ページ順を入れ替えて余白領域が最小となるように最適化するモードを設けても良い。この例を図１８示す。
【０１４９】
図１８に示した例では、論理ページ５を空いている場所に挿入して余白領域を最小化している。なお、この際、ページ番号を付与して順番が分かるようにしてもよい。
【０１５０】
なお、はがきや封筒等の特殊用紙に、本処理を適用すると期待する出力結果とならない可能性があるので、これらの用紙が指定されている場合には、本処理の適用外とするように構成しても良い。
【０１５１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１５２】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１５３】
以上、示したように、各用紙の拡縮率や印刷の向きを元の原稿のままとして、体裁のよいNup印刷を行うことができる。
【０１５４】
また、用紙系列の異なるページに関しては、他のページと異なる拡縮率で変倍して全体として体裁のよいNup印刷を行うことができる。
【０１５５】
さらに、余白が生じる場合、ページ数を変更して、余白の少ないNup印刷することができる。
【０１５６】
従って、異なるサイズや向きのページが混在する印刷データであっても、余白が少なく体裁のよいNup印刷を行うことができる等の効果を奏する。
【０１５７】
以下、図１９に示すメモリマップを参照して本発明に係る印刷制御装置（コンピュータ３０００）で読み取り可能なデータ処理プログラムの構成について説明する。
【０１５８】
図１９は、本発明に係る印刷制御装置（コンピュータ３０００）で読み取り可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０１５９】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１６０】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１６１】
本実施形態における図８，図１４，図１５に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１６２】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１６３】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１６４】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１６５】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６６】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６７】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６８】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６９】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図面の簡単な説明】
【０１７０】
【図１】本発明の実施形態の印刷システムの構成を示すブロック図である。
【図２】本発明の実施形態のホストコンピュータ３０００のソフトウェア構成を示すブロック図である。
【図３】本発明の実施形態のホストコンピュータ３０００及びプリンタ１５００が適用された印刷システムの構成を示すブロック図である。
【図４】本発明の実施形態のホストコンピュータ３０００によって実行される印刷制御処理の基本的な流れを示す図である。
【図５】本発明の実施形態のプリンタドライバ２０３の構成を詳細に示す図である。
【図６】本発明の実施形態の印刷データに関する加工設定情報の一例を示す図である。
【図７】本発明の実施形態のドライバＵＩ上のページレイアウトの一例を示す図である。
【図８】本発明の実施形態の自動レイアウト処理のフローチャートである。
【図９】本発明の実施形態の論理ページを指定した場合の出力結果の一例を示す図である。
【図１０】本発明の実施形態のＲＡＭ１０２上に記憶される情報の一例を示す図である。
【図１１】本発明の実施形態のレイアウトテンプレート一例を示す図である。
【図１２】本発明の実施形態の論理用紙サイズに適用するNupのテーブル一例を示す図である。
【図１３】本発明の実施形態のレイアウトテーブルの一例を示す図である。
【図１４】図７に示したドライバＵＩ１６００上の出力用紙サイズ１６０１でユーザが明示的に出力用紙サイズが指定されており、その用紙サイズに拡大縮小して出力する場合の一例を示した模式図である。
【図１５】本発明の実施形態の各論理用紙のレイアウトテーブルを求めるフローチャートである。
【図１６】本発明の実施形態の各論理用のレイアウト番号を求めるフローチャートである。
【図１７】出力用紙サイズを可変にして余白部分を削除するモードの一例を示した模式図である。
【図１８】ページ順を入れ替えて余白領域が最小となるように最適化するモードの一例を示した模式図である。
【図１９】本発明に係る印刷制御装置（コンピュータ３０００）で読み取り可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【図２０】従来のレイアウト印刷を説明するための図である。
【図２１】従来のレイアウト印刷を説明するための図である。
【図２２】従来のレイアウト印刷を説明するための図である。
【符号の説明】
【０１７１】
３０００    ホストコンピュータ
１５００    プリンタ
２０３    プリンタドライバ
５０２    内部スプール処理部
５０６    デスプーラ
【図１】
2008015563.tif 000003
【図２】
2008015563.tif 000004
【図３】
2008015563.tif 000005
【図４】
2008015563.tif 000006
【図５】
2008015563.tif 000007
【図６】
2008015563.tif 000008
【図７】
2008015563.tif 000009
【図８】
2008015563.tif 000010
【図９】
2008015563.tif 000011
【図１０】
2008015563.tif 000012
【図１１】
2008015563.tif 000013
【図１２】
2008015563.tif 000014
【図１３】
2008015563.tif 000015
【図１４】
2008015563.tif 000016
【図１５】
2008015563.tif 000017
【図１６】
2008015563.tif 000018
【図１７】
2008015563.tif 000019
【図１８】
2008015563.tif 000020
【図１９】
2008015563.tif 000021
【図２０】
2008015563.tif 000022
【図２１】
2008015563.tif 000023
【図２２】
2008015563.tif 000024