(57)【要約】【課題】レコード数が多い場合でも、印刷データのデータ量を抑えることができ、特別な合成処理を必要とせずに印刷処理を行えるようにすること。【解決手段】印刷データを処理する情報処理システムにおいて、レコードごとに参照するデータが異なる可変部分で参照されるデータのサイズのうち、最大のサイズでスタブデータを作成する処理（Ｓ７０２，Ｓ７０４）を行い、スタブデータを使って印刷データを作成し（Ｓ７０５）、レコードごとのデータソースを作成する処理（Ｓ７０６）を行う。印刷データ再構築部は、レコードごとに異なる印刷をするために、印刷データにおけるスタブデータを、取得した前記データソースのデータで上書きすることにより印刷データを再構築する処理を行う。【選択図】  図６
2015207062.tif 000002
【特許請求の範囲】
【請求項１】
レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する生成手段と、
前記データソースを取得して、レコードごとに異なる印刷データを再構築する再構築手段と、を備え、
前記生成手段は、前記可変部分にて参照するデータのサイズから最大のサイズを決定して当該サイズのスタブデータを作成し、前記スタブデータを用いて印刷データを生成するとともに、レコードごとに前記データソースを生成する処理を行い、
前記再構築手段は、前記印刷データのスタブデータを、取得した前記データソースのデータで上書きすることにより前記印刷データを再構築する処理を行うことを特徴とする情報処理システム。
【請求項２】
レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する生成手段と、
前記データソースを取得して、レコードごとに異なる印刷データを更新する更新手段と、を備え、
前記生成手段は、スタブデータを作成し、前記スタブデータを用いて可変部分を印刷データに付加する処理を行うとともに、印刷時に前記スタブデータに対して置換する置換データを用いてレコードごとに前記データソースを生成する処理を行い、
前記更新手段は、前記印刷データのスタブデータを、取得した前記置換データで置換することにより前記印刷データを更新する処理を行うことを特徴とする情報処理システム。
【請求項３】
前記生成手段は、レコード単位で変更のない固定部分を作成し、当該固定部分に続いて前記スタブデータを用いて可変部分を作成することを特徴とする請求項２に記載の情報処理システム。
【請求項４】
印刷データを処理する情報処理システムにて使用される情報処理装置であって、
レコードごとに参照するデータが異なる可変部分にて参照されるデータのサイズから最大のサイズを決定して当該サイズのスタブデータを作成し、前記スタブデータを用いて印刷データを生成するとともに、印刷時に参照されるデータで構成されるデータソースをレコードごとに生成する処理を行う生成手段を備えることを特徴とする情報処理装置。
【請求項５】
印刷データを処理する情報処理システムにて使用される情報処理装置であって、
レコードごとに参照するデータが異なる可変部分にて参照されるスタブデータを作成し、前記スタブデータを用いて可変部分を印刷データに付加する処理を行うとともに、印刷時に前記スタブデータに対して置換する置換データを用いてレコードごとに前記データソースを生成する処理を行う生成手段を備えることを特徴とする情報処理装置。
【請求項６】
前記生成手段は、レコード単位で変更のない固定部分を作成し、当該固定部分に続いて前記スタブデータを用いて可変部分を作成することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記データソースは、前記可変部分にて参照されるデータに関するオブジェクト情報で構成され、データの位置及びサイズの情報と、印刷に使用する実データを有することを特徴とする請求項４に記載の情報処理装置。
【請求項８】
前記置換データは、位置及びサイズの情報と、印刷に使用する実データを有することを特徴とする請求項５または６に記載の情報処理装置。
【請求項９】
前記実データはタグを含むことを特徴とする請求項７または８に記載の情報処理装置。
【請求項１０】
前記生成手段は、前記可変部分にて参照される実データで構成されるデータベースと、レコード単位で変更のない固定部分及びレコード単位で前記データベースの情報を参照する可変部分で構成されるドキュメントテンプレートを取得して前記データソースを生成する処理を行うことを特徴とする請求項４ないし９のいずれか１項に記載の情報処理装置。
【請求項１１】
印刷データを処理する情報処理システムにて使用される情報処理装置であって、
レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを取得し、前記印刷データにおけるスタブデータを、取得した前記データソースのデータで上書きすることにより前記印刷データを再構築する再構築手段を備えることを特徴とする情報処理装置。
【請求項１２】
印刷データを処理する情報処理システムにて使用される情報処理装置であって、
レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを取得し、前記印刷データにおけるスタブデータを、取得した前記データソースのデータで置換することにより前記印刷データを更新する処理を行う更新手段を備えることを特徴とする情報処理装置。
【請求項１３】
印刷データを処理する情報処理システムにて実行される情報処理方法であって、
生成手段が、レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する生成ステップと、
再構築手段が前記データソースを取得して、レコードごとに異なる印刷データを再構築する再構築ステップと、を有し、
前記生成ステップにて前記生成手段は、前記可変部分にて参照するデータのサイズから最大のサイズを決定して当該サイズのスタブデータを作成し、前記スタブデータを用いて印刷データを生成するとともに、レコードごとに前記データソースを生成する処理を行い、
前記再構築ステップにて前記再構築手段は、前記印刷データのスタブデータを、取得した前記データソースのデータで上書きすることにより前記印刷データを再構築する処理を行うことを特徴とする情報処理方法。
【請求項１４】
印刷データを処理する情報処理システムにて実行される情報処理方法であって、
生成手段が、レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する生成ステップと、
更新手段が前記データソースを取得して、レコードごとに異なる印刷データを更新する更新ステップと、を有し、
前記生成ステップにて前記生成手段は、スタブデータを作成し、前記スタブデータを用いて可変部分を印刷データに付加する処理を行うとともに、印刷時に前記スタブデータに対して置換する置換データを用いてレコードごとに前記データソースを生成する処理を行い、
前記更新ステップにて前記更新手段は、前記印刷データのスタブデータを、取得した前記置換データで置換することにより前記印刷データを更新する処理を行うことを特徴とする情報処理方法。
【請求項１５】
印刷データを処理する情報処理システムにてコンピュータにより実行されるプログラムであって、
前記コンピュータを、
レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する手段として機能させる生成ステップと、
前記データソースを取得して、レコードごとに異なる印刷データを再構築する手段として機能させる再構築ステップと、を有し、
前記生成ステップにて前記コンピュータが、前記可変部分にて参照するデータのサイズから最大のサイズを決定して当該サイズのスタブデータを作成し、前記スタブデータを用いて印刷データを生成するとともに、レコードごとに前記データソースを生成する処理を行い、
前記再構築ステップにて前記コンピュータが、前記印刷データのスタブデータを、取得した前記データソースのデータで上書きすることにより前記印刷データを再構築する処理を行うことを特徴とするプログラム。
【請求項１６】
印刷データを処理する情報処理システムにてコンピュータにより実行されるプログラムであって、
前記コンピュータを、
レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する手段として機能させる生成ステップと、
前記データソースを取得して、レコードごとに異なる印刷データを更新する手段として機能させる更新ステップと、を有し、
前記生成ステップにて前記コンピュータが、スタブデータを作成し、前記スタブデータを用いて可変部分を印刷データに付加する処理を行うとともに、印刷時に前記スタブデータに対して置換する置換データを用いてレコードごとに前記データソースを生成する処理を行い、
前記更新ステップにて前記コンピュータが、前記印刷データのスタブデータを、取得した前記置換データで置換することにより前記印刷データを更新する処理を行うことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データの生成、解析及び再構築技術に関する。
【背景技術】
【０００２】
近年、デジタルプリンタの高速化と高画質化に伴い、プリント・オン・デマンド（Ｐｒｉｎｔ  Ｏｎ  Ｄｅｍａｎｄ；以下、ＰＯＤと記す）市場が拡大している。ＰＯＤとはデジタルプリンタを使って電子データのプリントを行うサービスのことであり、電子データを用いる特性を活かして、バリアブルデータ印刷（Ｖａｒｉａｂｌｅ  Ｄａｔａ  Ｐｒｉｎｔｉｎｇ；以下、ＶＤＰと記す）が行われる。ＶＤＰの文書では、固定部分と可変部分を分け、可変部分のデータはＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）ファイル等のデータソースから供給される。データソースの列（カラム）をテンプレート文書の可変部分と関連付け、データソースの行（レコード）ごとに適用することで、異なる内容の印刷が行われる。顧客ごとに一枚ずつ内容を変えて印刷できるため、顧客に適した印刷物を作成できるという利点がある。ここで、１つのＶＤＰに必要なページレイアウトやデータソース等の論理的な情報の集まりを「ＶＤＰ文書」と呼び、ＶＤＰ文書に関する物理的な電子データを「ＶＤＰデータ」と呼ぶ。ＶＤＰデータは、専用のページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ；以下、ＰＤＬと記す）を用いる場合が多い。ＶＤＰ専用のＰＤＬは、ＶＤＰ文書の固定部分のオブジェクト（以下、固定オブジェクトという）を予め定義しておき、固定オブジェクトを後から参照することを示す記述が可能である。ＰＤＬの印刷処理の際、個々の固定オブジェクトの解釈処理結果を保持しておき、それが参照される度に解釈処理結果がコピーされるので、ＶＤＰデータ全体の処理が速くなる。つまり、ＶＤＰ専用のＰＤＬは、ＶＤＰデータを解析処理するアプリケーションにとって処理効率の良いＶＤＰ文書を表現する能力を有する。
【０００３】
ＶＤＰ専用のＰＤＬとしてＰＤＦ／ＶＴがある。ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）は印刷データとして広く普及しており、ＰＤＦをベースとしたＰＤＬであるため、ＰＤＦを印刷データとして扱うワークフローに対して親和性が高い。しかし、ＰＤＦ／ＶＴは多数のページ情報を持つ必要があるため、データ量が大きくなってしまうという問題がある。一般的に、ＶＤＰではデータソースのレコード数が多いので、ページ情報の数が多くなる結果、全体のデータ量が非常に大きくなる。ページ情報とは、そのページに配置される描画データや、そのページの属性情報である。この課題に対して、ＶＤＰデータを印刷データとデータソースに分け、印刷時に印刷データとデータソースを合成する方法が開示されている（特許文献１）。印刷データを１レコード分のページ情報とレコードごとに動的に変化する可変部分の構成情報で構成し、印刷時に可変部分の構成情報をデータソースと合成することにより、データ量を１レコード分に削減できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１３４７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の方法では、可変部分の構成情報をデータソースで変換する特別な合成処理が必要となる。ＰＤＦ／ＶＴのようなＶＤＰデータフォーマットでは、レコード分の展開されたページオブジェクトを持つため、レコード数が多くなるとデータ量が増大してしまう。データ量を１レコード分に削減した印刷データをレコードごとに動的に変化させて印刷するには、特別な合成処理が必要である。
本発明の目的は、レコード数が多い場合でも、印刷データのデータ量を抑えることができ、特別な合成処理を必要とせずに印刷処理を行えるようにすることである。
【課題を解決するための手段】
【０００６】
本発明の第１の側面に係る情報処理システムは、レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する生成手段と、前記データソースを取得して、レコードごとに異なる印刷データを再構築する再構築手段と、を備える。前記生成手段は、前記可変部分にて参照するデータのサイズから最大のサイズを決定して当該サイズのスタブデータを作成し、前記スタブデータを用いて印刷データを生成するとともに、レコードごとに前記データソースを生成する処理を行う。前記再構築手段は、前記印刷データのスタブデータを、取得した前記データソースのデータで上書きすることにより前記印刷データを再構築する処理を行う。
【０００７】
本発明の第２の側面に係る情報処理システムは、レコードごとに参照するデータが異なる可変部分に対して、印刷時に参照されるデータで構成されるデータソースを生成する生成手段と、前記データソースを取得して、レコードごとに異なる印刷データを更新する更新手段と、を備える。前記生成手段は、前記可変部分にて参照するスタブデータを作成し、前記スタブデータを用いて可変部分を印刷データに付加する処理を行うとともに、印刷時に前記スタブデータに対して置換する置換データを用いてレコードごとに前記データソースを生成する処理を行う。前記更新手段は、前記印刷データのスタブデータを、取得した前記置換データで置換することにより前記印刷データを更新する処理を行う。
【発明の効果】
【０００８】
本発明によれば、レコード数が多い場合でも、印刷データのデータ量を抑えることができ、特別な合成処理を必要とせずに印刷処理が可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る情報処理システム及び情報処理装置の構成図である。
【図２】本発明の実施形態を説明するデータフロー図である。
【図３】データベースのイメージ図である。
【図４】ドキュメントテンプレート及び印刷データのイメージ図である。
【図５】可変部分を決定するＵＩ画面のイメージ図である。
【図６】印刷データ及びデータソースの生成処理例を示すフローチャートである。
【図７】本発明の第１実施形態における印刷データのイメージ図である。
【図８】テキスト用スタブデータを出力した状態の印刷データのイメージ図である。
【図９】第１実施形態におけるデータソースのイメージ図である。
【図１０】第１実施形態における処理を説明するデータフロー図である。
【図１１】印刷データの再構築処理を説明するフローチャートである。
【図１２】再構築処理を行ったときの印刷データのイメージ図である。
【図１３】本発明の第２実施形態の処理例を示すフローチャートである。
【図１４】第２実施形態における印刷データのイメージ図である。
【図１５】第２実施形態におけるデータソースのイメージ図である。
【図１６】第２実施形態の処理を説明するデータフロー図である。
【図１７】第２実施形態における印刷データの更新処理を示すフローチャートである。
【図１８】更新処理を行ったときの印刷データのイメージ図である。
【図１９】ＰＤＦの構造を説明するイメージ図である。
【発明を実施するための形態】
【００１０】
以下、本発明の各実施形態について添付図面を参照して説明する。
図１（Ａ）は、本発明の実施形態に係る情報処理システムに使用する情報処理装置を示す模式図である。情報処理装置は、サーバコンピュータ（以下、サーバと略称する）１０２、クライアントコンピュータ（以下、クライアントと略称する）１０３、及びプリンタ装置１０４であり、それらはネットワーク１０１を介して接続されており、互いに情報を送受し合う。サーバ１０２は、ネットワーク１０１に接続された各種装置とのデータの送受信を管理する。クライアント１０３は印刷データを編集可能であり、ネットワーク１０１を介して印刷データをプリンタ装置１０４やサーバ１０２に送信する。プリンタ装置１０４は印刷データを受信すると、必要に応じてサーバ１０２と通信して印刷動作を開始する。クライアント１０３ではユーザがアプリケーションを起動してデータ作成や編集を行い、所定形式のデータ、例えばＰＤＦデータを生成可能である。図１９を参照して、ＰＤＦの構造を説明する。
【００１１】
ＰＤＦは、ヘッダ部２００１、ボディ部２００２、相互参照表２００３、トレイラ２００４から構成される。ボディ部２００２は、ページを構成するリソースについての参照及び定義情報等から構成される。定義情報は、オブジェクト番号で始まる開始タグと終了タグから構成され、例えばページに関する定義情報２００５の場合、「７ ０ ｏｂｊ」から始まり、「ｅｎｄｏｂｊ」までの範囲となる。定義情報２００５は、オブジェクト番号で始まる参照情報について、例えば１番目の参照情報２００６として「２３ ０ Ｒ」、２番目の参照情報２００７として「２４ ０ Ｒ」、３番目の参照情報２００８として「２５ ０ Ｒ」を持つ。これらは、オブジェクト番号による定義を別にもっており、ページ内で参照していることを示している。例えば、１番目の参照情報２００６は、オブジェクト番号２３への参照情報であり、「２３ ０ ｏｂｊ」の形式で定義されているオブジェクト番号２３のリソース２００９を参照する。オブジェクト番号２３のリソース２００９は、「２３ ０ ｏｂｊ」タグから「ｅｎｄｏｂｊ」タグまでの範囲で実データを保持し、Ｌｅｎｇｔｈタグはデータサイズが１００バイトであることを示している。また、実データには、ＪＰＧ等の画像データや文字列で構成されるテキストデータが存在する。各リソースは、Ｌｅｎｇｔｈタグ以外にもＴｙｐｅタグやＳｕｂＴｙｐｅタグ等を使って、リソースの種類を規定している。２番目の参照情報２００７や３番目の参照情報２００８も同様で、それぞれオブジェクト番号２４のリソース２０１０、オブジェクト番号２５のリソース２０１１を参照することを示す。
【００１２】
相互参照表２００３は、各リソースの定義がファイル内のどの位置に存在するかの位置情報を保持している。相互参照表２００３は、「ｎｎｎｎｎｎｎｎｎｎ ｇｇｇｇｇ ｎ」という形式の１０桁の数字から開始されるエントリで構成される。さらに、各エントリは、オブジェクト番号０番から順に、オブジェクト番号Ｘ番のリソースがどの位置で定義されているかが分かる仕組みとなっている。例えば、オブジェクト番号１番のエントリ２０１２では「００００００００１６」であり、オブジェクト番号２３番のエントリ２０１３では「０００００００１８３」である。よって、ファイルの先頭から１６バイトの位置にオブジェクト番号１番の定義が存在することや、ファイルの先頭から１８３バイトの位置にオブジェクト番号２３番の定義情報２０１４が存在することが判る。
ＰＤＦでは、オブジェクト番号を用いてリソースを定義／参照し、定義されている位置を相互参照表２００３によって管理している。そのため、ＰＤＦデータを編集する場合には、オブジェクトの定義／参照の関係が崩れないようにすることや、相互参照表２００３によって管理されている位置情報に配慮する必要がある。
【００１３】
次に、図１（Ｂ）のブロック図を参照して、サーバ１０２、クライアント１０３、及びプリンタ装置１０４に共通する構成を説明する。
制御部２０１はＣＰＵ（中央演算処理装置）を備え、表示部２０２や入力部２０３等を制御する。表示部２０２は、ＣＲＴ（陰極線管）や液晶モニタ等の表示デバイスを備える。入力部２０３は、キーボードや、マウス等のポインティングデバイスを用いたユーザ操作信号を受け付け、制御部２０１に通知する。ＲＡＭ（ランダム・アクセス・メモリ）２０４は不揮発性メモリである。ＲＡＭ２０４は、ＲＯＭ（リード・オンリ・メモリ）２０５からロードされた各種プログラムコードや、データファイルを記憶する。ＲＯＭ２０５は、制御部２０１のＣＰＵが実行するコンピュータプログラムを記憶する。外部記憶装置２０６は、例えばハードディスクと、ハードディスクへのデータの読み書きを行う駆動部で構成される。ネットワークを介して別のハードディスクに保存されているデータのやり取りを行うことも可能であり、外部記憶装置２０６には印刷に必要なデータが格納されている。
【００１４】
本実施形態では、プログラムコードがＲＡＭ２０４上にロードされるものとして説明するが、ＲＯＭ２０５から読み出したプログラムコードをＣＰＵが直接実行することも可能である。また、処理対象となる各データはＲＡＭ２０４上にあるものとして説明するが、これらはすべて、外部記憶装置２０６上に配置することも可能であり、必要に応じて外部記憶装置２０６からＲＡＭ２０４上にロードして使用することもできる。あるいは、制御部２０１のキャッシュメモリ上に配置することも同様に可能である。画像形成装置としてのプリンタ装置１０４は図１（Ｂ）に示す構成部の他、印刷処理を行うプリンタエンジンや給排紙ユニット等を備えるが、それらは既知として説明を省略する。
【００１５】
図２は、本実施形態で扱うプログラムコードとデータとの関係を示すデータフロー図である。クライアント１０３は、このデータフロー図に従って動作する。
ＵＩ（ユーザ・インタフェイス）制御部３０１は、図１（Ｂ）の入力部２０３を介して入力されるデータを扱い、ユーザはＵＩ制御部３０１により印刷データ生成部３０２へ指示可能である。また、ＵＩ制御部３０１は、ドキュメントテンプレート３０３及びデータベース（以下、ＤＢと略記する）３０４を図１（Ｂ）の外部記憶装置２０６等からロードして、図１（Ｂ）の表示部２０２へ表示させる制御を行う。ドキュメントテンプレート３０３は、印刷データ３０５等のＰＤＬの作成に必要な情報であり、レコード単位で変更のない固定部分と、レコード単位でＤＢ３０４の情報を参照する可変部分から構成されている。ＤＢ３０４は、ドキュメントテンプレート３０３の可変部分で参照される実データで構成される。印刷データ生成部３０２は、ドキュメントテンプレート３０３とＤＢ３０４からのデータを入力として、プリンタ装置１０４の入力となる印刷データ３０５及びデータソース３０６を生成する。印刷データ３０５はＰＤＦ等のＰＤＬで構成される。データソース３０６は、ドキュメントテンプレート３０３の可変部分に対して、印刷時に実際に参照される実データで構成される。
【００１６】
図３はＤＢ３０４の構造を表形式で例示する。ＤＢ３０４は、ＩＤ（識別情報）、種類（テキストやイメージ等）、サイズ、データから構成される。データは、実際にはファイル名やファイルパスで表現される。また、データはＤＢ３０４に記載のファイル名に基づいてファイルから直接読み出すことで取得できるものとする。例えば、ＩＤ００１の場合、２５バイトの“Ａ．ｔｘｔ”からテキストデータ４０１が取得され、ＩＤ００２の場合、９６００バイトの“Ａ．ｊｐｇ”からイメージデータ４０２が取得される。ＩＤ００３以降についても同様である。
【００１７】
図４（Ａ）は、ドキュメントテンプレート３０３をＵＩ制御部３０１によって表示部２０２の画面に表示させた場合のイメージを例示する模式図である。ドキュメントテンプレート３０３は、固定部分５０１、イメージ用の可変部分５０２、及びテキスト用の可変部分５０３から構成されている。固定部分５０１については、使用するデータが固定であるため、印刷時のイメージを表示している。イメージ用の可変部分５０２、及びテキスト用の可変部分５０３については、レコード単位で変わるため、領域だけを表示している。
【００１８】
図４（Ｂ）は、印刷データ３０５をＵＩ制御部３０１によって表示部２０２の画面に表示させた場合のイメージを例示した模式図である。印刷データ３０５は、イメージ用の可変部分５０２にイメージ用のスタブデータ５０４が適用され、テキスト用の可変部分５０３にテキスト用のスタブデータ５０５が適用された場合を示す。スタブデータとは、レコードごとに異なる実データを参照する可変部分に対して、印刷前に用意しておく仮データのことである。印刷データ３０５については、印刷前には、レコードごとに可変となる部分に対して、イメージ用のスタブデータ５０４、テキスト用のスタブデータ５０５を使用して、置換対象のデータであることを示す。印刷時における印刷データ３０５は、可変部分に対して、スタブデータの代わりにレコードごとに異なる実データに置換されるので、レコードごとに異なる印刷結果が提供されることになる。
【００１９】
図５（Ａ）及び（Ｂ）は、ドキュメントテンプレート３０３とＤＢ３０４を入力として、印刷データ３０５とデータソース３０６を生成する処理に関するＵＩ制御部３０１のイメージ図である。図５（Ａ）の編集画面６０１では、ユーザがドキュメントテンプレート３０３をプレビューしながら、可変部分で参照する実データをＤＢ３０４から選択可能である。イメージ選択用のテキストエディタ部６０２は、画像ファイル“Ａ．ｊｐｇ”を選択している様子を示している。表示領域６０３では、実際に選択されたデータがどのように印刷されるかを確認するために画像がプレビュー表示される。同様に、テキスト選択用のテキストエディタ部６０４は、テキストファイル“Ａ．ｔｘｔ”を選択している様子を示す。表示領域６０５では、実際に選択されたデータがどのように印刷されるかを確認するために文字列がプレビュー表示される。このように、ドキュメントテンプレート３０３の可変部分については、編集画面６０１を使って、印刷時にどのデータを使用して印刷するかが事前に決定される。
【００２０】
図５（Ｂ）の出力画面６０６では、編集画面６０１においてユーザ操作にしたがって編集された内容が、最終的に印刷データ３０５とデータソース３０６として出力される。出力リスト６０７は、編集画面６０１を使って編集された結果をリスト表示しており、４つのレコードが作成されたことを示している。例えば、第１のレコード（Ｎｏ１）では、可変部分に“Ａ．ｊｐｇ”と“Ａ．ｔｘｔ”を使用し、第２のレコード（Ｎｏ２）では、可変部分に“Ｂ．ｊｐｇ”と“Ｂ．ｔｘｔ”を使用する。このような出力リスト６０７が作成された状態で、ユーザが出力ボタン６０８を操作すると、印刷データ３０５とデータソース３０６の生成処理が開始する。
次に各実施形態について説明する。なお、以降に説明するフローチャートによる処理手順は例示であり、本発明を実施する上で各種処理の組み合わせ、または複数の処理の併合もしくは処理の細分化が可能である。処理手順については、個々に切り出してひとつの機能要素として単体として機能させることや、その他の処理と組み合わせて実行することも可能である。
【００２１】
［第１実施形態］
以下、本発明の第１実施形態について図面を参照して説明する。
図６は、印刷データ生成部３０２が印刷データ３０５及びデータソース３０６を生成する処理の流れを例示するフローチャートである。以下、印刷データ３０５としてＰＤＦファイルを例に説明する。ユーザが図５（Ｂ）の出力ボタン６０８を操作すると、Ｓ７０１に進む。
ＵＩ制御部３０１が印刷データ生成部３０２に処理開始を指示すると、印刷データ生成部３０２は、使用する全てのイメージデータについて、最大のデータサイズを取得する処理を行う（Ｓ７０１）。図５（Ｂ）に示す出力リスト６０７の場合、４レコードが対象となり、各画像ファイルのデータサイズが取得される。使用するイメージデータは、“Ａ．ｊｐｇ”，“Ｂ．ｊｐｇ”，“Ｃ．ｊｐｇ”であり、図３のサイズ欄を参照して印刷データ生成部３０２は、それらの最大データサイズとして１２８００バイトを得る（“Ｂ．ｊｐｇ”参照）。
【００２２】
次に印刷データ生成部３０２は、Ｓ７０１で取得した最大のデータサイズで、印刷データ３０５に予め用意しておくイメージ用のスタブデータを作成する処理を行う（Ｓ７０２）。図５（Ｂ）に示す出力リスト６０７の場合、最大データサイズ１２８００バイトで、イメージ用のスタブデータが作成される。イメージ用のスタブデータについては、予め画像データが用意されており、必要なデータサイズに応じて圧縮されてデータが生成される。なお、印刷データ生成部３０２は、イメージデータのサイズを微調整する目的で、ファイルフォーマットに違反しない範囲でデータを付加する仕組みを持つ。例えば、ＪＰＧファイルの場合には、ＥＸＩＦ（Exchangeable  Image  File  Format）タグのコメント部分のサイズを変更することで、イメージ用のスタブデータのサイズが調整される。
【００２３】
印刷データ生成部３０２は、使用する全てのテキストデータについて、最大のデータサイズを取得する処理を行う（Ｓ７０３）。図５（Ｂ）に示す出力リスト６０７の場合、４レコードが対象となり、各テキストファイルのデータサイズが取得される。使用するテキストファイルは、“Ａ．ｔｘｔ”，“Ｂ．ｔｘｔ”，“Ｃ．ｔｘｔ”であり、図３のサイズ欄を参照して印刷データ生成部３０２は、それらの最大のデータサイズとして１００バイトを得る（“Ｂ．ｔｘｔ”参照）。そして、印刷データ生成部３０２は、Ｓ７０３で取得した最大のデータサイズで、印刷データ３０５に予め用意しておくテキスト用のスタブデータを作成する処理を行う（Ｓ７０４）。図５（Ｂ）に示す出力リスト６０７の場合、最大データサイズ１００バイトでテキスト用のスタブデータが作成される。テキスト用のスタブデータの生成においては、任意の長さで作成する目的で、１バイトの文字をデータサイズの分だけ連続して生成すればよい。例えば、１バイトの文字として「ａ」を選択し、１０バイトが必要な場合には、「ａ」を１０個続けて、「ａａａａａａａａａａ」とすることでテキスト用のスタブデータが得られる。
【００２４】
印刷データ生成部３０２は、ドキュメントテンプレート３０３と、Ｓ７０２で作成したイメージ用のスタブデータと、Ｓ７０４で作成したテキスト用のスタブデータを用いて、印刷データ３０５の作成処理を行う（Ｓ７０５）。印刷データ生成部３０２は、まず、相互参照表２００３（図１９参照）についてファイルの先頭からの位置を取得するため、ヘッダ部２００１、固定部分、可変部分の総サイズを取得する。ヘッダ部２００１のサイズは、出力ごとに変更の必要がないので、予め用意されている固定サイズが取得される。固定部分については、ドキュメントテンプレート３０３が決まると、使用するデータのサイズを取得することが可能である。可変部分については、使用するスタブデータのサイズが決まっているため、同様にそのサイズを取得することが可能である。取得したサイズを全て加算することで、最終的に出力する相互参照表２００３の位置が決定される。印刷データ生成部３０２は、ヘッダ部２００１、固定部分、可変部分に加え、相互参照表２００３を出力する。
【００２５】
図７（Ａ）及び（Ｂ）、図８は、Ｓ７０５にて出力された印刷データ３０５の一例を示す。図４（Ａ）のドキュメントテンプレート３０３に対して、図５（Ｂ）の出力リスト６０７を例にした場合のＰＤＦファイルを示している。
まず、ドキュメントテンプレート３０３の固定部分５０１が出力された状態での印刷データ３０５について説明する。図７（Ａ）は、固定部分５０１の印刷データ３０５における出力位置が確定し、相互参照表８０１によって、どの位置に印刷データ３０５の固定部分８０２が存在するかを示している。相互参照表８０１のエントリには「０００００００１８３」と記載されているため、参照位置８０３に示すように、ファイル先頭から１８３バイトの位置に印刷データ３０５の固定部分８０２が存在する。また、相互参照表８０１については、図６のＳ７０５において、ヘッダ部分、固定部分、可変部分の総サイズが取得されるので、ファイル先頭からの出力位置が事前に確定している。
【００２６】
次に、図６のＳ７０２で作成したイメージ用のスタブデータを出力した状態の印刷データ３０５について説明する。図７（Ｂ）は、Ｓ７０２で作成されたイメージ用のスタブデータ８０５の出力位置が確定し、相互参照表８０４において、どの位置にイメージ用のスタブデータが存在するかを示している。相互参照表８０４のエントリには「００００００１５０３」と記載されているため、参照位置８０６に示すように、ファイル先頭から１５０３バイトの位置にイメージ用のスタブデータ８０５が存在する。また、イメージ用のスタブデータ８０５のサイズについては、Ｌｅｎｇｔｈタグ８０７を使って１２８００が出力される。印刷データ３０５の出力に際して、イメージデータを扱うために必要なタグについても同様に出力される。イメージデータを扱うために必要なタグには、幅や高さ、フォーマット、インデント等を各種指定できるが、これ以外にも設定可能なタグは全て対象である。
【００２７】
図８を参照して、さらに図６のＳ７０４で作成されたテキスト用のスタブデータを出力した状態の印刷データ３０５について説明する。図８は、Ｓ７０４で作成されたテキスト用のスタブデータ８０９の出力位置が確定し、相互参照表８０８において、どの位置にテキスト用のスタブデータが存在するかを示している。相互参照表８０８のエントリには「０００００１５５５５」と記載されているため、参照位置８１０に示すように、ファイル先頭から１５５５５バイトの位置にテキスト用のスタブデータ８０９が存在する。また、テキスト用のスタブデータ８０９のサイズについては、Ｌｅｎｇｔｈタグ８１１を使って１００が出力される。印刷データ３０５の出力に際して、テキストデータを扱うために必要なタグも同様に出力されるが説明を省略する。
【００２８】
以上のように、イメージ用のスタブデータ及びテキスト用のスタブデータを用いて印刷データ３０５が作成される。一例として、固定部分、可変部分の順で印刷データ３０５を作成する処理を説明したが、印刷データ３０５のフォーマットに従っている限りにおいて、どの順番で作成してもよい。
図６のＳ７０６で印刷データ生成部３０２は、イメージ用の可変部分５０２、及びテキスト用の可変部分５０３から参照されるデータをＤＢ３０４から取得して、データソース３０６を作成する処理を行い、図６のシーケンスを終了する。
【００２９】
図９（Ａ）は、図４（Ａ）のドキュメントテンプレート３０３に対して、図５（Ｂ）の出力リスト６０７が選択された場合に、図６のＳ７０６で出力されるデータソース３０６の一例を表形式で示す。データソース３０６は、ドキュメントテンプレート３０３の可変部分で参照される実データに関する複数のオブジェクト情報で構成される。データソース３０６における各オブジェクト情報は、印刷データの位置９０１、データサイズ９０２、実データ９０３から構成される。実データ９０３をファイル名で表記しているが、ファイル名に基づいてファイルから直接読み出すことで実データ９０３を取得できるものとする。つまり、ファイル名とファイル自体を区別せずに説明する。例えば、図５（Ｂ）の出力リスト６０７の場合、データソース３０６は、イメージ用の可変部分５０２、及びテキスト用の可変部分５０３を有する。図９（Ａ）にてＩＤ００１のオブジェクト情報９０４は、その印刷データの位置９０１がファイル先頭から１５２０バイト目の位置であることを示している。
印刷データの位置９０１は、図６のＳ７０５で作成した印刷データ３０５の可変部分に対して、オブジェクト番号で始まる開始タグの次のタグについて、ファイルの先頭からの位置で求められる。図７（Ｂ）の場合、印刷データの位置９０１は、可変部分のオブジェクト番号の開始タグ「２４ ０ ｏｂｊ」の次である、Ｌｅｎｇｔｈタグ８０７の位置（ファイル先頭からの位置）となる。例えばＬｅｎｇｔｈタグ８０７がファイル先頭から１５２０バイト目の位置であるとすると、印刷データの位置９０１も同じく１５２０となる。図８に示す可変部分であるオブジェクト番号の開始タグ「２５ ０ ｏｂｊ」の場合も同様である。この場合、印刷データの位置９０１は、Ｌｅｎｇｔｈタグ８１１の位置（ファイル先頭からの位置）となる。例えば、Ｌｅｎｇｔｈタグ８１１がファイル先頭から１５６００バイトの位置とすると、印刷データの位置９０１も同じく１５６００となる。
【００３０】
図９（Ａ）に示すＩＤ００１のオブジェクト情報９０４では、データサイズ９０２が９６３０バイトである実データ９０３として、１つの“Ａ．ｊｐｇ．ｄａｔ”を有する。そして、ＩＤ００１のオブジェクト情報９０４では、データサイズ９０２が５５バイトである実データ９０３として“Ａ．ｔｘｔ．ｄａｔ”をもう１つ持つ。“Ａ．ｊｐｇ．ｄａｔ”は、イメージデータそのものに加えて、データサイズ９０２を表現したＬｅｎｇｔｈタグとデータの最後を示すタグを含む。Ｌｅｎｇｔｈタグは、例えば“＜＜ ／Ｌｅｎｇｔｈ サイズ ＞＞”で構成され、実際のイメージデータの長さを記載し、このタグにイメージデータが続く。データの最後を示すタグは“ｅｎｄｏｂｊ”で表現され、このｅｎｄｏｂｊタグまでの範囲内のデータが有効データであることを示す。そのため、データソース３０６におけるデータサイズ９０２は、イメージデータのサイズに加えて、Ｌｅｎｇｔｈタグのサイズ及びデータの最後を示すタグを加えた値となる。例えば、Ｌｅｎｇｔｈタグとデータの最後を示すタグの合計のデータサイズが３０バイトの場合、“Ａ．ｊｐｇ．ｄａｔ”のデータサイズ９０２は、イメージデータ自体のサイズ９６００バイトに３０バイトが加算されて９６３０バイトになる。同様にして、“Ａ．ｔｘｔ．ｄａｔ”では、Ｌｅｎｇｔｈタグが先頭に付加され、これに実際のテキストデータが続き、データの最後を示すｅｎｄｏｂｊタグが最後に付加される。ＩＤ００２からＩＤ００４の各オブジェクト情報９０５から９０７についても、オブジェクト情報９０４の場合と同様であるため、それらの説明を省略する。
【００３１】
図９（Ｂ）は、データソース３０６におけるＩＤ００１のオブジェクト情報９０４の“Ａ．ｊｐｇ．ｄａｔ”のイメージ図である。“Ａ．ｊｐｇ．ｄａｔ”は、Ｌｅｎｇｔｈタグ９０８、実際のイメージデータ９０９、及びデータの最後を示すｅｎｄｏｂｊタグ９１０から構成される。図９（Ｃ）は、データソース３０６のＩＤ００１のオブジェクト情報９０４の“Ａ．ｔｘｔ．ｄａｔ”のイメージ図である。“Ａ．ｔｘｔ．ｄａｔ”は、Ｌｅｎｇｔｈタグ９１１、実際のテキストデータ９１２、及びデータの最後を示すｅｎｄｏｂｊタグ９１３から構成される。
【００３２】
次に、クライアント１０３によって作成された印刷データ３０５とデータソース３０６に対して、サーバ１０２及びプリンタ装置１０４が実行する処理を説明する。以下では、説明を簡単にするため、クライアント１０３で作成されたデータソース３０６をサーバ１０２が保存し、この保存データが必要に応じてプリンタ装置１０４から参照されるものとする。またクライアント１０３で作成された印刷データ３０５はプリンタ装置１０４に直接送信され、プリンタ装置１０４内で適切なデータフォーマットに変換処理（ＲＩＰ）されるものとする。
【００３３】
図１０は、本実施形態で扱うプログラムコードとデータがどのような関係にあるかを示すデータフロー図である。プリンタ装置１０４は、図１０のデータフロー図に従って動作する。ジョブ制御部１００１は印刷データ受信部１００３、印刷データ再構築部１００５、データソース受信部１００４を制御し、印刷データ格納部１００２は受信済みの印刷データを格納する。
【００３４】
ジョブ制御部１００１は、図１（Ｂ）に示す入力部２０３を介して入力されるデータを扱い、印刷データ格納部１００２に印刷データ３０５が受信済みであるかどうかを判断する。さらに、ジョブ制御部１００１は、ユーザに対して、印刷を開始するかどうかのインタフェイスを提供し、受信済みの印刷データ３０５の印刷を開始するかどうかを決定する。印刷データ受信部１００３は、クライアント１０３から送られてくる印刷データ３０５を受信し、受信した印刷データを印刷データ格納部１００２に保存する。データソース受信部１００４は、サーバ１０２からデータソース３０６を取得する処理を行う。印刷データ再構築部１００５は、印刷データ３０５とデータソース３０６から印刷データ３０５の再構築処理を行う。
【００３５】
図１１を参照して、印刷データ再構築部１００５による印刷データ３０５の再構築処理例について説明する。
ユーザ操作によって印刷の開始が指示されると、ジョブ制御部１００１は、印刷対象の印刷データ３０５を全て受信したか否かを判断する（Ｓ１１０１）。但し、Ｓ１１０１で受信する印刷データ３０５は、図６のフローチャートでの処理により生成されており、可変部分に適用されているスタブデータをレコードごとの実データに変更する処理が必要である。印刷データ３０５の受信が完了していない場合（Ｓ１１０１でＮＯ）、ジョブ制御部１００１は、印刷データ３０５を受信するまで待ち状態となる。一方、印刷データ３０５の受信が完了すると（Ｓ１１０１でＹＥＳ）、Ｓ１１０２に処理を進める。Ｓ１１０２でジョブ制御部１００１は、印刷データ３０５で使用するデータソースが確定したかどうかを判断する。ここでは、データソース３０６においてどのレコードが対象なのかが確定するまで待つ処理が行われる。印刷データ３０５はレコード単位で再構築されるので、どのレコードが印刷対象なのかを待つ必要がある。例えば、データソース３０６においてＮｏ１からＮｏ４の４レコードが確定すると、ジョブ制御部１００１は処理を進め、Ｓ１１０３からＳ１１０６を４回繰り返して実行することになる。データソース３０６が未確定である場合（Ｓ１１０２でＮＯ）、ジョブ制御部１００１はデータソース３０６が確定するまで待ち状態となる。
【００３６】
Ｓ１１０２からＳ１１０３に進むと（Ｓ１１０２でＹＥＳ）、ジョブ制御部１００１は、データソース受信部１００４に対して、サーバ１０２からデータソース３０６を取得するように指示する（Ｓ１１０３）。また、ジョブ制御部１００１は、印刷データ再構築部１００５に対して、取得したデータソース３０６のデータを用いて印刷データ３０５を再構築するように指示する。印刷データ再構築部１００５は、データソース３０６から取得したイメージデータまたはテキストデータで上書きするべきオフセット位置を取得する処理を行う（Ｓ１１０４）。例えば、図９（Ａ）のＩＤ００１のオブジェクト情報９０４のイメージデータの場合、オフセット位置は１５２０である。同様に、テキストデータの場合、オフセット位置は１５６００である。印刷データ再構築部１００５は、印刷データ３０５に対して、イメージデータまたはテキストデータをＳ１１０４で取得したオフセット位置から上書きする処理を行う（Ｓ１１０５）。
【００３７】
図１２は、図９（Ａ）のＩＤ００１のオブジェクト情報９０４に関して、図８の状態の印刷データ３０５に対して上書き処理を行った時の印刷データ３０５のイメージ図である。再構築後の印刷データ３０５では、イメージ用のスタブデータ１２０１に対して、データソース３０６から取得したイメージデータ１２０２により上書きされている。同様に、再構築後の印刷データ３０５では、テキスト用のスタブデータ１２０３に対して、データソース３０６から取得したテキストデータ１２０４により上書きされている。プリンタ装置１０４に投入される印刷データ３０５において、図６で説明したスタブデータはデータソース３０６より取得した実データでの上書きにより書き換えられる。この場合、スタブデータは、上書きされる実データの中で最も大きいサイズのデータとして作成される。よって再構築後の印刷データ３０５は、上書き後において相互参照表１２０５も含めた構成は崩れないので、ファイル内の整合性が確保される。
【００３８】
図１１のＳ１１０６で印刷データ再構築部１００５は、データソース３０６に対して全てのイメージデータまたはテキストデータの上書きが完了したかどうかを判断する処理を行う。全ての上書きが完了していない場合、Ｓ１１０３へ処理を戻し、Ｓ１１０３からＳ１１０５のステップが繰り返される。一方、Ｓ１１０６で全ての上書きが完了した場合、図１１のシーケンスを終了する。
【００３９】
図４（Ｃ）は印刷時のイメージ図であり、印刷データ３０５に対して図１１の処理を適用して得られる再構築後の印刷データ３０５を例示する。ここでは、図９（Ａ）のデータソース３０６の中でＩＤ００１のオブジェクト情報９０４が適用された場合を例示する。プリンタ装置１０４に投入された印刷データ３０５にて、各スタブデータは、データソース３０６から取得したイメージデータ“Ａ．ｊｐｇ．ｄａｔ”及びテキストデータ“Ａ．ｔｘｔ．ｄａｔ”によってそれぞれ更新される。その結果、図４（Ａ）の編集画面のプレビュー表示の場合と同様に、再構築後の印刷データ３０５は、実データであるイメージデータ１３０１及びテキストデータ１３０２を含む。
【００４０】
本実施形態では、印刷データ３０５に対して事前にスタブデータを付加しておき、印刷処理時にデータソース３０６から取得した実データを上書きすることで、印刷データの再構築処理が実行される。また、データソース３０６から取得する実データのサイズ以上のサイズをもつスタブデータを使って印刷データ３０５を事前に作成することで、再構築処理ではスタブデータの領域を実データで上書きするだけで済む。よって、処理を簡易に実現できる。本実施形態によれば、印刷データのデータ量を抑えた上で、合成にかかる処理を簡単化できる。
【００４１】
［第２実施形態］
次に、本発明の第２実施形態を説明する。第１実施形態では、サイズが最大である実データに着目して最大サイズのスタブデータを事前に作成し、スタブデータの領域上に実データを上書きして印刷データの再構築処理を行う構成を示した。この場合、実データのうちで最も大きいサイズでスタブデータが作成されるため、実データのサイズの如何によっては効率的でない場合が起こり得る。また、複数の可変部分が存在する場合には、複数のデータをやり取りする必要があるため、処理の複雑化を招く可能性がある。そこで第２実施形態ではこれらの課題への解決策を説明する。なお、本実施形態にて第１実施形態の場合と同様の部分については既に使用した符号を用いることにより、それらの詳細な説明を省略する。
【００４２】
図１３を参照して、本実施形態における印刷データ３０５及びデータソース３０６の生成処理例について説明する。
ユーザが図５（Ｂ）の出力ボタン６０８を操作し、ＵＩ制御部３０１が印刷データ生成部３０２に処理の開始を指示すると、印刷データ生成部３０２は、印刷データ３０５に予め用意しておくイメージ用のスタブデータを作成する処理を行う（Ｓ１４０１）。次に印刷データ生成部３０２は、印刷データ３０５に予め用意しておくテキスト用のスタブデータを作成する処理を行う（Ｓ１４０２）。イメージ用のスタブデータ及びテキスト用のスタブデータについては特に制約はなく、１レコード目で使用するイメージデータ、テキストデータであってもよい。印刷データ生成部３０２は、レコードごとに変更のない印刷データ３０５の固定部分を作成する処理を行う（Ｓ１４０３）。
【００４３】
Ｓ１４０４にて印刷データ生成部３０２は、Ｓ１４０１及びＳ１４０２で作成したスタブデータを用いて、固定部分に続いてレコードごとに変更のある可変部分について、印刷データ３０５にデータを追加する処理を行う。図１４（Ａ）及び（Ｂ）に印刷データ３０５の一例を示す。この印刷データは、図４（Ａ）のドキュメントテンプレート３０３に対して、図５（Ｂ）に示す４レコードの場合に図１３のＳ１４０３及びＳ１４０４で出力されるデータを示しており、ＰＤＦの場合を例示している。
【００４４】
図１４（Ａ）は、Ｓ１４０３で出力される印刷データ３０５の一例を示す。印刷データ３０５は、そのヘッダ情報及び固定部分１５０１がファイルの先頭から順に出力される。図１４（Ｂ）は、Ｓ１４０４にて可変部分に関するデータが追加された印刷データ３０５を例示する。印刷データ３０５において、イメージ用のスタブデータを使った可変部分１５０２が追加されている。同様に、印刷データ３０５において、テキスト用のスタブデータを使った可変部分１５０３が追加されている。さらには、印刷データ３０５において、相互参照表１５０４が追加されている。相互参照表１５０４は、固定部分１５０１、イメージ用のスタブデータを使った可変部分１５０２、テキスト用のスタブデータを使った可変部分１５０３がそれぞれファイル上のどの位置にあるかを示すポインタのデータをもつ。例えば、印刷データ３０５の固定部分へのポインタが示す参照位置１５０５は、ファイル先頭から１８３バイトの位置に固定部が存在することを示している。また、イメージ用のスタブデータを使った印刷データ３０５の可変部分へのポインタが示す参照位置１５０６は、ファイル先頭から１５５５バイトの位置に当該可変部分が存在することを示している。さらに、テキスト用のスタブデータを使った印刷データ３０５の可変部分へのポインタが示す参照位置１５０７は、ファイル先頭から１６５５バイトの位置に当該可変部分が存在することを示している。
【００４５】
以上のように、印刷データ生成部３０２は、イメージ用のスタブデータ及びテキスト用のスタブデータをそれぞれ印刷データ３０５に追加する処理を行う。
図１３のＳ１４０５で印刷データ生成部３０２は、印刷時に実データに置換する可変部分について、ファイル先頭からの位置を取得する処理を行う。具体的には、ファイルの先頭から検索が開始して、最も早く検索された印刷データ３０５の可変部分に係る、ファイル先頭からの位置が取得される。例えば、図１４（Ｂ）の場合、イメージ用のスタブデータとテキスト用のスタブデータが存在し、検索によりイメージ用のスタブデータの方が先に見つかる。よって、印刷データ生成部３０２はその位置（１５５５）を取得する。そして、印刷データ生成部３０２は、実データを使ってレコードごとのデータソース３０６を作成する処理を行う（Ｓ１４０６）。次に印刷データ生成部３０２は、全てのレコードに対して、データソース３０６を作成したかどうかを判断する処理を行う（Ｓ１４０７）。全レコードに対してデータソース３０６の作成が完了していない場合（Ｓ１４０７でＮＯ）、Ｓ１４０５へ戻り、Ｓ１４０５及びＳ１４０６の処理が繰り返される。また、全レコードに対してデータソース３０６の作成が完了した場合（Ｓ１４０７でＹＥＳ）、本シーケンスを終了する。
【００４６】
図１５（Ａ）は、図１３のＳ１４０５からＳ１４０７で作成されるデータソース３０６の一例を表形式で示しており、４レコード分のＩＤ及び置換データを例示する。データソース３０６の各エントリは、更新位置１６０１、何バイトのデータを更新するのかを表す更新サイズ１６０２、置換する実データ１６０３で構成される。なお、置換する実データ１６０３についてはファイル名で表記しているが、ファイル名に基づいてファイルから直接読み出すことで置換する実データ１６０３を取得できるものとし、両者を区別せずに説明する。例えば、ＩＤ００１の置換データ１６０４は、更新位置１６０１がファイル先頭から１５５５バイトであり、更新サイズ１６０２が１０３３０バイトであり、置換する実データ１６０３が“Ａ．ｊｐｇ．Ａ．ｔｘｔ．ｄａｔ”である。印刷データ生成部３０２は、図１３のＳ１４０６において、データソース３０６の置換データ１６０４として“Ａ．ｊｐｇ．Ａ．ｔｘｔ．ｄａｔ”を作成する。結果として、ＩＤ００１については、Ｓ１４０４で追加したスタブデータを用いた印刷データ３０５の可変部分に対して、ファイル先頭から１５５５バイトの位置から１０３３０バイトの“Ａ．ｊｐｇ．Ａ．ｔｘｔ．ｄａｔ”のデータが置換される。ＰＤＦファイルの場合、その途中から最後までを置換しても整合性が確保されるように、置換する実データ１６０３としてイメージデータやテキストデータだけでなくＰＤＦのフォーマットに従ったタグ及び相互参照表が付加される。
【００４７】
図１５（Ｂ）は、図１５（Ａ）のＩＤ００１の置換データ１６０４の“Ａ．ｊｐｇ．Ａ．ｔｘｔ．ｄａｔ”を示したイメージ図である。以下、ＰＤＦを例に説明する。
ＩＤ００１の置換データ１６０４には、イメージデータ及びテキストデータ自体の実データに加え、データの最初であることを示すタグ、データの最後であることを示すタグ、データサイズを表現したＬｅｎｇｔｈタグ等が含まれる。イメージデータの定義情報１６０５の場合、データの最初であることを示すタグは、イメージ用のスタブデータの場合と同じく「２４ ０ ｏｂｊ」と記載される。これに続いて、データの長さを記載するＬｅｎｇｔｈタグが位置し、例えば“＜＜ ／Ｌｅｎｇｔｈ ９６００ ＞＞”と記載される。さらに、イメージデータの定義情報１６０５では、Ｌｅｎｇｔｈタグに続いてイメージ自体の実データが記載されて、データの最後には「ｅｎｄｏｂｊ」のタグが付加される。同様に、テキストデータの定義情報１６０６の場合、データの最初であることを示すタグは、テキスト用のスタブデータの場合と同じく「２５ ０ ｏｂｊ」と記載される。これに続いて、データの長さを記載するＬｅｎｇｔｈタグが位置し、例えば“＜＜ ／Ｌｅｎｇｔｈ ３０ ＞＞”と記載される。Ｌｅｎｇｔｈタグに続いてテキスト自体の実データが記載されて、データの最後には「ｅｎｄｏｂｊ」タグが付加される。最後に相互参照表１６０７とトレイラ１６０８がそれぞれ付加され、印刷データ３０５の途中から最後まで置換できるように設定される。相互参照表１６０７では、印刷データ３０５の固定部分へのポインタの位置データ１６０９が記載されている。これに続いて、イメージ用の印刷データ３０５の可変部分へのポインタの位置データ１６１０が記載されている。ここまでは、図１３のＳ１４０４で作成した相互参照表１５０４と同じでよい。印刷データ生成部３０２は、相互参照表１６０７にてテキスト用の印刷データ３０５の可変部分へのポインタの位置データ１６１１を記載する。この位置データは、イメージ用の実データのサイズとイメージ用のスタブデータのサイズとが異なるため、そのサイズに応じて変更する必要がある。
以上のように印刷データ生成部３０２は、データソース３０６をレコードごとに生成する処理を行う。
【００４８】
次に、クライアント１０３によって作成された印刷データ３０５とデータソース３０６に対し、サーバ１０２及びプリンタ装置１０４が行う処理について図１６を参照して説明する。図１６は、本実施形態で扱うプログラムコードとデータがどのような関係にあるかを示すデータフロー図である。図１０との相違点は、印刷データ再構築部１００５が、印刷データ更新部１７０５に置換されていることである。その他の部分は図１０に示す構成と同様である。
ジョブ制御部１７０１は、印刷データ格納部１７０２に印刷データ３０５が受信済みであるかどうかを判断し、またユーザ操作にしたがって、受信済みの印刷データの印刷を開始するかどうかを決定する。印刷データ更新部１７０５は、印刷データ受信部１００３から印刷データ格納部１７０２に保存された印刷データ３０５と、サーバ１０２からデータソース受信部１７０４が受信したデータソース３０６を取得する。印刷データ更新部１７０５は取得したデータを用いて印刷データ３０５の更新処理を行う。
【００４９】
図１７を参照して、印刷データ３０５及びデータソース３０６から印刷データ３０５を更新する処理例について説明する。
ユーザ操作によって印刷の開始が指示されると、ジョブ制御部１７０１は、クライアント１０３から印刷データを受信したか否かを判断する（Ｓ１８０１）。印刷対象の印刷データ３０５が全て受信されるまでジョブ制御部１７０１が待ち状態となり（Ｓ１８０１でＮＯ）、印刷データ３０５の受信が完了すると（Ｓ１８０１でＹＥＳ）、Ｓ１８０２に処理を進める。Ｓ１８０２でジョブ制御部１７０１は、印刷データ３０５で使用するレコードごとのデータソース３０６が確定したか否かを判断する。データソース３０６が確定していない場合（Ｓ１８０２でＮＯ）、ジョブ制御部１７０１は、データソース３０６が確定するまで待ち状態となる。データソース３０６が確定すると（Ｓ１８０２でＹＥＳ）、Ｓ１８０３に処理を進める。Ｓ１８０３でジョブ制御部１７０１は、データソース受信部１７０４に対して、サーバ１０２からデータソース３０６を取得するように指示する。また、ジョブ制御部１７０１は、印刷データ更新部１７０５に対して、取得したデータソース３０６を用いて印刷データ３０５を更新するように指示する。印刷データ更新部１７０５は、取得したデータソース３０６内の置換データを用いて、印刷データ３０５を所定の位置から更新する処理を行い、本シーケンスを終了する。
【００５０】
図１８は、更新処理を行った場合の印刷データ３０５のイメージ図である。図１４（Ｂ）の印刷データ３０５に対して、図１５（Ａ）に示すデータソース３０６のＩＤ００１の置換データ１６０４を用いて、更新処理を行った場合の印刷データ３０５を例示する。データソース３０６から更新位置１６０１、更新サイズ１６０２、置換する実データ１６０３を取得する処理が実行される。更新後のデータ１９０１では、更新位置１６０１から置換データ１９０２により上書きされている。つまり、ＩＤ００１の置換データ１６０４の場合、印刷データ更新部１７０５は、ファイル先頭から１５５５バイトの位置から１０３３０バイトの“Ａ．ｊｐｇ．Ａ．ｔｘｔ．ｄａｔ”を使って更新処理を行う。更新後の印刷データ３０５では、可変部分１９０３だけでなく相互参照表１９０４も更新され、また印刷データ３０５の固定部分へのポインタの位置データ１９０５を保持している。
本実施形態では、印刷データ３０５に対して、事前にスタブデータを付加しておき、印刷時にデータソース３０６から取得した置換データを用いて更新処理が実行される。また、スタブデータについては、データサイズに関する制約がなく、複数の可変部分で参照するデータをデータソース３０６から取得する場合でも、レコードごとに１つの置換データで済むので、複雑な処理を必要としない。よって、印刷データ３０５のデータ量を抑えた上で、合成にかかる処理を簡易化できる。
【００５１】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００５２】
１０２    サーバコンピュータ
１０３    クライアントコンピュータ
１０４    プリンタ装置
３０２    印刷データ生成部
１００５  印刷データ再構築部
１７０５  印刷データ更新部
【図１】
2015207062.tif 000003
【図２】
2015207062.tif 000004
【図３】
2015207062.tif 000005
【図４】
2015207062.tif 000006
【図５】
2015207062.tif 000007
【図６】
2015207062.tif 000008
【図７】
2015207062.tif 000009
【図８】
2015207062.tif 000010
【図９】
2015207062.tif 000011
【図１０】
2015207062.tif 000012
【図１１】
2015207062.tif 000013
【図１２】
2015207062.tif 000014
【図１３】
2015207062.tif 000015
【図１４】
2015207062.tif 000016
【図１５】
2015207062.tif 000017
【図１６】
2015207062.tif 000018
【図１７】
2015207062.tif 000019
【図１８】
2015207062.tif 000020
【図１９】
2015207062.tif 000021