CodeZine(コードジン)

特集ページ一覧

テキストファイルをRTFテキストに変換してPDF化するアプリケーション

C1PdfDocumentコンポーネントを使ったドキュメント変換アプリの作成

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/11/14 14:00
目次

簡単なRTFテキストのPDF化処理の作成 2

カラーテーブルの作成

 文字色や線などにカラーを使用するには、RTFファイルごとにカラーテーブルを作成する必要があります。そして、色を指定するタグでは、このカラーテーブルの中からどの色を使用するのかを、パレットの中のその色がある位置を番号で指定します。

 通常、WordなどのRTF対応アプリケーションでは、入力文書をファイルに保存する際、リッチテキストフォーマットの先頭にカラーテーブルを作成してくれるので特にユーザーが作成する必要はありません。しかし、自作でRTFドキュメントを作成する場合は、ドキュメント内で使用する色のリストをカラーテーブルとして作成する必要があります。

 カラーテーブルは、\colortblというタグと、色をRGBで表すための\red\green\blueの4つのタグを使用します。

 例えば、黒色を使用したければ、

{\colortbl;\red0\green0\blue;}

 と記述します。黒と白の2色を使いたければ、\red\green\blueタグの記述を;で区切って2個作成します。

{\colortbl;\red0\green0\blue0;\red255\green255\blue255;}

 こうして、使いたい色の数だけ\red\green\blueタグの記述を;で区切って作成します。

 次のコードは、15色のカラーテーブルを作成します。

{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255
\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0
\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0
\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0
\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128
\green128\blue128;}

 カラーテーブルの色を使用する場合は、その位置を番号で指定します。このカラーテーブルの青色を使いたければ、2番目の\red0\green0\blue255を指定します。

 カラーテーブルは、必ず1行で作成し、行末は;}で終わるようにします。そして、RTF化する文字列の先頭に記述します。

PDF作成の準備

 では、処理を組み立てていきましょう。

 最初に、PDF化の準備処理を作成します。まず、2つの名前空間への参照を宣言しておきます。C#は、デフォルトで「System.Text」への参照が設定されていますから、「System.IO」だけ参照するようにします。

 そして、PDFドキュメントに使用するフォントと描画領域を作成します。

Visual Basic
Imports System.IO
Imports System.Text

Private Sub Button1_Click(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles Button1.Click
    Dim font As New Font("MSゴシック", 12)
    Dim rc As RectangleF = Me.C1PdfDocument1.PageRectangle
    rc.Inflate(-72, -72)
C#
using System.IO;

private void Button1_Click(object sender, EventArgs e)
{
    Font font = new Font("MSゴシック", 12);
    RectangleF rc = c1PdfDocument1.PageRectangle;
    rc.Inflate(-72, -72);

 次に、カラーテーブルを作成します。今回は、8色のテーブルを作ります。1行の文字列にして、変数に格納します。

Visual Basic
Dim s As String
    s = "{\colortbl;\red0\green0\blue0;\red0\green0\blue255;" & _
          "\red0\green255\blue255;\red0\green255\blue0;" & _
          "\red255\green0\blue255;\red255\green0\blue0;" & _
          "\red255\green255\blue0;\red255\green255\blue255;}"
C#
String s;  
    s = "{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;" +
      "\\red0\\green255\\blue255;\\red0\\green255\\blue0;" +
      "\\red255\\green0\\blue255;\\red255\\green0\\blue0;" +
      "\\red255\\green255\\blue0;\\red255\\green255\\blue255;}";

 そして、表示する文字列にタグをつけます。使用する文字列はなんでも構いませんが、ここでは「To boldly go where no one has gone before!」という英文を使用しています。

 文字とタグの間にスペースを入れて、RTFリーダーアプリケーションがきちんとタグを認識できるようにしてください。

Visual Basic
s &= "To {\b boldly} {\tab go where} 
{\i {\fs40 {\cf2 no one \par}}} has {\cf6 gone before!}"
C#
s += "To {\\b boldly} {\\tab go where} 
{\\i {\\fs40 {\\cf2 no one \\par}}} has {\\cf6 gone before!}";

 最後に、作成したRTFテキストを、C1PdfDocumentコンポーネントのDrawStringRtfメソッドの引数に指定して実行します。DrawStringRtfメソッドは、DrawStringメソッドと同じようなメソッドですが、指定する文字列がRTFテキストになっています。

 そして、PDF文書の保存と表示を実行します。この部分は前回作成したものとほぼ同じ処理をサブルーチンにまとめています。

Visual Basic
Me.C1PdfDocument1.DrawStringRtf(s, font, Brushes.Black, rc)
savepdf()
C#
c1PdfDocument1.DrawStringRtf(s, font, Brushes.Black, rc);
savepdf();
文字単位で装飾を変えたり、タブ移動や改行が行える
文字単位で装飾を変えたり、タブ移動や改行が行える

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:ComponentZine(ComponentOne)

もっと読む

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5