DifferentHeadersTemplate.cs 3.1 KB

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