Program.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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. Document
  10. .Create(container =>
  11. {
  12. container.Page(page =>
  13. {
  14. page.Content()
  15. .Padding(1, Unit.Centimetre)
  16. .SemanticDocument()
  17. .SemanticPart()
  18. .SemanticParagraph()
  19. // .DefaultTextStyle(x => x.DisableFontFeature(FontFeatures.StandardLigatures))
  20. .Column(d =>
  21. {
  22. d.Item().SemanticLanguage("en-US").SemanticSpan().Text(text =>
  23. {
  24. text.Span("This is a simple document with a Polish translation - isn't it nice, huh?");
  25. });
  26. d.Item().SemanticLanguage("pl-PL").SemanticSpan().Text(text =>
  27. {
  28. text.Span("To jest przykład dokumentu zawierającego tłumaczenie w języku polskim");
  29. });
  30. // d.Item().SemanticHeader("Top-Level Header").Text("Top-Level Header");
  31. //
  32. // d.Item().SemanticPart().Column(p =>
  33. // {
  34. // p.Item().SemanticHeader("Second-Level Header 1").Text("Second-Level Header 1");
  35. // p.Item().SemanticParagraph().Text(Placeholders.LoremIpsum());
  36. // });
  37. //
  38. // d.Item().SemanticPart().Column(p =>
  39. // {
  40. // p.Item().SemanticHeader("Second-Level Header 2").Text("Second-Level Header 2");
  41. // p.Item().SemanticParagraph().Text(Placeholders.LoremIpsum());
  42. // });
  43. });
  44. });
  45. })
  46. .WithMetadata(new DocumentMetadata() { Title = "Dupa!", Language = "en-US" })
  47. .GeneratePdfAndShow();
  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. }