'''' This code is part of Document Solutions for PDF .NET demos.'' Copyright (c) MESCIUS inc. All rights reserved.''ImportsSystem.IOImportsSystem.DrawingImportsGrapeCity.Documents.PdfImportsGrapeCity.Documents.Text '' This sample demonstrates how to display ellipsis'' if a string does Not fit in the allocated space.PublicClassTextTrimmingFunctionCreatePDF(ByVal stream AsStream) AsIntegerDim doc = NewGcPdfDocument()Dim page = doc.NewPage()Dim g = page.GraphicsConstInch = 72 Dim str = "This is a long line of text which does not fit in the allocated space."Dim wid = Inch * 4Dim 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 = NewPointF(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(NewRectangleF(rc.Left, top, wid, ip.Y - top), Color.OrangeRed) '' Done doc.Save(stream)Return doc.Pages.CountEndFunctionEndClass