TabsAlignment.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

'' このサンプルは、TextLayout.TabStops を使用して、浮動小数点数の列を
'' さまざまな方法で整列する方法を示します。
'' - TabStopAlignment.Separator を使用して小数点位置を揃えます。
'' - TabStopAlignment.Leading を使用してタブ位置を左揃えにします。
'' - TabStopAlignment.Center を使用してタブの位置を中央揃えにします。
'' - TabStopAlignment.Trailing を使用して、タブの位置を右揃えにします。
Public Class TabsAlignment
    Function CreatePDF(ByVal stream As Stream) As Integer
        '' ドキュメントを作成して設定します。
        Dim doc = New GcPdfDocument()
        Dim page = doc.NewPage()
        Dim g = page.Graphics
        Const fontname = "Yu Gothic"
        '' テキストを出力するための TextLayout オブジェクトを作成して設定します。
        Dim tl = g.CreateTextLayout()
        tl.MaxWidth = page.Size.Width
        tl.MaxHeight = page.Size.Height
        tl.MarginLeft = 36
        tl.MarginRight = 36
        tl.MarginTop = 36
        tl.MarginBottom = 36


        tl.DefaultFormat.FontName = fontname
        tl.DefaultFormat.FontSize = 10
        tl.DefaultFormat.BackColor = Color.FromArgb(217, 217, 217)
        '' 異なる配置タイプのタブストップを追加します
        '' (最初のタブのコンストラクタは TabStopAlignment.Separator TabStop を作成します)。
        tl.TabStops = New List(Of TabStop)() From {
                New TabStop(72, "."c),
                New TabStop(72 * 2.5F, TabStopAlignment.Leading),
                New TabStop(72 * 5, TabStopAlignment.Center),
                New TabStop(72 * 7.5F, TabStopAlignment.Trailing)
            }
        '' サンプルテキストを描画します。
        tl.Append($"タブストップの位置:{vbCrLf}{vbTab}セパレータ= '.'{vbTab}左揃え{vbTab}中央寄せ{vbTab}右揃え{vbCrLf}")
        Dim v0 As Double = 1
        Dim q As Double = (1 + Math.Sqrt(5)) / 2
        For i = 1 To 50
            tl.Append($"{vbTab}{v0:R}{vbTab}{v0:R}{vbTab}{v0:R}{vbTab}{v0:R}{vbCrLf}")
            v0 *= q
        Next

        tl.PerformLayout(True)
        '' テキストとイメージを描画します。
        g.DrawTextLayout(tl, PointF.Empty)
        ''
        '' PDF ドキュメントを保存します。
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class