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