ComplexLayoutBenchmark.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using NUnit.Framework;
  2. using QuestPDF.Examples.Engine;
  3. using QuestPDF.Fluent;
  4. using QuestPDF.Helpers;
  5. using QuestPDF.Infrastructure;
  6. namespace QuestPDF.Examples
  7. {
  8. public class ComplexLayoutBenchmark
  9. {
  10. [Test]
  11. public void ComplexLayout()
  12. {
  13. RenderingTest
  14. .Create()
  15. .PageSize(PageSizes.A4)
  16. .ProducePdf()
  17. .ShowResults()
  18. .Render(x => GenerateStructure(x, 12));
  19. }
  20. private void GenerateStructure(IContainer container, int level)
  21. {
  22. if (level <= 0)
  23. {
  24. container.Background(Placeholders.BackgroundColor()).Height(10);
  25. return;
  26. }
  27. level--;
  28. if (level % 3 == 0)
  29. {
  30. container
  31. .Border(level / 4f)
  32. .BorderColor(Colors.Black)
  33. .Row(row =>
  34. {
  35. row.RelativeItem().Element(x => GenerateStructure(x, level));
  36. row.RelativeItem().Element(x => GenerateStructure(x, level));
  37. });
  38. }
  39. else
  40. {
  41. container
  42. .Border(level / 4f)
  43. .BorderColor(Colors.Black)
  44. .Column(column =>
  45. {
  46. column.Item().Element(x => GenerateStructure(x, level));
  47. column.Item().Element(x => GenerateStructure(x, level));
  48. });
  49. }
  50. }
  51. }
  52. }