DifferentHeadersTemplate.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using QuestPDF.Drawing;
  2. using QuestPDF.Fluent;
  3. using QuestPDF.Helpers;
  4. using QuestPDF.Infrastructure;
  5. namespace QuestPDF.ReportSample.Layouts
  6. {
  7. public class DifferentHeadersTemplate : IDocument
  8. {
  9. public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
  10. public DocumentSettings GetSettings() => DocumentSettings.Default;
  11. public void Compose(IDocumentContainer container)
  12. {
  13. container
  14. .Page(page =>
  15. {
  16. page.Margin(40);
  17. page.Size(PageSizes.A4);
  18. page.Header().Element(ComposeHeader);
  19. page.Content().Element(ComposeContent);
  20. page.Footer().Element(ComposeFooter);
  21. });
  22. }
  23. private void ComposeHeader(IContainer container)
  24. {
  25. container.Background(Colors.Grey.Lighten3).Border(1).Column(column =>
  26. {
  27. column.Item().ShowOnce().Padding(5).AlignMiddle().Row(row =>
  28. {
  29. row.RelativeItem(2).AlignMiddle().Text("PRIMARY HEADER").FontColor(Colors.Grey.Darken3).FontSize(30).Bold();
  30. row.RelativeItem(1).AlignRight().MinimalBox().AlignMiddle().Background(Colors.Blue.Darken2).Padding(30);
  31. });
  32. column.Item().SkipOnce().Padding(5).Row(row =>
  33. {
  34. row.RelativeItem(2).Text("SECONDARY HEADER").FontColor(Colors.Grey.Darken3).FontSize(30).Bold();
  35. row.RelativeItem(1).AlignRight().MinimalBox().Background(Colors.Blue.Lighten4).Padding(15);
  36. });
  37. });
  38. }
  39. private void ComposeContent(IContainer container)
  40. {
  41. container.Column(column =>
  42. {
  43. column.Item().PaddingVertical(80).Text("First");
  44. column.Item().PageBreak();
  45. column.Item().PaddingVertical(80).Text("Second");
  46. column.Item().PageBreak();
  47. column.Item().PaddingVertical(80).Text("Third");
  48. column.Item().PageBreak();
  49. });
  50. }
  51. private void ComposeFooter(IContainer container)
  52. {
  53. container.Background(Colors.Grey.Lighten3).Column(column =>
  54. {
  55. column.Item().ShowOnce().Background(Colors.Grey.Lighten3).Row(row =>
  56. {
  57. row.RelativeItem().Text(x =>
  58. {
  59. x.CurrentPageNumber();
  60. x.Span(" / ");
  61. x.TotalPages();
  62. });
  63. row.RelativeItem().AlignRight().Text("Footer for header");
  64. });
  65. column.Item().SkipOnce().Background(Colors.Grey.Lighten3).Row(row =>
  66. {
  67. row.RelativeItem().Text(x =>
  68. {
  69. x.CurrentPageNumber();
  70. x.Span(" / ");
  71. x.TotalPages();
  72. });
  73. row.RelativeItem().AlignRight().Text("Footer for every page except header");
  74. });
  75. });
  76. }
  77. }
  78. }