SubSuperScript.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Text.RegularExpressions
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
'' このサンプルは、下付き文字と上付き文字を描画する方法を示します。
Public Class SubSuperScript
Sub CreatePDF(ByVal stream As Stream)
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim g = page.Graphics
Dim rc = Util.AddNote(
"上付き/下付き文字を指定するサンプルです。" +
"TextFormat.Subscript および TextFormat.Superscript プロパティを使用します。" +
"ランダムな文字列で段落を描画し、指定した文字のみを上付きまたは下付き文字として描画します。",
page)
'' ランダムな段落を取得します。
Dim para = Util.getString_ja(1, 1, 1)
'' 段落から特定の文字列を抜き出します。
Const subs = "負け"
Const super = "いい"
Dim frags = Regex.Split(para, $"({subs})|({super})")
Dim fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "YuGothR.ttc"))
'' 下付き文字と上付き文字のテキスト書式を作成します。
Dim tfSub = New TextFormat() With {.Font = fnt, .FontSize = 12, .Subscript = True}
Dim tfSuper = New TextFormat(tfSub) With {.Subscript = False, .Superscript = True}
'' 特定の文字列のみ別の書式を使用して、TextLayout にテキストを追加します。
Dim tl = g.CreateTextLayout()
tl.DefaultFormat.Font = fnt
tl.DefaultFormat.FontSize = 12
For Each frag In frags
If (frag = subs) Then
tl.Append(frag, tfSub)
ElseIf (frag = super) Then
tl.Append(frag, tfSuper)
Else
tl.Append(frag)
End If
Next
''化学式の表記
tl.AppendParagraphBreak()
tl.Append($"化学式は、下付き文字を指定して表現できます。{vbCrLf} ")
tl.AppendLine()
Dim tfChem = New TextFormat() With {
.Font = fnt,
.FontSize = 16
}
Const strchem As String = "グルタミン酸:CH3CH2OH"
Dim number As Integer = Nothing
For Each frag In strchem.ToCharArray()
If Integer.TryParse(frag.ToString(), number) Then
tl.Append(frag.ToString(), tfSub)
Else
tl.Append(frag.ToString(), tfChem)
End If
Next
'' レイアウトプロパティを設定してテキストを描画します。
tl.MaxWidth = page.Size.Width
tl.MaxHeight = page.Size.Height - rc.Height
tl.MarginAll = 72
tl.MarginTop = rc.Bottom + 36
tl.PerformLayout(True)
g.DrawTextLayout(tl, PointF.Empty)
'' PDF ドキュメントを保存します。
doc.Save(stream)
End Sub
End Class