Silverlight 4の印刷機能:RichTextBox編

2010年8月4日(水)
PROJECT KySS

RichTextBoxに表示させたデータを、複数ページに印刷する

今回も前回同様Silverlight 4でサポートされた印刷機能で、複数ページにまたがって印刷する方法を紹介します。今回はRichTextBoxに表示された書式付のデータを複数ページに印刷してみましょう。

実装する機能の動作は次の通りです。

まず、RichTextBoxに表示されているデータ(図1)の、上方にレイアウトされている[印刷]ボタンをクリックすると、書式付きデータが、複数ページに渡って印刷されるものです。このサンプルでは、Microsoft XPS Document Writerを選択し、XPSファイルに書き出しています(図2)。

※今回使用するデータは、青空文庫から入手した、著作権の消滅した、太宰治原作の「斜陽」の小説の一部です。

図1: RichTextBoxコントロールに書式付データが表示されている

図2: XPSファイルに、複数ページに渡ってデータが書き出されている

サンプル・ファイルはこちらからダウンロードできます。

※注意:「完了」のメッセージを確認してから、XPSファイルを開いてください。もし、いつまでたっても「完了」のメッセージが表示されない場合は、一度デバッグを終了して、VS2010メニューの「ビルド(B) > ソリューションのクリーン(C)」を実行してから、再度デバッグを実行してみてください。

新規プロジェクトの作成と依存関係の設定

早速サンプルを作っていきましょう。

VS 2010のメニューから[ファイル(F) > 新規作成(N) > プロジェクト(P)]を選択します。本稿では開発言語にVisual Basicを用います。次に、「Silverlight アプリケーション」を選択して、「名前(N)」に任意のプロジェクト名を指定します。ここでは「SL4_TextMultiPrint」という名前を付けています。

ソリューションエクスプローラ内のプロジェクト名を選択して、マウスの右クリックで表示されるショートカットメニューから、「プロジェクト依存関係(S)」の設定も忘れないようにしてください。

VS 2010のデザイン画面上で、コントロールをレイアウトする

UserControlのWidthに800、Heightに600を指定してデザイン領域を広くしておきます。今回使うコントロールは、アプリケーションのタイトルを表示するためのTextBlockコントロール、印刷用のButtonコントロール、データの一覧を表示するRichTextBoxコントロールの3つです。

TextBlock、Button、RichTextBoxコントロールを、デザイン画面上にドラッグ&ドロップします(図3)。RichTextBoxコントロールがツールバーに登録されていない場合は、第1回を参考にして登録してください。

図3: 今回使う3つのコントロールを、デザイン画面上にドラッグ&ドロップする

コントロールをレイアウトできたら、[プロパティ]内の[共通]、[レイアウト]、[ブラシ]、[テキスト]等を展開して表示される各プロパティを設定して、デザインを整えます。TextBlockコントロールのText、Width、Height、Textのサイズ、ButtonコントロールのContentプロパティを設定しておきましょう。図4のようになります。

図4: 各コントロールのプロパティを設定した

これによって書き出されるXAMLコードは省略します。

ソリューションエクスプローラからSL4_TextMultiPrintを選択し、マウスの右クリックで表示されるメニューから、「追加(D) > 既存の項目(G)」と選択して、XML文書ファイル(リスト1)を追加します。また、XMLデータはLINQ to XMLで処理するため、「プロジェクト(P) > 参照の追加(F)」からSystem.Xml.Linqを追加しておきます。

ダウンロード・ファイルには、XML文書ファイルは追加済みです。

リスト1 青空文庫の太宰治原作「斜陽」のXML文書ファイル(syayou.xml)

四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています