Program.cs 5.7 KB

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