作成したXPSドキュメントの印刷が異常に遅い
下図のように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のプリンタードライバのアップデートみたいな感じで正式に出してくれればいいのに・・・・