(57)【要約】【課題】  少ない処理負荷で、表示された画像に対する加工処理を、印刷結果に反映させること。【解決手段】  ページ記述言語で記述された第１描画データ３０２を中間コード表現の第２描画データ３０３に変換し、第２描画データ３０３を用いて、画像を表示する。表示された画像に、入力した指示に応じた加工処理を施して表示する。さらに、加工処理を表わす加工処理データ３０４を第２描画データに付加して画像形成デバイス３０７に送信する。また更に、画像形成デバイス３０７は受け取った加工処理データ３０９と第２描画データ３０８とに基づいて画像形成を行なう。【選択図】  図３
2008027396.tif 000002
【特許請求の範囲】
【請求項１】
ページ記述言語で記述された第１描画データを中間コード表現の第２描画データに変換する変換工程と、
前記第２描画データを用いて、画像を表示する表示工程と、
前記表示工程で表示された画像に、入力した指示に応じた加工処理を施して表示する加工処理工程と、
前記加工処理を表わす加工処理データを前記第２描画データに付加して画像形成デバイスに送信する送信工程と、
を含むことを特徴とする画像処理方法。
【請求項２】
前記送信工程は、前記第２描画データに前記加工処理データが含まれるように、内的に付加することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記加工処理は、表示された前記画像に対する移動処理、拡大縮小処理、または、範囲指定処理の少なくとも何れか一つであることを特徴とする請求項１に記載の画像処理方法。
【請求項４】
前記送信工程によって送信された前記第２描画データと前記加工処理データとに基づいて前記画像形成デバイスで画像形成を行なう画像形成工程を更に含むことを特徴とする請求項１に記載の画像処理方法。
【請求項５】
前記加工処理データは、前記第２描画データで表わされる画像に対する印刷範囲及び印刷倍率を示すデータであることを特徴とする請求項１に記載の画像処理方法。
【請求項６】
ページ記述言語で記述された第１描画データを中間コード表現の第２描画データに変換する変換手段と、
前記第２描画データを用いて、画像を表示する表示手段と、
前記表示手段で表示された画像に、入力した指示に応じた加工処理を施す加工処理手段と、
前記加工処理を表わす加工処理データを前記第２描画データに付加して画像形成デバイスに送信する送信手段と、
を含むことを特徴とする画像処理装置。
【請求項７】
コンピュータが実行することのできる画像処理プログラムであって、
ページ記述言語で記述された第１描画データから変換された中間コード表現の第２描画データを用いて、画像を表示する表示工程と、
前記表示工程で表示された画像に、入力した指示に応じた加工処理を施して表示する加工処理工程と、
前記加工処理を表わす加工処理データを前記第２描画データに付加して画像形成デバイスに送信する送信工程と、
をコンピュータに実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理方法及び装置に関する。
【背景技術】
【０００２】
従来、文書ファイルを拡大縮小して表示・印刷するには、まず通常の大きさでラスタデータに展開した後、指示倍率にしたがってラスタデータを拡大縮小処理していた。しかしこの手法ではラスタデータを補間したり間引いたりして拡大縮小を行なうので、ジャギーが発生したりドットが失われたりして、印刷品質が低下する。また、ラスタデータを操作するので高速処理に不向きであり、プリンタへの送信データ量も多くなる。この手法については、たとえば特開２０００−８３２２２号公報（特許文献１）に関連記載がある。
【０００３】
文書ファイルがページ記述言語（Page Description Language；以下ＰＤＬ）で記述されていれば、文書ファイルそのものを書き換えることで拡大縮小を行なうことがきる。たとえばPostScriptでは座標系を変換するオペレータとして、translate（移動）・scale（拡大縮小）・rotate（回転）が用意されている。従って、これらを文書の先頭に記述することで、文書全体を移動・拡大縮小・回転させることができる。また、ＳＶＧ（Scalable Vector Graphics）（非特許文献１）では＜ｇ＞要素のtransform属性で移動・拡大縮小・回転を指定することができる。従って、ＳＶＧ文書ファイルの全要素を包含するように＜ｇ＞要素を記述することで、文書全体を移動・拡大縮小・回転させることができる。あるいは、拡大縮小のみであれば、もっとも外側の＜ｓｖｇ＞要素にｖｉｅｗＢｏｘ属性を指定することでも可能である。
【特許文献１】特開２０００−８３２２２号公報
【特許文献２】特開平８−２８６８６１号公報
【特許文献３】特開２００１−１３００８２号公報
【特許文献４】特開２００１−１３００８３号公報
【非特許文献１】SVG １.１ Specification ＜http://www.w３.org/TR/SVG11/＞
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記の方法ではＰＤＬ文書ファイルそのものを書き換える必要がある。ディスプレイにＰＤＬ文書を表示してユーザの指示によりリアルタイムで移動・拡大縮小・回転したいような場合は、ＰＤＬ文書ファイルを書き換えた後にパーズとレンダリングを行なう必要がある。これは、スムースな操作性を持ったシステムを提供するには不適切である。また、この方法はＰＤＬごとに書き換え方が異なるので、複数のＰＤＬに対応しようとすれば、それぞれのＰＤＬに対して個別の処理を行なわなければならない。
【０００５】
ここで、すべての移動・拡大縮小・回転は、３ｘ３の変換行列（そのうちの６つの値のみ使用）で数学的に表現することができる。従って、この変換行列をＰＤＬ文書とは別に用意しておいて、印刷時にＰＤＬ文書に適用することで、ＰＤＬ文書の移動・回転・拡大縮小を行なうことができる。この手法についてはたとえば特開平８−２８６８６１号公報（特許文献２）に関連記載がある。しかし、この方法ではＰＤＬ文書全体に適用される変換操作しか実現できないので、たとえばＰＤＬ文書の一部をクリップして印刷するといった処理ができない。また、それぞれのＰＤＬに対して個別の処理を行なわなければならない。
【０００６】
また、印刷データを一旦、中間コードに変換することで、印刷イメージのプレビュー表示を柔軟に行なうことができる。この手法についてはたとえば特開２００１−１３００８２号公報（特許文献３）や特開２００１−１３００８３号公報（特許文献４）に関連記載がある。
【０００７】
しかし、この方法ではプレビュー表示で拡大縮小や領域選択を行なっても、その操作を印刷に反映させることができない。反映させるためには印刷データを再作成する必要があり、処理コストがかかる。
【０００８】
本発明は以上の事情に鑑みてなされたものであり、少ない処理負荷で、表示された画像に対する加工処理を、印刷結果に反映させることを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係る方法は、
ページ記述言語で記述された第１描画データを中間コード表現の第２描画データに変換する変換工程と、
前記第２描画データを用いて、画像を表示する表示工程と、
前記表示工程で表示された画像に、入力した指示に応じた加工処理を施して表示する加工処理工程と、
前記加工処理を表わす加工処理データを前記第２描画データに付加して画像形成デバイスに送信する送信工程と、
を含むことを特徴とする。
【００１０】
上記目的を達成するため、本発明に係る装置は、
ページ記述言語で記述された第１描画データを中間コード表現の第２描画データに変換する変換手段と、
前記第２描画データを用いて、画像を表示する表示手段と、
前記表示手段で表示された画像に、入力した指示に応じた加工処理を施す加工処理手段と、
前記加工処理を表わす加工処理データを前記第２描画データに付加して画像形成デバイスに送信する送信手段と、
を含むことを特徴とする。
【００１１】
上記目的を達成するため、本発明に係るプログラムは、
コンピュータが実行することのできる画像処理プログラムであって、
ページ記述言語で記述された第１描画データから変換された中間コード表現の第２描画データを用いて、画像を表示する表示工程と、
前記表示工程で表示された画像に、入力した指示に応じた加工処理を施して表示する加工処理工程と、
前記加工処理を表わす加工処理データを前記第２描画データに付加して画像形成デバイスに送信する送信工程と、
をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、少ない処理負荷で、表示された画像に対する加工処理を、印刷結果に反映させることができる。
【発明を実施するための最良の形態】
【００１３】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１４】
（一実施形態）
本実施形態は、コンピュータネットワーク環境におけるＰＤＬ文書ファイルの表示・印刷方法に関する。特に、表示されたＰＤＬ文書ファイルを、拡大縮小処理し、上下左右移動処理し、領域の一部をクリップ（範囲指定処理）して表示し、かつ表示されたままの画像を少ない処理負荷で印刷する方法に関する。
【００１５】
本実施の形態では、ＰＤＬとしてＳＶＧ１.１を使用する。ユーザＰＣ（クライアント）において、ユーザが選択したＳＶＧ文書ファイルを中間コードに変換し、ディスプレイに表示する。ユーザが上下左右移動、拡大縮小、領域選択（クリップ）を指示すると、ディスプレイの表示が更新される。ユーザが印刷を指示すると、ユーザＰＣからプリンタへ中間コードおよび上下左右移動、拡大縮小、クリップ情報が送信される。プリンタでは、上下左右移動、拡大縮小、クリップ情報を参照して中間コードの印刷を行なうことで、ディスプレイ上の表示と同じ印刷結果を得る。
【００１６】
［全体構成］
まず、図１を参照して本発明に係る画像処理方法の一実施形態を実現可能なシステムの全体構成を説明する。１０１はユーザが操作を行なうクライアントＰＣであり、ネットワークインタフェースを経由してネットワーク１０３に接続されている。１０２はネットワーク経由で印刷指示を受け付ける画像形成デバイスの一種としてのプリンタであり、同じくネットワークインタフェースを経由してネットワーク１０３に接続されている。ＰＣ１０１はネットワーク１０３を通じてプリンタ１０２に印刷指示を送信することが可能である。
【００１７】
［コンピュータ装置およびプリンタの構成］
次に、図２Ａと図２Ｂを参照して、本実施の形態で使用するコンピュータ装置およびプリンタの構成について説明する。図２Ａは、クライアント１０１の構成の一例を示すブロック図である。２０１はＲＡＭ２０２に格納されている制御プログラムに従って本装置全体の制御を行なうＣＰＵである。２０２はＣＰＵ２０１が実行する本装置の制御プログラムや、文書画像等のデータを格納するＲＡＭ等の内部記憶部である。２０３はＣＰＵ２０１の制御の下にネットワークとの接続を行なってデータ等を送受信するネットワークインタフェースである。２０４はデータを保存する磁気ディスク等の外部記憶装置である。２０５はディスプレイ、２０６はキーボード、２０７はマウス等のポインティングデバイスである。ＲＡＭ２０２に格納されているプログラムは、同じくＲＡＭ２０２に格納されているＯＳ（Operating System）の機能を必要に応じて使用する。プログラムを実行するＣＰＵ２０１は、ＲＡＭ２０２に一時記憶するデータの内容を読み書きしたり、外部記憶装置２０４上でデータを読み書きしたり、ネットワークインタフェースを通じてデータの送受信を行なったりする。また、キーボード２０６やポインティングデバイス２０７からの入力を受け取ったり、ディスプレイ２０５に表示を行なったりすることで、所定の動作を行なう。
【００１８】
図２Ｂは、プリンタ１０２の構成の一例を示すブロック図である。２０８、２０９、２１０、２１１は図２Ａの２０１、２０２、２０３、２０４に示したのと同じくそれぞれＣＰＵ、ＲＡＭ、ネットワークインタフェース、外部記憶装置である。２１２は印刷を行なうプリンタエンジンである。ＲＡＭ２０９に格納されているプログラムは、ネットワークインタフェース２１０を通じて受信した印刷指示にしたがって、プリンタエンジン２１２を制御して印刷を行なう。その際、ＲＡＭ２０９に一時記憶するデータの内容を読み書きしたり、外部記憶装置２１１上でデータを読み書きしたりすることができる。
【００１９】
［全体のブロック図］
次に、図３を参照して、本実施の形態で使用するコンピュータ装置内のブロック構成について説明する。
【００２０】
図３は、物理的に図１のような構成を取るクライアント１０１、プリンタ１０２、ネットワーク１０３において、本実施の形態の動作に主として関わる論理ブロックを示す図である。すなわちプログラムモジュール、ファイルエンティティ、メモリデータ、および通信経路の構成を示すブロック図である。
【００２１】
３０１はクライアント１０１のブロック境界を表わし、ここではＯＳの制御下にある環境を指す。中間コードコンバータ３０５とビューワプログラム３０６は、通常は外部記憶装置２０４に保存されているが、ユーザ、ＯＳ、あるいは別のプログラムから実行が指示されると、ＯＳの制御によりＲＡＭ２０２に読み込まれ、実行可能な状態となる。３０２は外部記憶装置２０４に保存されているＳＶＧ文書ファイルであり、中間コードコンバータ３０５を含むプログラムはＯＳの機能を利用してＳＶＧ文書ファイル３０２の内容を読み書きすることが可能である。３０３はＲＡＭ２０２に格納される中間コードデータであり、中間コードコンバータ３０５を含むプログラムは同じくＯＳの機能を利用して中間コードデータ３０３の内容を読み書きすることが可能である。
【００２２】
中間コードコンバータ３０５はＳＶＧ文書ファイル３０２から中間コードデータ３０３への変換を行なう。つまり、中間コードコンバータ３０５は、ページ記述言語で記述された第１描画データを中間コード表現の第２描画データに変換する変換手段として機能する。この変換動作は両言語の仕様から機械的に決定できるものであるので、本実施の形態では中間コードコンバータ３０５の動作について詳述しない。
【００２３】
中間コードコンバータ３０５は、ビューワプログラム３０６を起動する前の任意の時点でユーザが実行し、ＳＶＧ文書ファイル３０２を中間コードデータ３０３に変換する。
ビューワプログラム３０６は中間コードデータ３０３の内容をディスプレイ２０５に表示する。そして、キーボード２０６またはポインティングデバイス２０７を通じて、上下左右移動、拡大縮小（印刷倍率）、領域選択（印刷範囲）、印刷についてのユーザの指示を受け付ける。つまり、ビューワプログラム３０６は、中間コードコンバータ３０５が生成した第２描画データを用いて、画像を表示する表示手段、及び、表示された画像に、入力した指示に応じた加工処理を施して表示する加工処理手段として機能する。上下左右移動、拡大縮小（印刷倍率）、領域選択（印刷範囲）といった加工処理に関するユーザの指示は表示印刷情報３０４（加工処理データ）としてＲＡＭ２０２に格納される。ビューワプログラム３０６はユーザからの印刷指示を受け付けると、ネットワークインタフェース２１０を使用し、中間コードデータ３０３と表示印刷情報３０４をネットワーク１０３を経由してプリンタコントローラ３０７に送信する。つまり、ビューワプログラム３０６は、加工処理を表わす加工処理データを前記第２描画データに内的に付加して画像形成デバイスに送信する送信としても機能する。ＳＶＧ文書ファイル３０２と中間コードデータ３０３の内容、およびビューワプログラム３０６の動作については図４〜図１２を用いて後述する。
【００２４】
３０７はプリンタ１０２のブロック境界を表わす。コントローラ３０７はＲＡＭ２０９に格納され、常に実行可能な状態にあるプログラムである。コントローラ３０７はネットワークインタフェース２１０を通じてビューワプログラム３０６から中間コードデータ３０３と表示印刷情報３０４を受信すると、ＲＡＭ２０９に中間コードデータ３０８および表示印刷情報３０９として格納する。そして、その情報にしたがってプリンタエンジン２１２を制御して印刷を行なう。コントローラ３０７の動作については図１３〜図１４を用いて後述する。
【００２５】
［ＳＶＧ文書ファイル］
次に、図４〜図５を参照して、本実施の形態で使用するＳＶＧ文書ファイルについて説明する。
【００２６】
図４は、本実施の形態で使用するＳＶＧ文書ファイル３０２の内容を示す図である。１行目はＸＭＬ宣言（XML Declaration）であり、本ＳＶＧ文書ファイルがＸＭＬ１.０仕様にしたがって記述されていることを示す。
【００２７】
２〜３行目は文書型宣言（Document Type Declaration）であり、外部サブセットとしてＳＶＧ１.１の文書型定義（Document Type Definition；ＤＴＤ）を参照している。
【００２８】
４〜５行目はルート要素としての＜ｓｖｇ＞要素の開始タグである。＜ｓｖｇ＞要素の幅・高さとしてそれぞれ２１.０cmと２９.７cm（Ａ４サイズ）、ユーザ座標系として（０,０）−（２１０,２９７）を指定しているほか、ＳＶＧ名前空間と、準拠するＳＶＧのバージョン番号を指定している。
【００２９】
６行目は＜desc＞要素であり、本ＳＶＧ文書ファイルについての説明を記述する。＜desc＞要素の内容はＳＶＧ文書のレンダリングには使用されない。
【００３０】
７、１０、１３行目はコメント要素である。コメント要素の内容もＳＶＧ文書のレンダリングには使用されない。
【００３１】
８〜９行目は矩形をレンダリングするための＜rect＞要素である。左上座標の値はユーザ座標系において（３０,３０）を指定し、幅と高さの値は４行目のｖｉｅｗＢｏｘに対する割合としてそれぞれ４０%と３０%を指定している。矩形内部の塗りつぶしの色は"yellow"（黄色）、矩形の外形線の色は"blue"（青色）、外形線の幅はユーザ座標系において２と指定している。
【００３２】
１１〜１２行目は円をレンダリングするための＜circle＞要素である。中心座標の値はユーザ座標系において（１４０,１２０）を指定し、半径の値はユーザ座標系において５０を指定している。円内部の塗りつぶしの色は"red"（赤色）、円の外形線の色は"blue"（青色）、外形線の幅はユーザ座標系において２と指定している。
【００３３】
１４〜１５行目は三角形をレンダリングするための＜path＞要素である。パスはユーザ座標系における絶対座標の（１００,１４０）から始まり、次にユーザ座標系における相対座標で（５０,９０）まで直線を引き、次にユーザ座標系における相対座標で（−１００,０）まで直線を引き、最後にパスを閉じている。パス内部の塗りつぶしの色は"green"（緑色）、パスの外形線の色は"blue"（青色）、外形線の幅はユーザ座標系において２と指定している。
【００３４】
１４行目はルート要素としての＜ｓｖｇ＞要素の終了タグであり、４〜５行目の開始タグに対応するものである。図４に示したＳＶＧ文書ファイルのファイルサイズは、文字コードとしてＵＴＦ−８、改行コードとしてＭＳ−ＤＯＳ（Windows（登録商標））形式の２バイト（０Ｄ０ＡＨ）を使用した場合、６４１バイトになる。
【００３５】
図４に示したＳＶＧ文書ファイルをレンダリングした結果を図５に示す。５０１が８〜９行目の＜rect＞要素に対応する矩形、５０２が１１〜１２行目の＜circle＞要素に対応する円、５０３が１４〜１５行目の＜path＞要素に対応する三角形である。５０４はＳＶＧ文書全体の外接矩形を示している。外接矩形５０４のサイズは幅２１.０cm、高さ２９.７cmである。
【００３６】
［中間コード］
次に、図６〜７を参照して、本実施の形態で使用する中間コードについて説明する。図６は、本実施の形態で使用する中間コードの仕様を示す図である。
【００３７】
６０１はレンダリング命令を表わすオペコードであり、数字で指定する。本実施の形態では１０種類のオペコードを定義している。オペコードは１バイト整数として中間コードデータ３０３、３０８に格納される。
【００３８】
６０２はオペコードを人間が識別しやすくするためのニーモニックである。ニーモニックは中間コードの内容をダンプして示すような場合にのみ使用し、中間コードデータ３０３、３０８には含まれない。
【００３９】
６０３はオペコードに対する引数を表わすオペランドである。オペランドの数とその意味はオペコードによって異なる。オペランドは２バイト浮動小数点数として中間コードデータ３０３、３０８に格納される。
【００４０】
本実施の形態で使用する中間コードでは、単位系としてmmのみを使用する。オペランドに座標や長さを指定する場合は、すべてmmに換算した値を指定する。座標値はページ左上を原点とする絶対値で表わす。オペランドに色を指定する場合はＲＧＢ（赤・緑・青）で表わし、Ｒ（赤）、Ｇ（緑）、Ｂ（青）の値をそれぞれ０.０〜１.０の範囲で指定する。
【００４１】
オペコード０（ニーモニックPageStart）はページの開始を表わす。オペランドはページの幅（mm）とページの高さ（mm）である。
【００４２】
オペコード１（ニーモニックPageEnd）はページの終了を表わす。オペランドはない。
【００４３】
オペコード２（ニーモニックFill）は塗りつぶしの色の指定である。Ｆｉｌｌで指定する塗りつぶしは以降のレンダリング命令すべてに適用される。オペランドは塗りつぶしの色（ＲＧＢ）である。
【００４４】
オペコード３（ニーモニックStroke）は外形線の指定である。Strokeで指定する外形線は以降のレンダリング命令すべてに適用される。オペランドは外形線の色（RGB）と、外形線の幅（mm）である。
【００４５】
オペコード４（ニーモニックPathStart）はパスの開始を表わす。オペランドはない。
【００４６】
オペコード５（ニーモニックPathEnd）はパスの終了を表わす。オペランドはクローズフラグであり、"１"が指定された場合はパスの終了位置から開始位置まで直線をレンダリングすることで、パスを閉じることを表わす。"０"が指定された場合は何もしない。
【００４７】
オペコード６（ニーモニックPathMoveTo）はパスのレンダリング位置の移動を表わす。PathStart命令とPathEnd命令の間でのみ有効である。PathMoveToはレンダリング位置を移動するだけで、実際のレンダリングは行なわない。オペランドは移動位置座標をＸ（横方向）（mm）とY（縦方向）（mm）の値で指定する。
【００４８】
オペコード７（ニーモニックPathLineTo）はパスの現在位置からオペランドで指定された位置まで直線をレンダリングする。PathStart命令とPathEnd命令の間でのみ有効である。オペランドは直線終端座標をＸ（横方向）（mm）とＹ（縦方向）（mm）の値で指定する。
【００４９】
オペコード８（ニーモニックPathArc）はパスの現在位置から円弧をレンダリングする。PathStart命令とPathEnd命令の間でのみ有効である。PathArcは常に時計回り方向に円弧をレンダリングする。オペランドは円弧中心座標のＸ（横方向）（mm）とＹ（縦方向）（mm）の値、および、円弧の長さ（角度で指定する）である。
【００５０】
オペコード９（ニーモニックClip）はレンダリングのクリップの指定である。Clipで指定するクリップは以降のレンダリングすべてに適用される。オペランドはクリップ領域の左上座標のＸ（横方向）（mm）とＹ（縦方向）（mm）の値、および、クリップ領域の幅（mm）と高さ（mm）である。
【００５１】
図７は、図４に示した内容のＳＶＧ文書ファイル３０２を中間コードコンバータ３０５が変換した中間コードデータ３０３の内容を示す図である。中間コードデータ３０３は１バイト整数のオペコードと２バイト浮動小数点数のオペランドのみが格納されたバイナリデータであるが、図７に示すのはそれを人間が識別しやすくするためにダンプ表示し、ニーモニックも付記したものである。
【００５２】
１行目はページ開始命令で、オペランドでページの幅と高さを２１０.０mmと２９７.０mmに指定している。図４の＜ｓｖｇ＞要素の開始タグに相当し、長さ指定をcmからmmに換算している。
【００５３】
２行目は以降のレンダリングに使用する塗りつぶし命令で、オペランドで塗りつぶしの色を黄色、すなわち（Ｒ, Ｇ, Ｂ）＝（１.０, １.０, ０.０）に指定している。図４の＜rect＞要素のfill属性に相当し、色指定を文字列表記からＲＧＢ表記に変換している。
【００５４】
３行目は以降のレンダリングに使用する外形線命令で、オペランドで外形線の色を青色、すなわち（Ｒ, Ｇ, Ｂ）＝（０.０, ０.０, １.０）に指定し、線幅を２.０mmに指定している。図４の＜rect＞要素、＜circle＞要素、＜path＞要素のstroke属性およびstroke-width属性に相当し、色指定を文字列表記からＲＧＢ表記に変換するとともに、長さ指定をユーザ座標系からmmに換算している。
【００５５】
４〜９行目は矩形のレンダリングを行なう命令群である。５行目はレンダリング位置移動命令、６〜８行目は直線レンダリング命令、９行目はパス終了命令である。これにより、座標（３０.０mm,３０.０mm）→（１１４.０mm,３０.０mm）→（１１４.０mm,１１９.１mm）→（３０.０mm,１１９.１mm）→（３０.０mm,３０.０mm）を直線で結ぶ閉パスがレンダリングされる。矩形内部は２行目の命令により黄色で塗りつぶされ、外形線は３行目の命令により青色かつ線幅２mmでレンダリングされる。図４の＜rect＞要素および図５のレンダリング結果５０１に相当し、座標指定をユーザ座標系からmmに換算し、長さ指定をパーセント指定から絶対値指定に変換している。
【００５６】
１０行目は以降の塗りつぶしに使用する塗りつぶし命令で、オペランドで塗りつぶしの色を赤色、すなわち（Ｒ, Ｇ, Ｂ）＝（１.０, ０.０, ０.０）に指定している。図４の＜circle＞要素のｆｉｌｌ属性に相当し、色指定を文字列表記からＲＧＢ表記に変換している。
【００５７】
１１〜１４行目は円のレンダリングを行なう命令群である。１２行目のレンダリング位置移動命令および１３行目の円弧レンダリング命令によって、座標（１４０.０mm, １２０.０mm）を中心とし、座標（１４０.０mm, ７０.０mm）から始まる、角度３６０.０度の円がレンダリングされる。円内部は１０行目の命令により赤色で塗りつぶされ、外形線は３行目の命令により青色かつ線幅２mmでレンダリングされる。図４の＜circle＞要素および図５のレンダリング結果５０２に相当し、座標指定や長さ指定をユーザ座標系からmmに換算している。
【００５８】
１５行目は以降の塗りつぶしに使用する塗りつぶし命令で、オペランドで塗りつぶしの色を緑色、すなわち（Ｒ, Ｇ, Ｂ）＝（０.０, １.０, ０.０）に指定している。図４の＜path＞要素のfill属性に相当し、色指定を文字列表記からＲＧＢ表記に変換している。
【００５９】
１６〜２０行目は三角形のレンダリングを行なう命令群である。１７行目はレンダリング位置移動命令、１８〜１９行目は直線レンダリング命令、２０行目はパス終了命令を表わすオペランドの指定である。これにより、座標（１００.０mm,１４０.０mm）→（１５０.０mm,２３０.０mm）→（５０.０mm,２３０.０mm）→（１００.０mm,１４０.０mm）を直線で結ぶ閉パスがレンダリングされる。三角形内部は１５行目の命令により緑色で塗りつぶされ、外形線は３行目の命令により青色かつ線幅２mmでレンダリングされる。図４の＜path＞要素および図５のレンダリング結果５０３に相当し、座標指定をユーザ座標系からmmに換算するとともに、相対座標指定を絶対座標指定に変換している。
【００６０】
この中間コードのサイズは、オペコード１バイト、オペランド各２バイトとして９５バイトになる。ＳＶＧ文書ファイルのサイズ６４１バイトと比較して約１/７に縮小されているため、ファイルやメモリに保持する際のコスト、ネットワーク経由で送信する際のコストが軽減される。また、ＳＶＧ文書に対するような複雑なパーズが不要になるので、レンダリングも高速に行なうことができる。
【００６１】
［ビューワプログラムの表示・動作概要］
次に、図８〜図９を参照して、ビューワプログラム３０６の表示と動作の概要について説明する。
【００６２】
図８はビューワプログラム３０６が起動直後にクライアント１０１のディスプレイ２０５に表示したウィンドウを示す図である。８０１がウィンドウ全体を表わす。８０２がＳＶＧ文書ファイル３０２の表示領域である。８０３、８０４、８０５、８０６は表示領域８０２に表示されるＳＶＧ文書をそれぞれ上、左、下、右に移動（スクロール）するためのボタンである。
【００６３】
８０７、８０８は表示領域８０２に表示されるＳＶＧ文書をそれぞれ拡大（ズームイン）、縮小（ズームアウト）するためのボタンである。８０９はウィンドウ８０１をクローズしてビューワプログラム３０６を終了するためのボタンである。８１０は表示領域８０２に表示されているＳＶＧ文書を印刷するためのボタンである。
【００６４】
ユーザはクライアント１０１のキーボード２０６やポインティングデバイス２０７を使って８０４〜８１０のボタンを操作したり、表示領域８０２内でクリップ領域を指定したりすることができる。
【００６５】
図９は、ビューワプログラム３０６が行なう処理の、起動から終了までを表わすフローチャートを示す図である。ステップＳ９０１は開始である。ビューワプログラム３０６は、例えば、クライアントコンピュータ１０１のディスプレイ２０５に、アイコンなどとして表示される。ユーザがキーボード２０６やポインティングデバイス２０７を用いて表示されたアイコンなどをクリックすることによってビューワプログラム３０６は起動される。具体的には、外部記憶装置２０４に格納されたビューワプログラム３０６が読み出され、その一部または全部がＲＡＭ２０２に一時的に記憶され、ＣＰＵ２０１によって実行される。ステップＳ９０２は第１描画データとしてのＳＶＧ文書ファイル３０２を変換した第２描画データとしての中間コードデータ３０３を読み込む処理である。ここでは図７に示した中間コードデータを使用して説明する。以降、ここで読み込んだ中間コードデータを変数dlcで参照する。
【００６６】
ステップＳ９０３は変数の初期化処理である。変数windowはビューワプログラム３０６の表示領域８０２のサイズをピクセルで表わす。要素ｘは横方向の長さで、ここでは例として４００ピクセルである。要素ｙは縦方向の長さで、ここでは６００ピクセルである。
【００６７】
変数originは表示領域８０２の左上がＳＶＧ文書の左上原点から見てどの座標に位置するかをピクセルで表わす。要素ｘは横方向の座標値、要素ｙは縦方向の座標値で、初期値はともに０である。originが（０, ０）ならばＳＶＧ文書の左上原点を表示領域８０２の左上位置に合わせて表示し、これが初期状態である。originがたとえば（１００, １００）ならば、ＳＶＧ文書の左上原点から（１００, １００）ピクセル分だけ右下に移動した場所を表示領域８０２の左上位置に合わせて表示する。変数originを更新して表示領域８０２の再表示を行なうことで、ＳＶＧ文書の上下左右移動表示が可能になる。変数originはユーザがボタン８０３〜８０６を操作すると更新される。変数originの更新についてはステップＳ９０８で後述する。表示の上下左右移動については図１０を参照して後述する。
【００６８】
変数magは表示倍率を表わす。ＳＶＧ文書（幅Ｗ（mm）高さＨ（mm））を表示領域８０２の幅window.x（ピクセル）にぴったり表示するのに必要な倍率と、高さwindow.y（ピクセル）にぴったり表示するのに必要な倍率のうち、小さい方を初期値とする。ここではＷ＝２１０.０、window.x＝４００なので、Ｗ÷window.x＝１.９０５となる。また、Ｈ＝２９７.０、window.y＝６００なので、H÷window.y＝２.０２となる。よって、この例では、magは１.９０５で初期化される。変数magの更新についてはステップＳ９０８で後述する。倍率の変更については図１１を参照して後述する。
【００６９】
変数clipはクリップ領域をピクセルで表わす。要素ｘと要素ｙはクリップ領域の左上原点で、表示領域８０２の左上位置からの相対座標で表わす。要素ｗと要素ｈはクリップ領域の横方向と縦方向の長さである。初期値（０, ０, ４００, ６００）は表示領域８０２と同じ位置・同じ大きさになる。変数clipの更新についてはステップＳ９０８で後述する。クリップ領域の指定については図１２を参照して後述する。
【００７０】
ステップＳ９０４は、表示工程としての画面表示処理である。まず、表示領域８０２の左上位置を変数originが表わす位置に移動する。次に、中間コードのオペコードとオペランドの内容にしたがって表示領域８０２にレンダリングを行なうが、この際、各オペランドの座標値および線幅にすべてmagが表わす倍率を乗算する。実例については図１０、図１１を参照して後述する。
【００７１】
ステップＳ９０５はユーザの指示を示す入力があるまで待つ処理である。ユーザの入力を変数keyに格納する。
【００７２】
ステップＳ９０６はユーザの入力が終了ボタン８０９の操作だったかどうかを判定する処理である。終了ボタン８０９の操作であればステップＳ９１１に進んでビューワプログラム３０６を終了する。それ以外の場合はステップＳ９０７に進む。
【００７３】
ステップＳ９０７はユーザの入力が印刷ボタン８１０の操作だったかどうかを判定する処理である。印刷ボタン８１０の操作であればステップＳ９０９に進んで印刷処理を行なう。それ以外の場合はステップＳ９０８に進む。
【００７４】
ステップＳ９０８は、加工処理工程としての処理であって、ユーザの入力が上下左右移動ボタン８０３〜８０６か、拡大縮小ボタン８０７〜８０８か、あるいは領域指定だった場合の処理である。
【００７５】
ユーザの入力が上下左右移動ボタン８０３〜８０６であれば、変数originの更新を行なう。ユーザの入力が左移動ボタン８０４であれば、変数origin.xの値を２０ピクセル減算する。ユーザの入力が上移動ボタン８０５であれば、変数origin.yの値を２０ピクセル減算する。ユーザの入力が右移動ボタン８０６であれば、変数origin.xの値を２０ピクセル加算する。ユーザの入力が下移動ボタン８０５であれば、変数origin.yの値を２０ピクセル加算する。変数originを参照した上下左右移動表示については図１０を参照して後述する。
【００７６】
ユーザの入力が拡大縮小ボタン８０７〜８０８であれば、変数magの更新を行なう。ユーザの入力が拡大ボタン８０７であれば、変数magの値を１.５倍に乗算する。ユーザの入力が縮小ボタン８０８であれば、変数magの値を１/１.５に除算する。変数magを参照した拡大縮小表示については図１１を参照して後述する。
【００７７】
ユーザの入力が領域指定であれば、ユーザの指定した領域を変数clipに格納する。領域指定については図１２を参照して後述する。
【００７８】
ステップＳ９０９はユーザが印刷を指示した場合に、クリップ領域を中間コードの座標値に換算する処理である。まず、現在の変数clipの左上座標clip.x、clip.yは表示領域８０２の左上位置からの相対座標であることから、表示領域８０２の左上位置座標値を示すoriginの値を加算する。結果の値はピクセルなので、これをmmに換算するために、現在の表示倍率magで除算する。次に、現在の変数clipのクリップ領域の幅と高さclip.w、clip.hの値はピクセルなので、これもmagで除算してmmに換算する。最後に、magをmagの初期値で除算して、初期値からの倍率に換算する。このようにプリンタに対して送信するための変数mag、clipは、加工処理を表わす加工処理データに相当する。
【００７９】
ステップＳ９１０はプリンタ１０２のコントローラ３０７に印刷データを送信する処理である。第２描画データである中間コードデータ３０３として変数dlcの内容、加工処理データである表示印刷情報３０４として変数magと変数clipの内容を送信する。プリンタ側の印刷処理については図１３〜図１４を参照して後述する。ステップＳ９１１は終了処理である。
［ビューワプログラムの上下左右移動表示］
次に、図１０を参照して、ビューワプログラムの上下左右移動表示について説明する。図１０は、図９で用いた数値（ウィンドウサイズ４００×６００など）を利用して具体的に例示する。また、図９で示したように変数magの値は、初期値１.９０５のまま、ユーザが上下左右移動ボタン８０３〜８０６を操作して変数originが更新されたものとする。
【００８０】
１００５、１００９、１０１３はビューワプログラム３０６の表示領域８０２の位置およびサイズを示す。１００４、１００８、１０１２は表示する中間コードデータ３０３の位置およびサイズを示す。１００１と１００２は中間コードデータ１００４の左上原点を（０, ０）とする座標軸を表わす。
【００８１】
まず、図１０（ａ）で１００３に示すように変数originの値が初期値（０, ０）のままの場合を考える。この時、中間コードデータ１００４の左上原点と表示領域１００５の左上位置は一致している。また、変数magの初期値１.９０５はステップＳ９０３で中間コードデータの幅を表示領域の幅にぴったり表示するのに必要な倍率が選択されたものである。したがって、中間コードデータ１００４のすべての座標値と線幅に変数magの値を乗算すると、中間コードデータ１００４の横幅が表示領域１００５とちょうど同じになるようにmmからピクセルへの換算が行なわれることになる。以上により、ステップＳ９０４で中間コードデータと表示領域の位置・サイズは１００４と１００５に示すように調整される。この位置・サイズで中間コードデータ１００４をレンダリングし、表示領域１００５でクリップされる結果、ビューワプログラムのウィンドウ８０１における表示は図１０（ｂ）の１００６に示すようになる。
【００８２】
次に、ユーザが左移動ボタン８０４を５回操作した場合を考える。ステップＳ９０８の処理により、変数originの値は図１０（ｃ）の１００７に示すように（−１００, ０）になる。この時、表示領域１００９の左上位置は中間コードデータ１００８の左上原点から見てoriginの値に等しい座標（−１００, ０）に位置する。また、変数magの値は初期値１.９０５のままである。以上により、ステップＳ９０４で中間コードデータと表示領域の位置・サイズは１００８と１００９に示すように調整される。この位置・サイズで中間コードデータ１００８をレンダリングし、表示領域１００９でクリップされる結果、ビューワプログラムのウィンドウ８０１における表示は図１０（ｄ）の１０１０に示すようになる。
【００８３】
次に、ユーザがさらに下移動ボタン８０５を８回操作した場合を考える。ステップＳ９０８の処理により、変数originの値は図１０（ｅ）の１０１１に示すように（−１００, −１６０）になる。この時、表示領域１００９の左上位置は中間コードデータ１０１２の左上原点から見て変数originの値に等しい座標に位置する。また、変数magの値は初期値１.９０５のままである。以上により、ステップＳ９０４で中間コードデータと表示領域の位置・サイズは１０１２と１０１３に示すように調整される。この位置・サイズで中間コード１０１２をレンダリングし、表示領域１０１３でクリップされる結果、ビューワプログラムのウィンドウ８０１における表示は図１０（ｆ）の１０１４に示すようになる。ユーザが右移動ボタン８０６や上移動ボタン８０３を操作した場合の表示動作も同様である。
【００８４】
［ビューワプログラムの拡大縮小表示］
次に、図１１を参照して、ビューワプログラムの拡大縮小表示について説明する。図１１は、変数originの値がそれぞれ（０, ０）と（−１００, −１６０）である場合に、ユーザが拡大ボタン８０７を一回操作して変数magの値が初期値の１.５倍（１.９０５×１.５＝２.８５７）になった場合の表示を示す図である。
【００８５】
図１１において、１１０５、１１０９は、ビューワプログラム３０６の表示領域８０２の位置およびサイズを示す。１１０４、１１０８は、表示する中間コードデータ３０３の位置およびサイズを示す。１１０１と１１０２は中間コードデータ１１０４の左上原点を（０, ０）とする座標軸を表わす。
【００８６】
まず、図１１（ａ）の１１０３に示すように変数originの値が初期値のまま（０, ０）の場合を考える。この時、中間コードデータ１１０４の左上原点と表示領域１１０５の左上位置は一致している。また、変数magの値は初期値の１.５倍なので、中間コードデータ１００４のすべての座標値と線幅に変数magの値を乗算すると、中間コードデータ１００４の横幅が表示領域１００５のちょうど１.５倍になるようにmmからピクセルへの換算が行なわれる。以上により、ステップＳ９０４で中間コードデータと表示領域の位置・サイズは１１０４と１１０５に示すように調整される。この位置・サイズで中間コードデータ１１０４をレンダリングし、表示領域１１０５でクリップされる結果、ビューワプログラムのウィンドウ８０１における表示は図１１（ｂ）の１１０６に示すようになる。
【００８７】
次に、図１１（ｃ）の１１０７に示すように変数originが（−１００, −１６０）になった場合を考える。この時、表示領域１１０９の左上位置は中間コードデータ１１０８の左上原点から見てoriginの値に等しい座標に位置する。また、変数magの値は初期値の１.５倍である。以上により、ステップＳ９０４で中間コードデータと表示領域の位置・サイズは１１０８と１１０９に示すように調整される。この位置・サイズで中間コードデータ１１０８をレンダリングし、表示領域１１０９でクリップされる結果、ビューワプログラムのウィンドウ８０１における表示は図１１（ｄ）の１１１０に示すようになる。縮小表示についても同様である。
【００８８】
［ビューワプログラムの領域選択］
次に、図１２を参照して、ビューワプログラムの領域選択について説明する。図１２は、変数originの値が（２４０, ２４０）、変数magの値が初期値の２倍（１.９０５×２＝３.８１０）である場合の表示を示す図である。
【００８９】
図１２（ａ）において、１２０５はビューワプログラム３０６の表示領域８０２の位置およびサイズを示す。１２０４は表示する中間コードデータ３０３の位置およびサイズを示す。１２０１と１２０２は中間コードデータ１２０４の左上原点を（０, ０）とする座標軸を表わす。ステップＳ９０４で中間コードデータと表示領域の位置・サイズは１２０４と１２０５に示すように調整される。この位置・サイズで中間コードデータ１２０４をレンダリングし、表示領域１２０５でクリップされる結果、ビューワプログラムのウィンドウ８０１における表示は図１２（ｂ）の１２０８に示すようになる。ユーザはキーボード２０６やポインティングデバイス２０７を使って、表示領域１２０８内の任意の矩形領域を選択することができる。選択した様子を１２０６に示す。この選択領域はステップＳ９０８で変数clipに格納される。ここではユーザがclip＝（１０, ２０, ３８０, ５５０）に相当する領域を選択したとする。
【００９０】
ユーザがこの領域選択を行なった状態で印刷を指示すると、ステップＳ９０９で単位系の換算が行なわれる。ここではorigin＝（２４０, ２４０）（単位はピクセル）、mag＝３.８１０、clip＝（１０, ２０, ３８０, ５５０）（単位はピクセル）である。これから、clip.x＝（２４０＋１０）÷３.８１０＝６５.６１７、clip.y＝（２４０＋２０）÷３.８１０＝６８.２４１、clip.w＝３８０÷３.８１０＝９９.７３８、clip.h＝５５０÷３.８１０＝１４４.３５７となる。つまり、clip＝（６５.６１７, ６８.２４１, ９９.７３８, １４４.３５７）（単位はmm）となる。また、mag＝３.８１０÷１.９０５＝２となる。したがって、ステップＳ９１０で、中間コード３０３として図７に示すコードと、表示印刷情報３０４としてmag＝２及びclip＝（６５.６１７, ６８.２４１, ９９.７３８, １４４.３５７）がプリンタコントローラ３０７に送信される。
【００９１】
［印刷］
最後に、図１３〜図１４を参照して、プリンタコントローラ３０７による印刷について説明する。図１３はプリンタコントローラ３０７の動作を表わすフローチャートを示す図である。
【００９２】
ステップＳ１３０１は開始である。ステップＳ１３０２は変数の初期化処理である。ビューワプログラム３０６から受信した中間コードデータ３０８と表示印刷情報３０９を参照する変数として、中間コードデータ３０８を変数dlcで参照する。また、表示印刷情報３０９のうち倍率に関する情報を変数magで参照し、領域選択に関する情報を変数clipで参照する。
【００９３】
ステップＳ１３０３は中間コードデータdlcのレンダリング処理である。すべての座標値・線幅に変数magの値を乗じてレンダリングする。ステップＳ１３０４はレンダリング結果のクリップ処理である。変数clipの値にmagの値を乗じた位置・サイズでクリップを行なう。ステップＳ１３０５は出力処理である。レンダリング結果にしたがってプリンタエンジン２１２を制御し、出力を行なう。ステップＳ１３０６は終了処理である。
【００９４】
図１４は、図７に示す中間コードデータと、図１２に示した倍率mag＝２および領域選択clip＝（６５.６１７,６８.２４１,９９.７３８,１４４.３５７）の表示印刷情報を受信した場合のレンダリングおよびクリップの様子を示す図である。
【００９５】
図１４（ａ）の１４０１はステップＳ１３０３で中間コードデータ３０８をレンダリングした位置およびサイズを示す。変数magの値が乗算されているので、横方向は４２０.０mm、縦方向は５９４.０mmになる。１４０２は中間コード３０８の用紙サイズを図示したものである。１４０３は中間コードデータ３０８の用紙（２１０.０mm, ２９７.０mm）を中間コードデータ３０８の左上原点からclip情報の左上座標（６５.６１７mm, ６８.２４１mm）分だけ移動させた位置およびサイズを示す。
【００９６】
１４０３はステップＳ１３０４でレンダリング結果をクリップした位置およびサイズを示す。変数clipに変数magの値が乗算されているので、位置は中間コードデータの左上から（１３１.２３４mm, １３６.４８２mm）、大きさは（１３６.４８２mm, ２８８.７１４mm）になる。ステップＳ１３０５で出力を行なった結果、図１４（ｂ）の１４０４に示すサイズの用紙に１４０５に示す出力結果を得る。
【００９７】
［実施形態の効果］
以上により、容易かつ少ない処理負荷で、ディスプレイ表示時に行なった移動・拡大縮小・領域選択処理を、印刷結果に反映させることができる。印刷指示の際にユーザがディスプレイ上で印刷領域を選択すれば、その選択に応じてクリップされた状態で印刷できる。
【００９８】
ＰＤＬ文書をそのまま使用して表示・印刷する場合と比べ、画像変形処理ごとにＰＤＬ文書を書き換えたり、パーズ・レンダリングしたりする必要がないので、処理速度が向上する。特に、ユーザの指示によりリアルタイムで移動・拡大縮小表示を行なう際に効果がある。
【００９９】
また、中間コードを使用することで、ＰＤＬ文書をプリンタに送信する必要がなく、もともとのＰＤＬ文書を書き換えることなく保持しておくことができる。プリンタに送信するデータのサイズも小さく、パーズも容易なので、送信速度も向上する。さらに、中間コードを使用することで、複数種類のＰＤＬ文書が対象であっても、同一のビューワプログラムで表示・印刷が可能である。
【０１００】
（他の実施の形態）
本実施の形態では中間コードデータと表示印刷情報を別途プリンタに送信したが、これ以外に、クライアントＰＣ上で表示印刷情報を用いて中間コードデータそのものを書き換え、プリンタには中間コードデータのみを送信する実施の形態も考えられる。この場合、まず表示印刷情報のうちの倍率を中間コードデータのすべての座標値と線幅に乗算する。さらに、表示印刷情報のうち領域選択に関する情報をオペコード９（ニーモニックClip）命令として中間コードのオペコード９（ニーモニックPageStart）命令の直後に挿入する。前述の実施の形態で使用した中間コードデータ（図７）と表示印刷情報（図１２）にしたがって中間コードデータを書き換えた例を図１５に示す。
【０１０１】
この場合、変数clipや変数magを用いた計算処理を、クライアント側で行なうので、プリンタ側の処理負担が軽減される。クライアント側の処理能力に対してプリンタ側の処理能力が低い場合には、全体として印刷速度が向上するという効果がある。
【０１０２】
本実施の形態ではＰＤＬとしてＳＶＧ１.１を使用したが、もちろんこれに限るものではなく、ＳＶＧのその他のバージョン、あるいは中間コードに変換可能なものであれば任意のＰＤＬを使用することが可能である。
【０１０３】
図１においてＰＣとプリンタはネットワーク接続されるとしたが、これ以外の接続形態であってもよく、たとえばＰＣとプリンタが直接接続されていても、本発明の実施を妨げるものではない。
【０１０４】
図２でプログラムはＲＡＭ２０２に格納されるとしたが、これに限るものではない。他の実施の形態においてはプログラムを外部記憶装置２０４から読み込んで実行するようにしてもよいし、ネットワークインタフェース２０３を介して受信して実行するようにしてもよい。また、図２には示していないが、ＲＯＭ等の読み出し専用の内部記憶部から読み込んで実行するようにしてもよい。また、キーボード２０６やポインティングデバイス２０７の代わりに、あるいはそれらに加えて、音声入力等の他の入力装置を備えることもできる。また、ディスプレイ２０５、キーボード２０６、ポインティングデバイス２０７を他のコンピュータ装置と共有する場合も考えられる。
【０１０５】
図３で中間コードデータ３０３、３０８および表示印刷情報３０４、３０９はＲＡＭに保持したが、これ以外に、ファイルやデータベースその他の永続記憶に保存してもよい。また、同じＰＤＬ文書に対する中間コードデータはキャッシュしておいて、次回以降の処理に利用する形態も考えられる。
【０１０６】
図６において中間コードの仕様を示したが、使用可能な中間コードはこの仕様に限定されるものではない。たとえば単位系はmm以外の任意の単位系またはその組み合わせであってもよい。パスにはベジエ曲線、楕円弧、その他の数学的に表現可能な任意のパスを記述できるようにしてもよい。Fillは単色ではなくブラシ、イメージ、グラデーション等の複雑な塗りを行なえるようにしてもよい。色はＲＧＢ以外にアルファ値の追加、カラープロファイルによる指定、デバイスカラーによる指定、特色の指定なども行なえるようにしてもよい。また、オペコードとして１バイト整数、オペランドとして２バイト浮動小数点数を使うことも単なる一例であって、他のエンコード方法を使用しても構わない。
【０１０７】
本実施の形態では１ページの表示・印刷を行なう例を示したが、ＰＤＬが複数ページに対応するものであれば、中間コード、ビューワプログラム、コントローラをそれに対応させてもよい。
【０１０８】
また、本実施の形態では中間コードコンバータ３０５は、ビューワプログラム３０６を起動する前の任意の時点でユーザが実行し、ＳＶＧ文書ファイル３０２を中間コードデータ３０３に変換した。しかしながら、ビューワプログラム３０６がステップＳ９０２でＳＶＧ文書ファイルを読み込む仕様とし、ビューワプログラム３０６が中間コードコンバータ３０５を呼び出して中間コードデータ３０３を生成することもできる。
【０１０９】
図９において、一回あたりの移動量は必ずしも２０ピクセルでなくてもよく、ユーザがあらかじめ指定できるようにしてもいい。ShiftキーやCtrlキーを併用して上下左右移動ボタンを操作することで、移動量がたとえば５倍になったりするユーザインタフェース仕様も考えられる。同様に、一回あたりの倍率変更は１.５倍単位でなくてもよい。ウィンドウの初期サイズももちろん４００ピクセル×６００ピクセルに限定されるものではない。
【０１１０】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成され得る。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。
【０１１１】
従って、本発明の機能処理をコンピュータで実現するために、そのコンピュータにインストールされるプログラムコード自体およびそのプログラムを格納した記憶媒体も本発明を構成することになる。つまり、本発明の特許請求の範囲には、本発明の機能処理を実現するためのコンピュータプログラム自体、およびそのプログラムを格納した記憶媒体も含まれる。
【０１１２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１１３】
プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク等がある。また、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVD（DVD-ROM、DVD-R）などがある。
【０１１４】
その他、ブラウザを用いてインターネットのホームページに接続し、そのホームページからプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWebサーバも、本発明の請求の範囲に含まれるものである。
【０１１５】
また、プログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布してもよい。所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１１６】
また、コンピュータが、読み出したプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【０１１７】
【図１】本発明の実施形態に係る画像処理システムの全体構成を示す図である。
【図２Ａ】本発明に係る画像処理装置を実現可能なコンピュータの構成を示す図である。
【図２Ｂ】本発明の実施形態に係るプリンタ装置の構成を示す図である。
【図３】本発明の実施形態に係る画像処理システムの機能構成を示すブロック図である。
【図４】ＳＶＧ文書ファイルの例を示す図である。
【図５】ＳＶＧ文書ファイルのレンダリング結果の例を示す図である。
【図６】中間コード仕様の例を示す図である。
【図７】ＳＶＧ文書ファイルを変換した中間コードのダンプ表示の例を示す図である。
【図８】ビューワプログラムの表示画面の例を示す図である。
【図９】ビューワプログラムの動作を示すフローチャートである。
【図１０】ビューワプログラムの上下左右移動表示について説明する図である。
【図１１】ビューワプログラムの拡大表示について説明する図である。
【図１２】ビューワプログラムの領域指定について説明する図である。
【図１３】プリンタコントローラの動作を示すフローチャートである。
【図１４】印刷結果の例を示す図である。
【図１５】中間コードを直接変換した例について示す図である。
【符号の説明】
【０１１８】
１０１  クライアント
１０２  サーバ
１０３  ネットワーク
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ネットワークインタフェース
２０４  外部記憶装置
２０５  ディスプレイ
２０６  キーボード
２０７  ポインティングデバイス
２０８  ＣＰＵ
２０９  ＲＡＭ
２１０  ネットワークインタフェース
２１１  外部記憶装置
２１２  プリンタエンジン
【図１】
2008027396.tif 000003
【図２Ａ】
2008027396.tif 000004
【図２Ｂ】
2008027396.tif 000005
【図３】
2008027396.tif 000006
【図４】
2008027396.tif 000007
【図５】
2008027396.tif 000008
【図６】
2008027396.tif 000009
【図７】
2008027396.tif 000010
【図８】
2008027396.tif 000011
【図９】
2008027396.tif 000012
【図１０】
2008027396.tif 000013
【図１１】
2008027396.tif 000014
【図１２】
2008027396.tif 000015
【図１３】
2008027396.tif 000016
【図１４】
2008027396.tif 000017
【図１５】
2008027396.tif 000018