段落の作成とファイルの読み出し処理
今度は段落を設定し、そこにファイルから読み込んだ文字列を流し込むようにします。
段落を設定する
段落の作成は、RenderParagraphクラスを使用して作成します。段落の中には複数のスタイル、インライン画像、およびハイパーリンクを使って描画される複数のテキストフラグメントを組み込むことができます。
まず、RenderParagraphクラスのコンストラクタでオブジェクトを作成し、StreamReaderクラスを使ってテキストファイルから文字列を読み込み、変数に格納します。
次に、その文字列をAddTextメソッドで記述していきます。これは、RenderParagraphオブジェクト内のコンテンツを表すParagraphObjectCollectionオブジェクトを取得し、そこにテキストを追加するという形をとります。そして、最後に作成した段落をドキュメントに追加します。
' ----- 段落 para を作成 ----------------------------------- Dim para As New RenderParagraph() 'ファイルから文字列を読み込む Dim fname As String = Application.StartupPath & "\sample.txt" Dim data As String Try Dim sr As StreamReader = New StreamReader(fname, System.Text.Encoding.Default) Do data = sr.ReadLine() para.Content.AddText(data) Loop Until data Is Nothing sr.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try ' 段落をドキュメントに追加 C1PrintDocument1.Body.Children.Add(para)
// ----- 段落 para を作成 ----------------------------------- RenderParagraph para = new RenderParagraph(); //ファイルから文字列を読み込む String fname = Application.StartupPath + "/sample.txt"; String data=""; try { StreamReader sr = new StreamReader(fname, System.Text.Encoding.Default); while(data != null) { data = sr.ReadLine(); para.Content.AddText(data); } sr.Close(); }catch(Exception ex) { MessageBox.Show(ex.Message); } // 段落をドキュメントに追加 c1PrintDocument1.Body.Children.Add(para);
もう1つブロックと段落を追加する
もう1つブロックと段落を追加します。今度は、「sample2.txt」の中身を取り出して整形文書にします。作成方法は今までのものとまったく同じで、一部ファイル名と変数名が違うだけです。
'---- 3番目の段落ブロック ------------------------------------ '見出しの設定 C1PrintDocument1.StartDoc() C1PrintDocument1.RenderInlineText(" ") C1PrintDocument1.RenderInlineText(" ") C1PrintDocument1.RenderInlineText("■コンポーネントのインストール", _ New Font("MSゴシック", 14, FontStyle.Bold), Color.DarkCyan) C1PrintDocument1.EndDoc() ' 段落 para2を作成 Dim para2 As New RenderParagraph() fname = Application.StartupPath & "\sample2.txt" data = "" 'ファイルから文字列を読み込む Try Dim sr As StreamReader = New StreamReader(fname, System.Text.Encoding.Default) Do data = sr.ReadLine() para2.Content.AddText(data) Loop Until data Is Nothing sr.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try ' 段落をドキュメントに追加 C1PrintDocument1.Body.Children.Add(para2) 'ドキュメントを作成 C1PrintDocument1.Generate()
//--- 3番目の段落ブロック ------------------------------------ // 見出しの設定 c1PrintDocument1.StartDoc(); c1PrintDocument1.RenderInlineText(" "); c1PrintDocument1.RenderInlineText(" "); c1PrintDocument1.RenderInlineText("■コンポーネントのインストール", new Font("MSゴシック", 14, FontStyle.Bold), Color.DarkCyan); c1PrintDocument1.EndDoc(); // ----- 段落 para2 を作成 ----------------------------------- RenderParagraph para2 = new RenderParagraph(); //ファイルから文字列を読み込む fname = Application.StartupPath + "/sample2.txt"; data = ""; try { StreamReader sr = new StreamReader(fname, System.Text.Encoding.Default); while (data != null) { data = sr.ReadLine(); para2.Content.AddText(data); } sr.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } // 段落をドキュメントに追加 c1PrintDocument1.Body.Children.Add(para2); // ドキュメントを作成 this.c1PrintDocument1.Generate();
まとめ
今回は、ファイルからテキストデータを読み込んで整形したドキュメントを作成する方法を紹介しましたが、C1PrintDocumentコントロールはとても多機能で、少ないページ数ではすべてを紹介しきれないほど、ドキュメント作成にあらゆる加工が施せるコンポーネントです。
また、C1PrintPreviewControlはほとんど設定をする必要がなく、作成したドキュメントをそのままプレビューし印刷できるという機能を持った使いやすいコンポーネントであるため、この2つだけでもさまざまなニーズに対応できると思います。