Program.cs 5.2 KB

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