XPS のさまざまな印刷方法
Windows Vista では、新しい 「XPS プリントパス」(従来は GDI プリントパス)という次世代のプリント アーキテクチャを採用しました。フィルタベースの XPSDrv プリントドライバが、フィルタ パイプラインの中にフィルタとして組み込まれます。Windows Presentation Foundation (WPF) アプリケーションは、印刷時に WPF Print API を使用して、XPS Spool File を作成し、Print Spooler にスプールします。Print Spooler へのスプール処理が完了すると、Print Spooler はシグナルを立て、Filter Pipeline Manger が、Filter Pipeline Configuration File 内の情報を使用して Filter Pipeline を構築します。Filter Pipeline の初期化が完了すると、Filter Pipeline Manager は、最初のフィルタに対し、XPS Spool File の読み込みを指令します。その後、パイプライン内のフィルターを Inter-filter Communicator (IFC) を経由しながら受け流し、最終的に印刷デバイスで処理可能なページ記述形式(PDL) もしくはラスタ形式に変換します。もし従来の GDI プリンタドライバしか利用できない場合には、XPS-to-GDI コンバージョン パスを通して EMF Spool File 形式に変換し、従来の GDI の仕組みを通して印刷させることも可能ではあるが、XPS をネイティブ(他の PDL 形式に変換せずに)処理することは、XPS の利益を最大化する上で重要です。
XPS を処理する方式を、以下に幾つか紹介します。
1.ホストベース型
フィルタパイプライン内の XPSDrv プリントドライバ内部に XPS RIP (Raster Image Processor) を搭載し、印刷デバイスで直接処理できるラスタ形式に変換します。XPS 形式は、従来の EMF Spool File 形式に比較して、重い形式なので、特にパフォーマンスの観点で高度にオプティマイズされた XPS RIP が求められます。
2.コンバージョン型
フィルタパイプライン内の XPSDrv プリントドライバ内部で、XPS Spool File を従来の印刷デバイスがサポートしている PCL や PostScript といったページ記述言語(PDL) に変換します。この場合、従来の PDL は、XPS よりも通常機能が低いので、品質や忠実性をいかに落とさないかが重要です。例えば透過をサポートしていない PDL の場合には、透過レイヤーをフラット化する処理を XPSDrv 内部で行う必要があり、XPSDrv 内部で XPS の RIP 処理が必要となります。この方式は、ページをすべてラスターイメージ形式に変換するよりも、開発の難易度は高いと思われます。その意味では、PDL に精通したエンジニアのみが開発可能である。
3.組み込み型
XPSDrv では、プリントチケットの処理のみを行い、XPS ファイルを印刷デバイスに送り、デバイス側に搭載された XPS RIP にて解釈しラスタライズさせます。XPS 形式は、従来の PostScript や PCL に比較し、処理が重い形式なので、パフォーマンスの観点で高度にオプティマイズされていることが特に重要です。また透過をサポートする為に、多くのメモリーリソースが必要となる。この組み込み型では、ディスクレス対応、リアルタイム OS 対応、RISC プロセッサーへの対応が求められます。通常、組み込み型では、複数の PDL に対応しているため、複数の PDL 形式にスケーラブルに対応できることが要求される。
4.スケーラブル型
これは、スケーラブル コンサンプションを使用する方式である。いろいろな履行シナリオが考えられるが、組み込み型コントローラのハードウエア コストを最小化できる良いアイディアである。例えば透過の処理を、印刷デバイスで行わなくて済むように、上流工程の XPSDrv プリンタドライバ内で前処理を行うことが考えられる。
5.サーバー型
これは、プリントサーバー内で XPS ファイルを処理し、印刷デバイスで印刷できるラスタ形式に変換する RIP 処理をサーバー上で行う方式である。XPS 形式だけでなく、PostScript や PDF に対応することで、プリント フォー ペイ市場に最適なソリューションとなる。なぜなら近い将来、Mac ユーザーは、PDF (PDF/Xを含む)で入稿し、Windows ユーザーは、XPS 形式で入稿するようになると予想されるからである。
この様に、多くのシナリオで XPS の印刷を履行できるが、高速な XPS RIP を使用することと、メモリーや CPU パワーをどれだけ削減できるかが、プリンタメーカーの大きなチャレンジだ。また、ネイティブに処理することで、XPS の利益を最大化できる。
参考資料: Global Graphics の各種資料 (http://www.globalgraphics.com)
Microsoft の XPSDrv Configuration Module Implementation 資料
Microsoft の XPS XPSDrv Filter Pipeline 資料
コメント