CodePatternDocumentStructureExample.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using QuestPDF.Fluent;
  2. using QuestPDF.Helpers;
  3. using QuestPDF.Infrastructure;
  4. namespace QuestPDF.DocumentationExamples.CodePatterns;
  5. public class CodePatternDocumentStructureExample
  6. {
  7. [Test]
  8. public void Example()
  9. {
  10. var content = GenerateReport();
  11. File.WriteAllBytes("code-pattern-document-structure.pdf", content);
  12. }
  13. public byte[] GenerateReport()
  14. {
  15. return Document
  16. .Create(document =>
  17. {
  18. document.Page(page =>
  19. {
  20. page.Size(PageSizes.A5);
  21. page.DefaultTextStyle(x => x.FontSize(20));
  22. page.Margin(25);
  23. page.Content()
  24. .PaddingBottom(15)
  25. .Column(column =>
  26. {
  27. column.Item().Element(ReportTitle);
  28. column.Item().PageBreak();
  29. column.Item().Element(RedSection);
  30. column.Item().PageBreak();
  31. column.Item().Element(GreenSection);
  32. column.Item().PageBreak();
  33. column.Item().Element(BlueSection);
  34. });
  35. page.Footer().AlignCenter().Text(text => text.CurrentPageNumber());
  36. });
  37. })
  38. .GeneratePdf();
  39. }
  40. private void ReportTitle(IContainer container)
  41. {
  42. container.Extend()
  43. .AlignCenter()
  44. .AlignMiddle()
  45. .Text("Multi-section report")
  46. .FontSize(48)
  47. .Bold();
  48. }
  49. private void RedSection(IContainer container)
  50. {
  51. container.Grid(grid =>
  52. {
  53. grid.Columns(3);
  54. grid.Spacing(15);
  55. grid.Item(3 ).Text("Red section")
  56. .FontColor(Colors.Red.Darken2).FontSize(32).Bold();
  57. grid.Item(3).Text(Placeholders.Paragraph()).Light();
  58. foreach (var i in Enumerable.Range(0, 6))
  59. grid.Item().AspectRatio(4 / 3f).Background(Colors.Red.Lighten4);
  60. });
  61. }
  62. private void GreenSection(IContainer container)
  63. {
  64. container.Grid(grid =>
  65. {
  66. grid.Columns(3);
  67. grid.Spacing(15);
  68. grid.Item(3).Text("Green section")
  69. .FontColor(Colors.Green.Darken2).FontSize(32).Bold();
  70. grid.Item(3).Text(Placeholders.Paragraph()).Light();
  71. foreach (var i in Enumerable.Range(0, 12))
  72. grid.Item().AspectRatio(4 / 3f).Background(Colors.Green.Lighten4);
  73. });
  74. }
  75. private void BlueSection(IContainer container)
  76. {
  77. container.Grid(grid =>
  78. {
  79. grid.Columns(3);
  80. grid.Spacing(15);
  81. grid.Item(3).Text("Blue section")
  82. .FontColor(Colors.Blue.Darken2).FontSize(32).Bold();
  83. grid.Item(3).Text(Placeholders.Paragraph()).Light();
  84. foreach (var i in Enumerable.Range(0, 18))
  85. grid.Item().AspectRatio(4 / 3f).Background(Colors.Blue.Lighten4);
  86. });
  87. }
  88. }