MultiFormattedText.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
'' 単一の段落で異なるテキスト書式(フォント、色)を使用する方法を示します。
Public Class MultiFormattedText
Function CreatePDF(ByVal stream As Stream) As Integer
'' 書式設定オプションを引用するサンプルテキストを生成する関数です。
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} " +
$"設定(フォント:{tf_.Font.FullFontName} サイズ:{tf_.FontSize} 色:{tf_.ForeColor} 背景色:{tf_.BackColor})"
End Function
'' フォント名。
Const times = "times new roman"
Const arial = "arial"
'' ドキュメントとテキストレイアウトを作成します。
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim g = page.Graphics
Dim tl = g.CreateTextLayout()
'' TextLayout を使用してページ全体をレイアウトし、余白を維持します。
tl.MaxHeight = page.Size.Height
tl.MaxWidth = page.Size.Width
tl.MarginAll = 72
'' いくつかのフォントを取得します。
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)
Dim fIPAGothic = fc.FindFamilyName("IPAGothic", False, False)
'' 異なるフォントとフォントサイズを使用して TextLayout にテキストを追加します。
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 -= 4
tl.Append(makeSampleText(tf), tf)
tf.Font = fArial
tf.FontSize += 2
tl.Append(makeSampleText(tf), tf)
tf.Font = fIPAGothic
tf.FontSize -= 2
tl.Append(makeSampleText(tf), tf)
'' 異なる前景色と背景色でテキストを追加します。
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)
'' 再び透明な黒色で仕上げます。
tl.Append("The end.", New TextFormat() With {.Font = fTimes, .FontSize = 14})
tl.Append("- 終了 -", New TextFormat() With {.Font = fIPAGothic, .FontSize = 14})
'' テキストのレイアウトと描画。
tl.PerformLayout(True)
g.DrawTextLayout(tl, PointF.Empty)
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class