phase3 : 文字の出力方法

文字の出力方法を説明します。文字のスタイルについても説明します。


実行結果:tutorial_3.pdf

var doc = new PdfDocument();
doc.AddPage("page1");

//ドキュメントにフォントを追加する。
//フォントファイルのある場所を指定する。
var windir = Environment.ExpandEnvironmentVariables("%windir%");
doc.AddFont("明朝", windir + @"\Fonts\msmincho.ttc", 0);


//コンテンツ項目の文字スタイルを作成する。
var blueText = new TextStyle("明朝", 10, Color.Blue);

var dash = new StrokeStyle(5, Color.Blue, DashType.DashDot);
var redText = new TextStyle("明朝", 30, Color.Red, FontWeight.Bold,
	HorizontalAlign.Right, VerticalAlign.Middle, dash, null);


//文字コンテンツアイテムを作成する
var content = new AbstractPdfContentItem[3];
content[0] = new Text(50, 400, 200, 100, "青文字", blueText);
content[1] = new Text(50, 400, 200, 100, "赤文字", redText);
content[2] = new Rect(50, 400, 200, 100);


doc.AddContent("page1", content);
File.WriteAllBytes("tutorial_3.pdf", doc.GetBinary());

ドキュメントにフォントを追加する

PdfDocumentのAddFontメソッドを呼び出し、PdfDocumentにフォントを追加します。 追加するフォントには一意の名前、フォントファイル名、使用するフォントの番号を指定します。

一意の名前はこの後作成するスタイルで追加したフォントを識別する時に使用します。 フォントファイル名はフォントファイルを直接指定します。そのため、OSにインストールされている必要はありません。 使用するフォントの番号は.ttcという拡張子を持つフォントファイルの時に必要になります。 .ttc(True Type Collection)という拡張子のフォントファイルはフォントの集合を表しています。そのため、使用するフォントの番号を指定する必要があります。(0番から始まります。) ここでは0番目の「MS 明朝」を指定しています。(ちなみに1番目は、「MS P明朝」です。)

フォントファイルの追加処理は、PDFファイルサイズを増加させるだけでなく、コストもかかる処理ですので、同じフォントファイルを複数の名前で追加することのないようにしてください。

//ドキュメントにフォントを追加する。
//フォントファイルのある場所を指定する。
var windir = Environment.ExpandEnvironmentVariables("%windir%");
doc.AddFont("明朝", windir + @"\Fonts\msmincho.ttc", 0);

文字スタイルを作成する

先ほど追加したフォントを使用して、「10ptの青い文字」と「30ptの赤い太字(青い点線の下線付き)」を定義します。 このようにPdfDocumentに追加したフォントは、フォントサイズや色が変わっても複数のスタイルで使用することができます。

赤い文字は次のように文字の位置を指定しています。
垂直方向   中央(初期値)
水平方向   右寄り
FontWeight.Boldは「MS 明朝」のように太字のフォントが存在しない場合に使用します。 太字のフォントファイルが用意されている場合は、太字のフォントファイルを指定した方が綺麗に出力できます。

//コンテンツ項目の文字スタイルを作成する。
var blueText = new TextStyle("明朝", 10, Color.Blue);

var dash = new StrokeStyle(5, Color.Blue, DashType.DashDot);
var redText = new TextStyle("明朝", 30, Color.Red, FontWeight.Bold,
	HorizontalAlign.Right, VerticalAlign.Middle, dash, null);

文字コンテンツアイテムを作成する

青い文字、赤い文字、四角形を同じ位置に出力します。 (文字の垂直・水平方向の位置がわかりやすくするため、文字の出力範囲と同じ大きさの四角形も出力しています。)
//文字コンテンツアイテムを作成する
var content = new AbstractPdfContentItem[3];
content[0] = new Text(50, 400, 200, 100, "青文字", blueText);
content[1] = new Text(50, 400, 200, 100, "赤文字", redText);
content[2] = new Rect(50, 400, 200, 100);
※ソースコードの色付けにgoogle-code-prettifyを使用しています。
inserted by FC2 system