2021-09-14 00:16:16 +02:00
using System ;
using System.Linq ;
2021-09-14 02:02:45 +02:00
using System.Text ;
2021-08-25 03:40:16 +02:00
using NUnit.Framework ;
2021-08-09 22:35:39 +02:00
using QuestPDF.Examples.Engine ;
using QuestPDF.Fluent ;
using QuestPDF.Helpers ;
using QuestPDF.Infrastructure ;
namespace QuestPDF.Examples
{
public class TextExamples
{
2021-10-01 01:44:42 +02:00
[Test]
public void SimpleTextBlock ()
{
RenderingTest
. Create ()
. PageSize ( 500 , 300 )
2021-10-23 02:59:47 +02:00
2021-10-01 01:44:42 +02:00
. ProduceImages ()
. ShowResults ()
. Render ( container =>
{
container
. Padding ( 5 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-10-01 01:44:42 +02:00
. Border ( 1 )
. Padding ( 10 )
. Text ( text =>
{
text . DefaultTextStyle ( TextStyle . Default . Size ( 20 ));
text . Span ( "This is a normal text, followed by an " );
text . Span ( "underlined red text." , TextStyle . Default . Size ( 20 ). Color ( Colors . Red . Medium ). Underline ());
});
});
}
[Test]
public void ParagraphSpacing ()
{
RenderingTest
. Create ()
. PageSize ( 500 , 300 )
. ProduceImages ()
. ShowResults ()
. Render ( container =>
{
container
. Padding ( 5 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-10-01 01:44:42 +02:00
. Border ( 1 )
. Padding ( 10 )
. Text ( text =>
{
text . ParagraphSpacing ( 10 );
foreach ( var i in Enumerable . Range ( 1 , 3 ))
{
text . Span ( $"Paragraph {i}: " , TextStyle . Default . SemiBold ());
text . Line ( Placeholders . Paragraph ());
}
});
});
}
[Test]
public void CustomElement ()
{
RenderingTest
. Create ()
. PageSize ( 500 , 200 )
. ProduceImages ()
. ShowResults ()
. Render ( container =>
{
container
. Padding ( 5 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-10-01 01:44:42 +02:00
. Border ( 1 )
. Padding ( 10 )
. Text ( text =>
{
text . DefaultTextStyle ( TextStyle . Default . Size ( 20 ));
text . Span ( "This is a random image aligned to the baseline: " );
text . Element ()
. PaddingBottom (- 6 )
. Height ( 24 )
. Width ( 48 )
. Image ( Placeholders . Image );
text . Span ( "." );
});
});
}
2021-08-09 22:35:39 +02:00
[Test]
public void TextElements ()
{
RenderingTest
. Create ()
2021-08-25 03:40:16 +02:00
. PageSize ( PageSizes . A4 )
2021-08-09 22:35:39 +02:00
. ProducePdf ()
2021-08-27 01:55:20 +02:00
. ShowResults ()
2021-08-09 22:35:39 +02:00
. Render ( container =>
{
2021-08-25 03:40:16 +02:00
container
. Padding ( 20 )
2021-09-12 21:01:10 +02:00
. Padding ( 10 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-08-25 03:40:16 +02:00
. Border ( 1 )
. Padding ( 5 )
2021-09-12 21:01:10 +02:00
. Padding ( 10 )
2021-08-25 03:40:16 +02:00
. Text ( text =>
{
2021-09-12 21:01:10 +02:00
text . DefaultTextStyle ( TextStyle . Default );
2021-09-12 21:37:46 +02:00
text . AlignLeft ();
2021-09-12 21:01:10 +02:00
text . ParagraphSpacing ( 10 );
2021-09-14 02:02:45 +02:00
text . Line ( Placeholders . LoremIpsum ());
2021-09-12 21:01:10 +02:00
2021-09-30 22:48:39 +02:00
text . Span ( $"This is target text that should show up. {DateTime.UtcNow:T} > This is a short sentence that will be wrapped into second line hopefully, right? <" , TextStyle . Default . Underline ());
2021-09-14 02:02:45 +02:00
});
});
}
[Test]
2022-01-09 00:11:34 +01:00
public void Textcolumn ()
2021-09-14 02:02:45 +02:00
{
RenderingTest
. Create ()
. PageSize ( PageSizes . A4 )
. ProducePdf ()
. ShowResults ()
. Render ( container =>
{
container
. Padding ( 20 )
. Padding ( 10 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-09-14 02:02:45 +02:00
. Border ( 1 )
. Padding ( 5 )
. Padding ( 10 )
. Text ( text =>
{
text . DefaultTextStyle ( TextStyle . Default );
text . AlignLeft ();
text . ParagraphSpacing ( 10 );
foreach ( var i in Enumerable . Range ( 1 , 100 ))
text . Line ( $"{i}: {Placeholders.Paragraph()}" );
2021-09-12 21:01:10 +02:00
});
});
}
2021-09-12 21:37:46 +02:00
[Test]
public void SpaceIssue ()
{
RenderingTest
. Create ()
. PageSize ( PageSizes . A4 )
. ProducePdf ()
. ShowResults ()
. Render ( container =>
{
container
. Padding ( 20 )
. Padding ( 10 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-09-12 21:37:46 +02:00
. Border ( 1 )
. Padding ( 5 )
. Padding ( 10 )
. Text ( text =>
{
text . DefaultTextStyle ( TextStyle . Default );
text . AlignLeft ();
text . ParagraphSpacing ( 10 );
text . Span ( Placeholders . LoremIpsum ());
2021-09-13 01:06:06 +02:00
text . EmptyLine ();
2021-09-12 21:37:46 +02:00
text . Span ( "This text is a normal text, " );
text . Span ( "this is a bold text, " , TextStyle . Default . Bold ());
2021-09-14 12:16:49 +02:00
text . Span ( "this is a red and underlined text, " , TextStyle . Default . Color ( Colors . Red . Medium ). Underline ());
2021-09-12 21:37:46 +02:00
text . Span ( "and this is slightly bigger text." , TextStyle . Default . Size ( 16 ));
2021-09-13 01:06:06 +02:00
text . EmptyLine ();
2021-09-12 21:37:46 +02:00
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 ( "." );
2021-09-13 01:06:06 +02:00
text . EmptyLine ();
2021-09-12 21:37:46 +02:00
text . Span ( "This is page number " );
text . CurrentPageNumber ();
text . Span ( " out of " );
text . TotalPages ();
2021-09-13 01:06:06 +02:00
text . EmptyLine ();
2021-09-12 21:37:46 +02:00
text . ExternalLocation ( "Please visit QuestPDF website" , "https://www.questpdf.com" );
2021-09-13 01:06:06 +02:00
text . EmptyLine ();
text . Span ( Placeholders . Paragraphs ());
2021-09-12 21:37:46 +02:00
2021-09-13 01:06:06 +02:00
text . EmptyLine ();
text . Span ( Placeholders . Paragraphs (), TextStyle . Default . Italic ());
text . Line ( "This is target text that does not show up. " + Placeholders . Paragraph ());
2021-09-12 21:37:46 +02:00
});
});
}
2021-09-13 01:06:06 +02:00
2021-09-12 21:01:10 +02:00
[Test]
2021-09-13 01:06:06 +02:00
public void HugeList ()
2021-09-12 21:01:10 +02:00
{
RenderingTest
. Create ()
2021-09-13 01:06:06 +02:00
. PageSize ( PageSizes . A4 )
. ProducePdf ()
2021-09-12 21:01:10 +02:00
. ShowResults ()
. Render ( container =>
{
container
2021-09-13 01:06:06 +02:00
. Padding ( 20 )
2021-09-12 21:01:10 +02:00
. Padding ( 10 )
2022-01-06 00:22:07 +01:00
. MinimalBox ()
2021-09-12 21:01:10 +02:00
. Border ( 1 )
2021-09-13 01:06:06 +02:00
. Padding ( 5 )
2021-09-12 21:01:10 +02:00
. Padding ( 10 )
. Text ( text =>
{
2022-03-01 23:22:14 +01:00
text . DefaultTextStyle ( TextStyle . Default . BackgroundColor ( Colors . Grey . Lighten3 ));
2021-09-12 21:01:10 +02:00
text . AlignLeft ();
text . ParagraphSpacing ( 10 );
2021-09-13 01:06:06 +02:00
text . Span ( "This text is a normal text, " );
text . Span ( "this is a bold text, " , TextStyle . Default . Bold ());
2021-09-14 12:16:49 +02:00
text . Span ( "this is a red and underlined text, " , TextStyle . Default . Color ( Colors . Red . Medium ). Underline ());
2021-09-13 01:06:06 +02:00
text . Span ( "and this is slightly bigger text." , TextStyle . Default . Size ( 16 ));
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 . EmptyLine ();
2022-03-01 23:22:14 +01:00
foreach ( var i in Enumerable . Range ( 1 , 1000 ))
2021-09-13 01:06:06 +02:00
{
text . Line ( $"{i}: {Placeholders.Paragraph()}" );
text . ExternalLocation ( "Please visit QuestPDF website" , "https://www.questpdf.com" );
text . Span ( "This is page number " );
text . CurrentPageNumber ();
text . Span ( " out of " );
text . TotalPages ();
2021-09-30 22:48:39 +02:00
text . EmptyLine ();
2021-09-13 01:06:06 +02:00
}
2021-08-25 03:40:16 +02:00
});
2021-08-09 22:35:39 +02:00
});
}
}
}