TextTrimming.vb
- ''
- '' This code is part of Document Solutions for PDF demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Drawing
-
- '' This sample demonstrates how to display ellipsis
- '' if a string does Not fit in the allocated space.
- Public Class TextTrimming
- Function CreatePDF(ByVal stream As Stream) As Integer
- Dim doc = New GcPdfDocument()
- Dim page = doc.NewPage()
- Dim g = page.Graphics
- Const Inch = 72
-
- Dim str = "This is a long line of text which does not fit in the allocated space."
- Dim wid = Inch * 4
- Dim dy = 0.3F
-
- Dim rc = Util.AddNote(
- "TextLayout allows you to display ellipsis (or other character) " +
- "at the end of a text line that did not fit in the allocated space." + vbLf +
- "To use trimming, set TrimmingGranularity to Character or Word " +
- "(the default is None). Trimming will kick in if WrapMode is NoWrap, " +
- "and the text is too long. Wrapped text may also display trimming if " +
- "the layout width is too narrow to fit a single word." + vbLf +
- "Below are examples of text untrimmed, trimmed to character and to word. " +
- "The next line demonstrates a different trimming character (tilde in this case). " +
- "The line before last shows how to trim text (respecting TrimmingGranularity) " +
- "without adding any trimming character. " +
- "Finally the last line shows the use of DelimiterCharCode and DelimiterCharCount " +
- "properties to shorten file paths.",
- page)
- Dim top = rc.Bottom + 36
-
- Dim ip = New PointF(rc.Left, top)
-
- Dim tl = g.CreateTextLayout()
- tl.DefaultFormat.Font = StandardFonts.Times
- tl.DefaultFormat.FontSize = 12
- tl.MaxWidth = wid
- tl.WrapMode = WrapMode.NoWrap
-
- '' TrimmingGranularity Is None by default
- tl.Append(str)
- tl.PerformLayout(True)
- g.DrawTextLayout(tl, ip)
- ip.Y += tl.ContentHeight + dy
-
- '' Character trimming:
- tl.TrimmingGranularity = TrimmingGranularity.Character
- '' NOTE that the recalculateGlyphsBeforeLayout parameter to PerformLayout
- '' may be false after the first call, as the text/font has Not changed:
- tl.PerformLayout(False)
- g.DrawTextLayout(tl, ip)
- ip.Y += tl.ContentHeight + dy
-
- '' Word trimming:
- tl.TrimmingGranularity = TrimmingGranularity.Word
- tl.PerformLayout(False)
- g.DrawTextLayout(tl, ip)
- ip.Y += tl.ContentHeight + dy
-
- '' tl.EllipsisCharCode Is HorizontalEllipsis (0x2026) by default.
- '' Change it to a tilde:
- tl.EllipsisCharCode = &H7E
- tl.PerformLayout(False)
- g.DrawTextLayout(tl, ip)
- ip.Y += tl.ContentHeight + dy
-
- '' Finally, we may set tl.EllipsisCharCode to 0 to trim text
- '' without rendering any trimming character:
- tl.EllipsisCharCode = 0
- tl.PerformLayout(False)
- g.DrawTextLayout(tl, ip)
- ip.Y += tl.ContentHeight + dy
-
- '' Another interesting feature Is provided by the pair of
- '' DelimiterCharCode And DelimiterCharCount properties.
- '' These would typically be used to shorten long paths
- '' preserving a specified number of parts at the string's tail:
- tl.Clear()
- tl.EllipsisCharCode = &H2026
- tl.Append("c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe")
- tl.DelimiterCharCode = Asc("\"c)
- tl.DelimiterCharCount = 2
- tl.PerformLayout(True)
- g.DrawTextLayout(tl, ip)
- ip.Y += tl.ContentHeight + dy
-
- g.DrawRectangle(New RectangleF(rc.Left, top, wid, ip.Y - top), Color.OrangeRed)
-
- '' Done
- doc.Save(stream)
- Return doc.Pages.Count
- End Function
- End Class
-