TabsAlignment.cs
// 完毕:
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Drawing;
namespace DsPdfWeb.Demos.Basics
{
// 此示例演示如何使用 TextLayout.TabStops 呈现列
// 以不同方式对齐的浮点数:
// - 通过 TabStopAlignment.Separator 在小数点上对齐;
// - 使用 TabStopAlignment.Leading 在制表符位置上左对齐;
// - 使用 TabStopAlignment.Center 以选项卡位置为中心;
// - 使用 TabStopAlignment.Trailing 在选项卡位置右对齐。
public class TabsAlignment
{
public int CreatePDF(Stream stream)
{
// 创建并设置文档:
var doc = new GcPdfDocument();
var page = doc.NewPage();
var g = page.Graphics;
// 创建并设置一个 TextLayout 对象来打印文本:
var tl = g.CreateTextLayout();
tl.MaxWidth = page.Size.Width;
tl.MaxHeight = page.Size.Height;
tl.MarginLeft = tl.MarginRight = tl.MarginTop = tl.MarginBottom = 36;
tl.DefaultFormat.Font = StandardFonts.Times;
tl.DefaultFormat.FontSize = 10;
tl.DefaultFormat.BackColor = Color.FromArgb(217, 217, 217);
// 添加具有不同对齐类型的制表位
// (第一个选项卡的构造函数创建一个 TabStopAlignment.Separator TabStop):
tl.TabStops = new List<TabStop>()
{
new TabStop(72, '.'),
new TabStop(72 * 2.5f, TabStopAlignment.Leading),
new TabStop(72 * 5, TabStopAlignment.Center),
new TabStop(72 * 7.5f, TabStopAlignment.Trailing),
};
// 渲染示例文本:
tl.Append($"TabStopAlignment:\r\n\tSeparator '.'\tLeading\tCenter\tTrailing\r\n");
double v0 = 1;
double q = (1 + Math.Sqrt(5)) / 2;
for (int i = 1; i < 50; ++i)
{
tl.Append($"\t{v0:R}\t{v0:R}\t{v0:R}\t{v0:R}\r\n");
v0 *= q;
}
tl.PerformLayout(true);
// 绘制文本和图像:
g.DrawTextLayout(tl, PointF.Empty);
// 完毕:
doc.Save(stream);
return doc.Pages.Count;
}
}
}