第6回 RichTextBox内の各オブジェクトを印刷する

オブジェクトを指定して、必要個所を印刷する

Silverlight 4では、印刷機能がサポートされました。しかも、任意のオブジェクトを指定しての印刷が可能となっています。Silverlightアプリケーションの画面を印刷したい場合、Silverlight 3以前のように、ブラウザの印刷機能を使用する必要はありません。

第6回では、この印刷機能を使ったサンプルを紹介します。

このサンプルのプロジェクト・ファイルは、こちらからダウンロードできます。

今回実装する処理は、RichTextBoxコントロール全体を印刷したり、その中にレイアウトしたMediaElementやDataGridコントロールを指定して部分的に印刷するというものです。

実行画面には、「全て印刷」「動画印刷」「表印刷」の3つのボタンをレイアウトしておき、印刷範囲を指定できるようにします(図1)。

DataGridの表のデータは、プリンタに「Microsoft XPS Document Writer」を指定して書き出しています(図2)。[印刷(P)]ボタンをクリックすると、任意のフォルダに「ファイル名を付けて保存」することができます(図3)。保存したXPS形式のファイルは、XPSビューアで閲覧することができ(図4)、デジタル署名や印刷や検索が可能です。

もちろん、XPS形式で出力するだけではなく、プリンタを指定しての出力も可能ですので、試してみてください。

図1: 「全て印刷」「動画印刷」「表印刷」の3つのボタンで、印刷対象を設定する

 

図2: 出力方法として、ここではMicrosoft XPS Document Writerを指定している

 

図3: [印刷(P)]ボタンをクリックして「ファイル名を付けて保存」する。デスクトップ上にDataGrid.xpsという名前で保存している

 

図4: 保存したxpsファイルをダブル・クリックすると、XPSビューアが起動して閲覧できる。全て印刷した結果(上)、動画の印刷結果(中)、表の印刷結果(下)

 

RichTextBoxコントロールのレイアウト

前回までのサンプル作成時と同様の手順で、新規Silverlight 4プロジェクト(プロジェクト名は「SL4_RichTextBox_Print」)を作成してください。プロジェクト依存関係も設定してください。

UserControlのPropertiesペインの[Layout]を展開して、Widthに800、Heightに600を指定します。

Toolboxからタイトルを表示させるTextBlockと、Buttonを1個レイアウトしてください。ButtonのWidthやHeightや文字サイズを指定し、Contentに「全て印刷」と入力します。このButtonをコピーして、2回ペーストし、同じスタイルのButtonを増やします。それらのContentは、それぞれ「動画印刷」「表印刷」としておきます。

次に、RichTextBoxコントロールをレイアウトし、プレス&ドラッグして任意のサイズに広げます(図5)。IsReadOnlyプロパティにチェックを付け、編集を不可にしておきます。この設定をしなければ、RichTextBox内にレイアウトしたHyperlinkコントロールを選択してクリックすることができません。

図5: TextBlock、3個のButton、RichTextBoxをレイアウトする

 

この<RichTextBox>要素内には、<Paragraph>、<Hyperlink>、<InlineUIContainer> 、<Linebreak>、<Run>、<Span> などの要素を記述することができます。
  <Paragraph>要素はブロック・レベルの内容を記述する際に使用します。
  <InlineUIContainer>要素内にはUIElementを記述することができます。
  <Linebreak>は改行を表します。
  <Run> は書式付き、または書式なしのテキストに用いられます。書式を設定する場合は、プロパティの値を設定します。<Span>は、他のインライン・コンテンツ要素をグループ化します。
今回は、これらの要素のうちのいくつかを使ってみましょう。

リスト1のように、<RichTextBox>要素内に<Paragraph>要素を追加します。その中に記述したテキストの一部に、<Run>要素で書式を設定し、<Hyperlink>要素を記述して、NavigateUriプロパティにリンク先を指定します。TragetNameプロパティには_blankを指定し、新規ウインドウが開くように指定します。

リスト1: RichTextBox内に追加するスタイル付きのサンプル・データ

<RichTextBox HorizontalAlignment="Left" Margin="20,60,0,0" Name="RichTextBox1" VerticalAlignment="Top" Height="514" Width="750" IsReadOnly="True">
<Paragraph>このサンプルの実行には、
  <Hyperlink NavigateUri="http://www.microsoft.com/japan/silverlight/default.aspx "
  TargetName="_blank" >Silverlight 4 プラグイン</Hyperlink> が必要です。
</Paragraph>
<Paragraph>Silverlight 4では、任意のオブジェクトを指定しての印刷が可能です。
  <LineBreak/>
  印刷する場合は、
  <Run Foreground="Blue" FontSize="12" FontWeight="Bold">ビデオを一時停止</Run>してください。
</Paragraph>
</RichTextBox>

著者について

PROJECT KySS

PROJECT KySS

四国の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/

この記事を評価する

4.166665
平均: 4.2 (投票数: 6)
あなたの評価: なし

IT Leaders 毎月無料でお届けいたします

本誌は、読者登録いただくことにより、毎月無料でみなさまのお手元まで直接お届けいたします(書店などでは販売していません)。

企業の情報システムを担当する方々や事業部門のIT担当の方々、およびIT関連プロフェッショナルの方々を対象に、実践的に役立つ情報を掲載、幅広く業務にご活用いただけます。

IT Leaders新規購読お申し込みはこちらから