using System; using System.Collections.Generic; using System.Linq; using QuestPDF.Elements; using QuestPDF.Examples.Engine; using QuestPDF.Fluent; using QuestPDF.Helpers; using QuestPDF.Infrastructure; namespace QuestPDF.Examples { public class TextExample : ExampleTestBase { [ShowResult] [ImageSize(1200, 500)] public void Test(IContainer container) { List Lorem() { return new List { new TextElement() { Style = TextStyle.Default.Size(32).BackgroundColor(Colors.Red.Lighten3), Text = "Lorem ipsum " }, new TextElement() { Style = TextStyle.Default.Size(24).BackgroundColor(Colors.Orange.Lighten3), Text = " dolor " }, new TextElement() { Style = TextStyle.Default.Size(64).BackgroundColor(Colors.Yellow.Lighten3), Text = " sit " }, new TextElement() { Style = TextStyle.Default.Size(32).BackgroundColor(Colors.Green.Lighten3), Text = " amet" } }; } Func> Source = Lorem ; container .Padding(50) .Stack(row => { row.Spacing(50); row.Element().Box().Border(1).Stack(stack => { stack .Element() .Box() //.Background(Placeholders.BackgroundColor()) .Element(new TextRun() { Elements = Source() }); stack .Element() .Box() //.Background(Placeholders.BackgroundColor()) .Element(new TextRun() { Elements = Source() }); stack .Element() .Box() //.Background(Placeholders.BackgroundColor()) .Element(new TextRun() { Elements = Split(Source()) }); }); row.Element().Box().Border(1).Stack(stack => { stack .Element() .Box() .Background(Placeholders.BackgroundColor()) .Element(new TextRun() { Elements = Dense(Source()) }); stack .Element() .Box() .Background(Placeholders.BackgroundColor()) .Element(new TextRun() { Elements = Dense(Source()) }); stack .Element() .Box() .Background(Placeholders.BackgroundColor()) .Element(new TextRun() { Elements = Dense(Split(Source())) }); }); }); } List RandomText() { return Placeholders .Sentence() .Split(" ") .Select(x => new TextElement { Text = $"{x} ", Style = TextStyle.Default.Size(Placeholders.Random.Next(24, 64)) }) .ToList(); } List Split(List elements) { return elements .SelectMany(x => x .Text .Select(y => new TextElement { Style = x.Style, Text = y.ToString() })) .ToList(); } List Dense(List elements) { elements.ForEach(x => x.Style.IsDense = true); return elements; } } }