TextAlign.vb
'' 完毕:
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing

'' 演示文本对齐选项(LRT 文本的水平对齐):
'' 左/居中/右/两端对齐。
Public Class TextAlign
    Function CreatePDF(ByVal stream As Stream) As Integer
        '' 生成一段随机文本的辅助函数:
        Dim makePara As Func(Of String) =
            Function()
                Return Util.LoremIpsum(1, 3, 4, 15, 20)
            End Function
        ''
        Dim doc = New GcPdfDocument()
        Dim g = doc.NewPage().Graphics
        '' 使用 Graphics.CreateTextLayout() 确保 TextLayout 的分辨率
        '' 设置为与图形相同的值(默认为 72 dpi):
        Dim 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
        '' “标题”的强文本格式:
        Dim tf = New TextFormat(tl.DefaultFormat) With {.Font = StandardFonts.TimesBold}
        '' 插入点:
        Dim 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
    End Function
End Class