DioDocs for PDF では、GrapeCity.Documents.Drawing 名前空間のメンバである GcGraphics クラスを使用してテキストをレンダリングする際に、主に次の 2 つの方法が用意されています。
さらに、DioDocs for PDF には、テキストを操作する際に次の機能をサポートする GrapeCity.Documents.Text 名前空間も用意されています。
DioDocs for PDF を使用して PDF ドキュメント内にテキストをレンダリングするには、GcGraphics クラスの DrawString メソッドを使用するか、TextLayout クラスを使用します。TextLayout クラスを使用する場合は、Append メソッドを使用してレイアウトを作成し、PerformLayout メソッドを呼び出してレンダリングを準備する必要があります。最後に、GcGraphics クラスの DrawTextLayout メソッドを呼び出して、ドキュメント内にテキストをレンダリングします。
C# |
コードのコピー
|
---|---|
public void CreatePDF(Stream stream) { var doc = new GcPdfDocument(); var page = doc.NewPage(); var g = page.Graphics; const float In = 150; PointF ip = new PointF(72, 72); var tl = g.CreateTextLayout(); tl.DefaultFormat.Font = StandardFonts.Times; tl.DefaultFormat.FontSize = 12; // TextFormatクラスは、すべてのGcPdfnoのテキストレンダリングで使用され、 // フォントやその他の文字書式を指定します var tf = new TextFormat(tl.DefaultFormat) { Font = StandardFonts.Times, FontSize = 12 }; // Appendメソッドを使用してテキストをレンダリングします tl.Append("Turpis non ante pulvinar et massa nibh laoreet amet volutpat laoreet " + "molestie aliquet massa ullamcorper ac nisi ante massa lobortis Massa at laoreet" + "mauris aliquamfelis feugiat et non euismod magna eget molestie euismod elit dolor " + "eget erat euismod laoreetPharetra sit mauris nibh molestie ac nunc proin felis" + " erat lorem volutpat elit mi nunc magnamauris molestie tincidunt" + " sedMassa congue nibh volutpat eget non", tf); tl.PerformLayout(true); g.DrawTextLayout(tl, ip); // DrawStringメソッドを使用してテキストをレンダリングします g.DrawString("1. サンプル文字列。", tf, new PointF(In, In)); // ドキュメントを保存します doc.Save(stream); } |
PDF ドキュメント内のテキスト配置を設定するには、TextLayout クラスの TextAlignment プロパティを使用します。このプロパティは、TextAlignment 列挙の値を受け取ります。
PageSize.cs |
コードのコピー
|
---|---|
tl.TextAlignment = TextAlignment.Trailing; |
PDF ドキュメントのテキストを書式設定するには、TextFormat クラスを使用します。このクラスは、フォントなどの文字書式設定を指定するために、任意のタイプのテキストのレンダリングに使用されます。TextFormat クラスのさまざまなプロパティ(FontSize、FontStyle など)を使用して、レンダリングされるテキストに必要なテキスト書式を適用できます。
TexFormat.cs |
コードのコピー
|
---|---|
TextFormat tf = new TextFormat()
{
Font = StandardFonts.Courier,
FontSize = 14,
FontStyle = FontStyle.Bold,
ForeColor = GrapeCity.Documents.Drawing.Color.Cyan,
Language = Language.English
};
|
PDF ドキュメント内のテキストをさまざまな角度で回転させるには
C# |
コードのコピー
|
---|---|
public void CreatePDF(Stream stream) { // 回転角度、時計回り float angle = -45; var doc = new GcPdfDocument(); var g = doc.NewPage().Graphics; // テキストレイアウトを作成し、フォントとフォントサイズを選択します TextLayout tl = g.CreateTextLayout(); tl.DefaultFormat.Font = StandardFonts.Times; tl.DefaultFormat.FontSize = 24; // テキストを追加し、レイアウトを実行します tl.Append("回転したテキスト"); tl.PerformLayout(true); // テキスト挿入ポイントは(1",1")になります var ip = new PointF(72, 72); // テキスト四角形を作成します var rect = new RectangleF(ip.X, ip.Y, tl.ContentWidth, tl.ContentHeight); // 境界線の四角形の中心付近でテキストを回転させます。 // その中心を中心に回転させます g.Transform = Matrix3x2.CreateRotation((float)(angle * Math.PI) / 180f, new Vector2(ip.X + tl.ContentWidth / 2, ip.Y + tl.ContentHeight / 2)); // 回転したテキストと境界の四角形を描画します g.DrawTextLayout(tl, ip); g.DrawRectangle(rect, Color.Black, 1); // 回転を取り除いて境界の四角形を描画します g.Transform = Matrix3x2.Identity; g.DrawRectangle(rect, Color.ForestGreen, 1); // ドキュメントを保存します doc.Save(stream); } |
DioDocs for PDFは、GcGraphicsクラスの FlowDirection プロパティを使用して垂直テキストをレンダリングすることができます。FlowDirectionプロパティは FlowDirection 列挙体の値を受け取ります。垂直テキスト配置を設定するには、このプロパティをVerticalLeftToRightまたはVerticalRightToLeftに設定します。
また、DioDocs for PDFの TextFormat クラスの RotateSidewaysCounterclockwise プロパティを使用して、横向きのテキストを反時計回りに回転することもできます。TextFormatクラスの SidewaysInVerticalText プロパティと UprightInVerticalText プロパティは、テキストを横表示または縦表示に設定します。これらのプロパティは、東アジア言語のテキスト内にラテン語のテキストをレンダリングするために使用されます。
C# |
コードのコピー
|
---|---|
//TextLayoutプロパティを使用して、テキストのレイアウトを垂直方向に設定します tl.RotateSidewaysCounterclockwise = true; tl.FlowDirection = FlowDirection.VerticalLeftToRight; //中国語、日本語、韓国語のテキストのレイアウトを垂直方向に設定します TextFormat tfvertical = new TextFormat() { UprightInVerticalText = false, GlyphWidths = GlyphWidths.Default, TextRunAsCluster = false, }; tl.Append("日本語でのテスト文字列です", tfvertical); |
アウトラインテキストをレンダリングするには、StrokePen プロパティを使用してアウトラインを描画し、Hollow プロパティをtrueに設定します。また、塗りつぶしテキストをレンダリングするには、TextFormat クラスの FillBrush プロパティを使用します。
C# |
コードのコピー
|
---|---|
//アウトラインテキスト TextFormat tf0 = new TextFormat() { StrokePen = Color.DarkGreen, Hollow = true, FontSize = 48, }; tl.AppendLine("Outline Text", tf0); //塗りつぶしテキスト TextFormat tf1 = new TextFormat() { StrokePen = Color.DarkMagenta, FillBrush = new SolidBrush(Color.Yellow), FontSize = 48, }; tl.AppendLine("Filled Text", tf1); |
割り当てられた領域に収まらない文字列を処理するには、2つの方法があります。1つ目はテキストを折り返す方法です。もう1つは、文字や単語をトリミングして末尾に省略記号などの文字を追加する方法です。TextLayout クラスの WrapMode プロパティを使用して、PDFドキュメント内にテキストを折り返すことができます。また、TextLayout クラスの TrimmingGranularity と EllipsisCharCode プロパティは、トリミングオプションを設定し、テキストの末尾に省略記号のような特定の文字を表示します。
C# |
コードのコピー
|
---|---|
//文字をトリミングします tl.TrimmingGranularity = TrimmingGranularity.Character; tl.EllipsisCharCode = 0x007E; //WrapModeプロパティに文字単位を設定します tl.WrapMode = WrapMode.CharWrap; |
PDFドキュメント内に下付き文字と上付き文字のテキストをレンダリングするには、TextFormat クラスの Subscript プロパティと Superscript プロパティを使用します。
C# |
コードのコピー
|
---|---|
//下付き文字を適用します var tf = new TextFormat() {FontSize = 18}; var tfsub = new TextFormat() {Subscript = true, FontBold = true}; var tfbold = new TextFormat() {FontBold = true, FontSize = 18}; tl.Append("The chemical formula of water is "); tl.Append("H", tfbold); tl.Append("2", tfsub); tl.Append("O.", tfbold); //上付き文字を適用します var tf = new TextFormat() {FontSize = 18}; var tfsup = new TextFormat() {Superscript = true, FontBold = true}; tl.Append("Example of a math equation : "); tl.Append("x", tf); tl.Append("2", tfsup); tl.Append("+", tf); tl.Append("y", tf); tl.Append("2", tfsup); |
段落の書式設定を処理するには、TextLayout クラスのプロパティを使用して、段落の配置と書式を設定します。
C# |
コードのコピー
|
---|---|
public void CreatePDF(Stream stream) { var doc = new GcPdfDocument(); var page = doc.NewPage(); var g = page.Graphics; // デフォルトでは、GcPdfは72dpiを使用します PointF ip = new PointF(72, 72); var tl = g.CreateTextLayout(); tl.MaxWidth = doc.PageSize.Width; tl.MaxHeight = doc.PageSize.Height; tl.MarginLeft = tl.MarginTop = tl.MarginRight = tl.MarginBottom = 72; var tf = new TextFormat(tl.DefaultFormat) { Font = StandardFonts.Times, FontSize = 12, }; // Appendメソッドを使用してテキストをレンダリングします tl.Append("Turpis non ante pulvinar et massa nibh laoreet amet volutpat laoreet " + "molestie aliquet massa ullamcorper ac nisi ante massa lobortis Massa at laoreet" + "mauris aliquamfelis feugiat et non euismod magna eget molestie euismod elit dolor" + "eget erat euismod laoreetPharetra sit mauris nibh molestie ac nunc proin felis" + "erat lorem volutpat elit mi nunc magnamauris molestie tincidunt" + "sedMassa congue nibh volutpat eget non", tf); // 最初の行のオフセットを設定します tl.FirstLineIndent = 72 / 2; // 行間隔を設定します tl.LineSpacingScaleFactor = 1.5f; tl.PerformLayout(true); g.DrawTextLayout(tl, ip); // ドキュメントを保存します doc.Save(stream); } |
DioDocs for PDF を使用したテキストの実装の詳細については、DioDocs for PDF サンプルブラウザを参照してください。