下図のようにMicrosoft XPS Document Writerを利用して、WEB越しの印刷みたいなことをさせてみた。

【実行環境】

[WEBサーバ側]
OS:Windows Server  2008 R2 Standard   Sp1
uniPaas RichClient Server V1p
.net  Framework 3.5  ,4.0 など

[クライアント側]
OS:Windows7 やXP
.net  Framework 3.5  ,4.0 など

【症 状】

いい感じにできたと思っていたら、クライアントの印刷速度が異常に遅いことに気が付いた。いろいろ実験してみると、罫線などのグラフィック要素が入ると通常の10以上倍遅い感じがする。(測定はしてないが、到底我慢できないぐらい遅い)

【調 査】

最初は、XPSファイルを印刷している自作の.NET WPFアプリケーションが悪いと考えていた。
というのもマイクロソフトが提供している標準のXPSビュアーで印刷すると十分高速であるからだ。
私が組んだアプリケーションでは、XPSファイルの印刷には.netのDocumentViewerコンポーネントを使用している。ところが、DocumentViewerからの印刷機能はそもそもDocumentViewe自身に組み込まれている機能である。あまり工夫の余地はない。(実はXpsDocumentWriterクラスなどを使っていろいろやってみたが効果なし)

ということは、マイクロソフトが提供しているXPSビュアーは、.netのDocumentViewerコンポーネントやXpsDocumentWriterクラスを使ってないのか?ずるいぞマイクロソフト。

まぁぼやいても仕方ないので、Google先生にいろいろ聞いてみた・・・・
印刷速度が遅いと言っている例は結構あったが、解決策はこれといってない・・・・

【解決策】

結果的にはKB2462317のHotFixを当てると高速に印刷できるようになった。

http://support.microsoft.com/kb/2462317/ja
HotFixなので扱いには注意が必要だが、ようするに、Microsoft Xps document Writerが作成したXPSファイルが最適化されてないということみたいです。Microsoft Xps document Writerのプリンタードライバのアップデートみたいな感じで正式に出してくれればいいのに・・・・