Program.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using QuestPDF;
  2. using QuestPDF.Companion;
  3. using QuestPDF.Fluent;
  4. using QuestPDF.Helpers;
  5. using QuestPDF.Infrastructure;
  6. using QuestPDF.ReportSample;
  7. using QuestPDF.ReportSample.Layouts;
  8. Settings.License = LicenseType.Professional;
  9. //await RunGenericException();
  10. //await RunLayoutError();
  11. await RunSimpleDocument();
  12. //await RunReportDocument();
  13. //await RunDocumentWithMultiplePages();
  14. Task RunGenericException()
  15. {
  16. return Document
  17. .Create(container =>
  18. {
  19. container.Page(page =>
  20. {
  21. page.Content()
  22. .PaddingVertical(1, Unit.Centimetre)
  23. .Column(x =>
  24. {
  25. x.Spacing(20);
  26. x.Item().Text(Placeholders.LoremIpsum());
  27. x.Item().Hyperlink("questpdf.com").Image(Placeholders.Image(300, 200));
  28. throw new Exception("New exception");
  29. });
  30. });
  31. })
  32. .ShowInCompanionAsync();
  33. }
  34. Task RunLayoutError()
  35. {
  36. return Document
  37. .Create(container =>
  38. {
  39. container.Page(page =>
  40. {
  41. page.Size(PageSizes.A4);
  42. page.Margin(2, Unit.Centimetre);
  43. page.PageColor(Colors.White);
  44. page.DefaultTextStyle(x => x.FontSize(20));
  45. page.Content()
  46. .PaddingVertical(1, Unit.Centimetre)
  47. .Column(x =>
  48. {
  49. x.Spacing(20);
  50. x.Item().Text(Placeholders.LoremIpsum());
  51. foreach (var i in Enumerable.Range(0, 15))
  52. {
  53. x.Item().Background(Colors.Grey.Lighten3).MaxWidth(200).Container().Width(100 + i * 10).Height(50).Text($"Item {i}");
  54. }
  55. });
  56. });
  57. })
  58. .ShowInCompanionAsync();
  59. }
  60. Task RunSimpleDocument()
  61. {
  62. return Document
  63. .Create(container =>
  64. {
  65. container.Page(page =>
  66. {
  67. page.Size(PageSizes.A4);
  68. page.Margin(2, Unit.Centimetre);
  69. page.PageColor(Colors.White);
  70. page.DefaultTextStyle(x => x.FontSize(20));
  71. page.Header()
  72. .Text("Hello PDF!")
  73. .SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);
  74. page.Content()
  75. .PaddingVertical(1, Unit.Centimetre)
  76. .Column(x =>
  77. {
  78. x.Spacing(20);
  79. x.Item().Text(Placeholders.LoremIpsum());
  80. x.Item().Hyperlink("questpdf.com").Image(Placeholders.Image(200, 100));
  81. });
  82. page.Footer()
  83. .AlignCenter()
  84. .Text(x =>
  85. {
  86. x.Span("Page ");
  87. x.CurrentPageNumber();
  88. });
  89. });
  90. })
  91. .ShowInCompanionAsync();
  92. }
  93. Task RunReportDocument()
  94. {
  95. ImagePlaceholder.Solid = true;
  96. var model = DataSource.GetReport();
  97. var report = new StandardReport(model);
  98. return report.ShowInCompanionAsync();
  99. }
  100. Task RunDocumentWithMultiplePages()
  101. {
  102. return Document
  103. .Create(document =>
  104. {
  105. foreach (var i in Enumerable.Range(10, 10))
  106. {
  107. document.Page(page =>
  108. {
  109. page.Size(new PageSize(i * 20, i * 30));
  110. page.Margin(20);
  111. page.Content().Background(Placeholders.BackgroundColor());
  112. });
  113. }
  114. })
  115. .ShowInCompanionAsync();
  116. }
  117. Task RunMergedDocument()
  118. {
  119. var document1 = Document
  120. .Create(container =>
  121. {
  122. container.Page(page =>
  123. {
  124. page.Content()
  125. .Text("Page 1!")
  126. .SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);
  127. });
  128. });
  129. var document2 = Document
  130. .Create(container =>
  131. {
  132. container.Page(page =>
  133. {
  134. page.Content()
  135. .Text("Page 2!")
  136. .SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);
  137. });
  138. });
  139. var mergedDocument = Document.Merge(document1, document2);
  140. return mergedDocument.ShowInCompanionAsync();
  141. }