TextAlign.cs
// 完毕:
using System;
using System.Drawing;
using System.IO;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
namespace DsPdfWeb.Demos.Basics
{
// 演示文本对齐选项(LRT 文本的水平对齐):
// 左/居中/右/两端对齐。
public class TextAlign
{
public int CreatePDF(Stream stream)
{
// 生成一段随机文本的辅助函数:
Func<string> makePara = () => Common.Util.LoremIpsum(1, 3, 4, 15, 20);
//
var doc = new GcPdfDocument();
var g = doc.NewPage().Graphics;
// 使用 Graphics.CreateTextLayout() 确保 TextLayout 的分辨率
// 设置为与图形相同的值(默认为 72 dpi):
var tl = g.CreateTextLayout();
tl.DefaultFormat.Font = StandardFonts.Times;
tl.DefaultFormat.FontSize = 12;
// 设置布局大小(整页,边距为 1 英寸):
tl.MaxWidth = doc.Pages.Last.Size.Width - 72 * 2;
tl.MaxHeight = doc.Pages.Last.Size.Height - 72 * 2;
// “标题”的强文本格式:
var tf = new TextFormat(tl.DefaultFormat) { Font = StandardFonts.TimesBold };
// 插入点:
var ip = new PointF(72, 72);
// TextAlignment 控制文本在布局矩形内的水平对齐方式。
// 我们以不同的对齐方式呈现 5 个段落。
// 领导:
tl.TextAlignment = TextAlignment.Leading;
tl.Append("TextAlignment.Leading: ", tf);
tl.Append(makePara());
tl.PerformLayout(true);
g.DrawTextLayout(tl, ip);
// 提前插入点,在段落之间添加一行的高度:
ip.Y += tl.ContentHeight + tl.Lines[0].Height;
// 中心:
tl.Clear();
tl.TextAlignment = TextAlignment.Center;
tl.Append("TextAlignment.Center: ", tf);
tl.Append(makePara());
tl.PerformLayout(true);
g.DrawTextLayout(tl, ip);
// 提前插入点,在段落之间添加一行的高度:
ip.Y += tl.ContentHeight + tl.Lines[0].Height;
// 尾随:
tl.Clear();
tl.TextAlignment = TextAlignment.Trailing;
tl.Append("TextAlignment.Trailing: ", tf);
tl.Append(makePara());
tl.PerformLayout(true);
g.DrawTextLayout(tl, ip);
// 提前插入点,在段落之间添加一行的高度:
ip.Y += tl.ContentHeight + tl.Lines[0].Height;
// 合理:
tl.Clear();
tl.TextAlignment = TextAlignment.Justified;
tl.Append("TextAlignment.Justified: ", tf);
tl.Append(makePara());
tl.PerformLayout(true);
g.DrawTextLayout(tl, ip);
// 提前插入点,在段落之间添加一行的高度:
ip.Y += tl.ContentHeight + tl.Lines[0].Height;
// 分散式:
tl.Clear();
tl.TextAlignment = TextAlignment.Distributed;
tl.Append("TextAlignment.Distributed: ", tf);
tl.Append(makePara());
tl.PerformLayout(true);
g.DrawTextLayout(tl, ip);
// 完毕:
doc.Save(stream);
return doc.Pages.Count;
}
}
}