MultiFormattedText.vb
- ''
- '' This code is part of Document Solutions for PDF demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Drawing
-
- '' Shows how to use different text formats (fonts, colors) in a single paragraph.
- Public Class MultiFormattedText
- Function CreatePDF(ByVal stream As Stream) As Integer
- '' Function to generate sample text quoting its formatting options:
- Dim makeSampleText As Func(Of TextFormat, String) =
- Function(ByVal tf_)
- Dim boldItalic = String.Empty
- If tf_.Font.FontBold Then
- boldItalic = "bold "
- End If
- If tf_.Font.FontItalic Then
- boldItalic += "italic "
- End If
- If boldItalic = String.Empty Then
- boldItalic = "normal "
- End If
- Return $"This is {boldItalic}text drawn using font '{tf_.Font.FullFontName}', font size {tf_.FontSize} points, " +
- $"text color {tf_.ForeColor}, background color {tf_.BackColor}. "
- End Function
-
- '' Font names:
- Const times = "times new roman"
- Const arial = "arial"
- '' Create document and text layout:
- Dim doc = New GcPdfDocument()
- Dim page = doc.NewPage()
- Dim g = page.Graphics
- Dim tl = g.CreateTextLayout()
- '' Use TextLayout to layout the whole page and maintain margins:
- tl.MaxHeight = page.Size.Height
- tl.MaxWidth = page.Size.Width
- tl.MarginAll = 72
- '' Get some fonts:
- Dim fc = New FontCollection()
- fc.RegisterDirectory(Path.Combine("Resources", "Fonts"))
- Dim fTimes = fc.FindFamilyName(times, False, False)
- Dim fTimesBold = fc.FindFamilyName(times, True, False)
- Dim fTimesItalic = fc.FindFamilyName(times, False, True)
- Dim fTimesBoldItalic = fc.FindFamilyName(times, True, True)
- Dim fArial = fc.FindFamilyName(arial, False, False)
- '' Add text to TextLayout using different fonts and font sizes:
- Dim tf = New TextFormat() With {.Font = fTimes, .FontSize = 12}
- tl.Append(makeSampleText(tf), tf)
- tf.Font = fTimesBold
- tf.FontSize += 2
- tl.Append(makeSampleText(tf), tf)
- tf.Font = fTimesItalic
- tf.FontSize += 2
- tl.Append(makeSampleText(tf), tf)
- tf.Font = fTimesBoldItalic
- tf.FontSize += 2
- tl.Append(makeSampleText(tf), tf)
- tf.Font = fArial
- tf.FontSize += 2
- tl.Append(makeSampleText(tf), tf)
- '' Add text with different foreground and background colors:
- tf.Font = fTimesBold
- tf.ForeColor = Color.Tomato
- tl.Append(makeSampleText(tf), tf)
- tf.Font = fTimesBoldItalic
- tf.FontSize = 16
- tf.ForeColor = Color.SlateBlue
- tf.BackColor = Color.Orange
- tl.Append(makeSampleText(tf), tf)
- '' Finish with plain black on transparent again:
- tl.Append("The end.", New TextFormat() With {.Font = fTimes, .FontSize = 14})
- '' Layout and draw text:
- tl.PerformLayout(True)
- g.DrawTextLayout(tl, PointF.Empty)
- ''
- '' Done:
- doc.Save(stream)
- Return doc.Pages.Count
- End Function
- End Class
-