From 175db288f63e672039cb74e174fbc109043b54bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zi=C4=85bek?= Date: Sun, 12 Sep 2021 21:37:46 +0200 Subject: [PATCH] Improved text measuring performance --- QuestPDF.Examples/TextExamples.cs | 64 ++++++++++++++++++++++++++++- QuestPDF/Elements/Text/TextBlock.cs | 4 +- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/QuestPDF.Examples/TextExamples.cs b/QuestPDF.Examples/TextExamples.cs index 8384bd0..4a1c4de 100644 --- a/QuestPDF.Examples/TextExamples.cs +++ b/QuestPDF.Examples/TextExamples.cs @@ -30,7 +30,7 @@ namespace QuestPDF.Examples .Text(text => { text.DefaultTextStyle(TextStyle.Default); - text.AlignRight(); + text.AlignLeft(); text.ParagraphSpacing(10); text.Span(Placeholders.LoremIpsum()); @@ -59,11 +59,71 @@ namespace QuestPDF.Examples text.ExternalLocation("Please visit QuestPDF website", "https://www.questpdf.com"); - text.Span("\nThis is \npage number "); + text.NewLine(); + + text.Span(Placeholders.Sentence()); }); }); } + [Test] + public void SpaceIssue() + { + RenderingTest + .Create() + .PageSize(PageSizes.A4) + .FileName() + .ProducePdf() + .ShowResults() + .Render(container => + { + container + .Padding(20) + .Padding(10) + .Box() + .Border(1) + .Padding(5) + .Padding(10) + .Debug() + .Text(text => + { + text.DefaultTextStyle(TextStyle.Default); + text.AlignLeft(); + text.ParagraphSpacing(10); + + text.Span(Placeholders.LoremIpsum()); + + text.NewLine(); + + text.Span("This text is a normal text, "); + text.Span("this is a bold text, ", TextStyle.Default.Bold()); + text.Span("this is a red and underlined text, ", TextStyle.Default.Color(Colors.Red.Medium).Underlined()); + text.Span("and this is slightly bigger text.", TextStyle.Default.Size(16)); + + text.NewLine(); + + text.Span("The new text element also supports injecting custom content between words: "); + text.Element().PaddingBottom(-10).Height(16).Width(32).Image(Placeholders.Image); + text.Span("."); + + text.NewLine(); + + text.Span("This is page number "); + text.CurrentPageNumber(); + text.Span(" out of "); + text.TotalPages(); + + text.NewLine(); + + text.ExternalLocation("Please visit QuestPDF website", "https://www.questpdf.com"); + + text.NewLine(); + + text.Span("This is target text that does not show up."); + }); + }); + } + [Test] public void PageNumber() { diff --git a/QuestPDF/Elements/Text/TextBlock.cs b/QuestPDF/Elements/Text/TextBlock.cs index 9edfc0f..18f52b5 100644 --- a/QuestPDF/Elements/Text/TextBlock.cs +++ b/QuestPDF/Elements/Text/TextBlock.cs @@ -27,7 +27,7 @@ namespace QuestPDF.Elements.Text if (!RenderingQueue.Any()) return new FullRender(Size.Zero); - var lines = DivideTextItemsIntoLines(availableSpace.Width, availableSpace.Height); + var lines = DivideTextItemsIntoLines(availableSpace.Width, availableSpace.Height).ToList(); if (!lines.Any()) return new PartialRender(Size.Zero); @@ -51,7 +51,7 @@ namespace QuestPDF.Elements.Text internal override void Draw(Size availableSpace) { - var lines = DivideTextItemsIntoLines(availableSpace.Width, availableSpace.Height + Size.Epsilon).ToList(); + var lines = DivideTextItemsIntoLines(availableSpace.Width, availableSpace.Height).ToList(); if (!lines.Any()) return;