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

'' テキストの配置オプション(左揃え/中央揃え/右揃え/両端揃え)を示します
'' (LRT テキストの水平方向の配置)。
'' 
Public Class TextAlign
    Function CreatePDF(ByVal stream As Stream) As Integer
        '' ランダムなテキストの段落を生成するヘルパー関数です。
        Dim makePara As Func(Of String) =
            Function()
                Return Environment.NewLine + Util.getString_ja(0, 0, 2, 2, 5)
            End Function
        ''
        Dim doc = New GcPdfDocument()
        Dim g = doc.NewPage().Graphics
        '' Graphics.CreateTextLayout() を使用すると、TextLayout の解像度は
        '' グラフィックスの解像度と同じ値(デフォルトでは 72 dpi)に設定されます。
        Dim tl = g.CreateTextLayout()
        tl.DefaultFormat.FontName = "Yu Gothic"
        tl.DefaultFormat.FontSize = 12
        '' レイアウトサイズを設定します(すべてのページに1インチの余白)。
        tl.MaxWidth = doc.Pages.Last.Size.Width - 72 * 2
        tl.MaxHeight = doc.Pages.Last.Size.Height - 72 * 2
        '' 'ヘッダー'のテキスト書式を太字にします。
        Dim tf = New TextFormat(tl.DefaultFormat) With {.Font = StandardFonts.TimesBold}
        '' 挿入位置。
        Dim ip = New PointF(72, 72)
        '' TextAlignment は、レイアウト矩形内でテキストが水平方向に配置される方法を制御します。
        '' 5つの段落をを異なる配置で描画します。
        '' 左揃え:
        tl.TextAlignment = TextAlignment.Leading
        tl.Append("TextAlignment.Leading: ", tf)
        tl.Append(makePara())
        tl.PerformLayout(True)
        g.DrawTextLayout(tl, ip)
        '' 挿入位置を拡張し、段落間に1行分の高さを追加します。
        ip.Y += tl.ContentHeight + tl.Lines(0).Height
        '' 中央揃え:
        tl.Clear()
        tl.TextAlignment = TextAlignment.Center
        tl.Append("TextAlignment.Center: ", tf)
        tl.Append(makePara())
        tl.PerformLayout(True)
        g.DrawTextLayout(tl, ip)
        '' 挿入位置を拡張し、段落間に1行分の高さを追加します。
        ip.Y += tl.ContentHeight + tl.Lines(0).Height
        '' 右揃え:
        tl.Clear()
        tl.TextAlignment = TextAlignment.Trailing
        tl.Append("TextAlignment.Trailing: ", tf)
        tl.Append(makePara())
        tl.PerformLayout(True)
        g.DrawTextLayout(tl, ip)
        '' 挿入位置を拡張し、段落間に1行分の高さを追加します。
        ip.Y += tl.ContentHeight + tl.Lines(0).Height
        '' 両端揃え:
        tl.Clear()
        tl.TextAlignment = TextAlignment.Justified
        tl.Append("TextAlignment.Justified: ", tf)
        tl.Append(makePara())
        tl.PerformLayout(True)
        g.DrawTextLayout(tl, ip)
        '' 挿入位置を拡張し、段落間に1行分の高さを追加します。
        ip.Y += tl.ContentHeight + tl.Lines(0).Height
        '' 分散:
        tl.Clear()
        tl.TextAlignment = TextAlignment.Distributed
        tl.Append("TextAlignment.Distributed: ", tf)
        tl.Append(makePara())
        tl.PerformLayout(True)
        g.DrawTextLayout(tl, ip)
        ''
        '' PDF ドキュメントを保存します。
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class