ShowOnceExample.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Linq;
  3. using NUnit.Framework;
  4. using QuestPDF.Examples.Engine;
  5. using QuestPDF.Fluent;
  6. using QuestPDF.Helpers;
  7. using QuestPDF.Infrastructure;
  8. namespace QuestPDF.Examples
  9. {
  10. public class ShowOnceExample
  11. {
  12. [Test]
  13. public void ShowOnce()
  14. {
  15. RenderingTest
  16. .Create()
  17. .ProduceImages()
  18. .ShowResults()
  19. .RenderDocument(container =>
  20. {
  21. container.Page(page =>
  22. {
  23. page.Margin(20);
  24. page.Size(PageSizes.A7.Landscape());
  25. page.PageColor(Colors.White);
  26. page.Header().Text("With show once").SemiBold();
  27. page.Content().PaddingVertical(5).Row(row =>
  28. {
  29. row.RelativeItem()
  30. .Background(Colors.Grey.Lighten2)
  31. .Border(1)
  32. .Padding(5)
  33. .ShowOnce()
  34. .Text(Placeholders.Label());
  35. row.RelativeItem(2)
  36. .Border(1)
  37. .Padding(5)
  38. .Text(Placeholders.Paragraph());
  39. });
  40. page.Footer().Text(text =>
  41. {
  42. text.Span("Page ");
  43. text.CurrentPageNumber();
  44. text.Span(" out of ");
  45. text.TotalPages();
  46. });
  47. });
  48. });
  49. }
  50. [Test]
  51. public void ShowIf()
  52. {
  53. RenderingTest
  54. .Create()
  55. .ProducePdf()
  56. .ShowResults()
  57. .RenderDocument(container =>
  58. {
  59. container.Page(page =>
  60. {
  61. page.Margin(20);
  62. page.Size(PageSizes.A4);
  63. page.PageColor(Colors.White);
  64. page.DefaultTextStyle(x => x.FontSize(20));
  65. page.Header().Text("Show when example").SemiBold();
  66. page.Content().Column(column =>
  67. {
  68. column.Spacing(10);
  69. foreach (var s in Enumerable.Range(0, 10))
  70. {
  71. foreach (var i in Enumerable.Range(0, Random.Shared.Next(10, 50)))
  72. {
  73. column
  74. .Item()
  75. .Height(40)
  76. .Width(150)
  77. .Background(Colors.Grey.Lighten3)
  78. .Text($"{s} - {i}");
  79. }
  80. column.Item().PageBreak();
  81. column.Item().ShowIf(x => x.PageNumber % 2 == 0).PageBreak();
  82. }
  83. });
  84. page.Footer().Text(text =>
  85. {
  86. text.Span("Page ");
  87. text.CurrentPageNumber();
  88. text.Span(" out of ");
  89. text.TotalPages();
  90. });
  91. });
  92. });
  93. }
  94. }
  95. }