ページ

2009年7月27日月曜日

[Silverlight] Silverlight 3 で表示している内容を印刷する

"Printing" in Silverlight 3 with WriteableBitmap より
これはすごいな。

Silverlight で表示している内容のスナップショットを印刷する方法が紹介されています。
ブラウザの印刷機能を使えば Silverlight で表示している内容も含めて印刷してくれると思いますが、ここで紹介されているのはまったく別の方法です。

まず、WriteableBitmap クラスを使って Canvas をビットマップ化します。
(WriteableBitmap には UIElement を渡せるので Canvas でなくても何でもいいです)

続いて Joe Stegman 氏の PNG encoder の EditableImage クラスを使って上記のビットマップを PNG にして、そのバイト配列を Base64 化した文字列として取り出します。

この Base64 化した PNG 文字列を、あらかじめ HTML 上に用意してある <input type=”hidden”> な項目の value としてセットしてやり、サブミット (PostBack) してやります。

あとは、これをサーバで受け取って、PNG を組み込んだ PDF を作るなりなんなりしてレスポンスを返してやれば OK です。

なるほどなぁ。
実にすばらしい。


0 件のコメント:

コメントを投稿