''
'' This code is part of Document Solutions for PDF .NET demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
Public Class TextJustifyRules
Public Function CreatePDF(ByVal stream As Stream) As Integer
Dim fntInfo = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSans-Bold.ttf"))
Dim fntText = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSansJP-Regular.ttf"))
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim g = page.Graphics
Dim tl = g.CreateTextLayout()
tl.TextAlignment = TextAlignment.Distributed
tl.JustifiedSpaceExtension = 0F
tl.JustifiedTextExtension = 20F
Dim tf = New TextFormat With {.FontSize = 24F, .Font = fntText}
Dim tfInfo = New TextFormat With {.FontSize = 11F, .Font = fntInfo}
Dim marginx As Single = 120, marginy As Single = 36
tl.MaxWidth = page.Size.Width - marginx * 2
Dim text = "abcdefg!1010101010abc999999-12345本列島で使され99 555"
Dim DrawTextLocal As Func(Of TextLayout, Single, Single) =
Function(tlArg As TextLayout, yArg As Single) As Single
Dim pt = New PointF(marginx, yArg + 20)
tlArg.Append(text, tf)
tlArg.PerformLayout(True)
Dim rcLocal = New RectangleF(pt, New SizeF(tlArg.ContentWidth, tlArg.ContentHeight))
g.FillRectangle(rcLocal, Color.PaleGoldenrod)
g.DrawString($"LineBreakingRules.{tlArg.LineBreakingRules}, TextExtensionStrategy.{tlArg.TextExtensionStrategy}:",
tfInfo, New PointF(marginx / 2F, yArg))
g.DrawTextLayout(tlArg, pt)
tlArg.Clear()
Return rcLocal.Bottom + 16
End Function
Dim y As Single = marginy
y = DrawTextLocal(tl, y)
tl.TextExtensionStrategy = TextExtensionStrategy.EastAsianExcel
y = DrawTextLocal(tl, y)
tl.TextExtensionStrategy = TextExtensionStrategy.Excel
y = DrawTextLocal(tl, y)
tl.LineBreakingRules = LineBreakingRules.Simplified
tl.WordBoundaryRules = WordBoundaryRules.Simplified
tl.TextExtensionStrategy = TextExtensionStrategy.Default
y = DrawTextLocal(tl, y)
tl.TextExtensionStrategy = TextExtensionStrategy.EastAsianExcel
y = DrawTextLocal(tl, y)
tl.TextExtensionStrategy = TextExtensionStrategy.Excel
y = DrawTextLocal(tl, y)
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class