CharacterFormatting.vb
'' 完毕:
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
'' 演示 GcDocs.Pdf 中字符格式化的基础知识。
''
'' GcDocs.Pdf 中的字符格式是通过 GrapeCity.Documents.Text.TextFormat 类完成的。
'' 具有所需格式选项的该类的实例
'' 被传递给 GcDocs.Pdf 中可用的大多数文本渲染方法(例如 DrawString)。
'' 在同一段落中呈现具有不同字符格式的文本
'' 是通过使用 TextLayout/DrawTextLayout 来完成的。
'' 另请参阅TextRendering、MultiFormattedText、ParagraphAlign、
'' ParagraphFormatting、TextAlign。
Public Class CharacterFormatting
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim g = page.Graphics
Const Inch = 72.0F, vStep = Inch / 2
Dim ip = New PointF(Inch, Inch)
'' 1. 必须在 TextFormat 上设置的唯一强制属性是 Font:
Dim tf = New TextFormat() With {.Font = StandardFonts.Times}
g.DrawString("1. 必须始终在 TextFormat 上设置的唯一强制属性是 Font。" +
"", tf, ip)
ip.Y += vStep * 2
'' 2. 提供标准字体属性:
tf.Underline = True
tf.Strikethrough = True
tf.FontSize = 10
g.DrawString("2.标准属性可用,这里我们打开下划线和删除线,并将FontSize设置为10。", tf, ip)
ip.Y += vStep
'' 3. TextFormat.FontStyle 允许您模拟粗体和/或斜体样式
'' 使用常规字体(另请参阅BoldItalicEmulation):
tf.Underline = tf.Strikethrough = False
tf.FontStyle = GCTEXT.FontStyle.BoldItalic
tf.FontSize = 12
g.DrawString("3. 使用TextFormat.FontStyle.BoldItalic 模拟粗体斜体样式。", tf, ip)
ip.Y += vStep
'' 4.其他属性包括前景色和背景色:
tf.FontStyle = GCTEXT.FontStyle.Regular
tf.ForeColor = Color.DarkSlateBlue
tf.BackColor = Color.PaleGreen
g.DrawString("4. 使用TextFormat.ForeColor 和TextFormat.BackColor 为文本着色。", tf, ip)
ip.Y += vStep
'' 5. 同一段落中可以混合使用不同的文本格式。
'' 为此,必须使用 TextLayout 和 GcPdfGraphics.DrawTextLayout:
Dim tl = g.CreateTextLayout()
tl.Append("5. 不同的文本格式可以很容易地混合在同一个段落中",
New TextFormat() With {.Font = StandardFonts.Times})
tl.Append("当使用 TextLayout 构建段落时",
New TextFormat() With {.Font = StandardFonts.TimesBold, .BackColor = Color.PaleTurquoise})
tl.Append("如本示例段落所示。",
New TextFormat() With {.Font = StandardFonts.HelveticaBoldItalic, .ForeColor = Color.DarkOrange})
tl.Append("TextFormat 上还有各种其他选项,包括",
New TextFormat() With {.Font = StandardFonts.Times, .ForeColor = Color.DarkSlateBlue})
tl.Append("字形提前系数",
New TextFormat() With {.Font = StandardFonts.TimesBoldItalic, .Underline = True})
tl.Append("(扩展字形",
New TextFormat() With {.Font = StandardFonts.Times, .GlyphAdvanceFactor = 1.5F, .ForeColor = Color.BlueViolet})
tl.Append("或者将它们放在一起),",
New TextFormat() With {.Font = StandardFonts.Times, .GlyphAdvanceFactor = 0.8F, .ForeColor = Color.BlueViolet})
tl.Append("横向偏移",
New TextFormat() With {.Font = StandardFonts.TimesBoldItalic, .Underline = True})
tl.Append("(将字形降低到基线以下,",
New TextFormat() With {.Font = StandardFonts.Times, .TransverseOffset = -5, .ForeColor = Color.MediumVioletRed})
tl.Append("或将它们提高到其上方)",
New TextFormat() With {.Font = StandardFonts.Times, .TransverseOffset = 5, .ForeColor = Color.MediumVioletRed})
tl.Append("等等(例如,可以通过 TextFormat.FontFeatures 访问特定字体的功能)。",
New TextFormat() With {.Font = StandardFonts.Times, .FontFeatures = New FontFeature() {New FontFeature(FeatureTag.clig)}})
'' 对于此示例,我们仅设置文本布局的最大宽度,
'' 在真实的应用程序中,您可能至少也会设置 MaxHeight:
tl.MaxWidth = page.Size.Width - Inch * 2
tl.PerformLayout(True)
g.DrawTextLayout(tl, ip)
''
'' 完毕:
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class