ComplexLayoutBenchmark.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 => x.Image(new byte[] { 1, 2, 3 }));
  19. //.Render(x => GenerateStructure(x, 16));
  20. }
  21. private void GenerateStructure(IContainer container, int level)
  22. {
  23. if (level <= 0)
  24. {
  25. container.Background(Placeholders.BackgroundColor()).Height(10);
  26. return;
  27. }
  28. level--;
  29. if (level % 3 == 0)
  30. {
  31. container
  32. .Border(level / 10f)
  33. .BorderColor(Colors.Black)
  34. .Row(row =>
  35. {
  36. row.RelativeColumn().Element(x => GenerateStructure(x, level));
  37. row.RelativeColumn().Element(x => GenerateStructure(x, level));
  38. });
  39. }
  40. else
  41. {
  42. container
  43. .Border(level / 10f)
  44. .BorderColor(Colors.Black)
  45. .Stack(stack =>
  46. {
  47. stack.Item().Element(x => GenerateStructure(x, level));
  48. stack.Item().Element(x => GenerateStructure(x, level));
  49. });
  50. }
  51. }
  52. }
  53. }