BorderExamples.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. using QuestPDF.Fluent;
  2. using QuestPDF.Helpers;
  3. using QuestPDF.Infrastructure;
  4. namespace QuestPDF.DocumentationExamples;
  5. public class BorderExamples
  6. {
  7. [Test]
  8. public void SimpleExample()
  9. {
  10. Document
  11. .Create(document =>
  12. {
  13. document.Page(page =>
  14. {
  15. page.ContinuousSize(450);
  16. page.DefaultTextStyle(x => x.FontSize(20));
  17. page.Margin(25);
  18. page.PageColor(Colors.White);
  19. page.Content()
  20. .Border(3, Colors.Blue.Darken4)
  21. .Background(Colors.Blue.Lighten5)
  22. .Padding(25)
  23. .Text(text =>
  24. {
  25. text.DefaultTextStyle(x => x.FontColor(Colors.Blue.Darken4).FontSize(16));
  26. text.Span("TIP: ").Bold();
  27. text.Span("You can use borders to create visual separation between elements in your document. Borders can be applied to any element, including text, images, and containers.");
  28. });
  29. });
  30. })
  31. .GenerateImages(x => "border-simple.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  32. }
  33. [Test]
  34. public void Multiple()
  35. {
  36. Document
  37. .Create(document =>
  38. {
  39. document.Page(page =>
  40. {
  41. page.MinSize(new PageSize(0, 0));
  42. page.MaxSize(new PageSize(1000, 1000));
  43. page.DefaultTextStyle(x => x.FontSize(20));
  44. page.Margin(25);
  45. page.PageColor(Colors.White);
  46. page.Content()
  47. .Shrink()
  48. .BorderVertical(5)
  49. .BorderColor(Colors.Green.Darken2)
  50. .BorderAlignmentInside()
  51. .Container()
  52. .BorderHorizontal( 10)
  53. .BorderColor(Colors.Blue.Lighten1)
  54. .BorderAlignmentInside()
  55. .Background(Colors.Grey.Lighten2)
  56. .PaddingVertical(25)
  57. .PaddingHorizontal(50)
  58. .Text("Content");
  59. });
  60. })
  61. .GenerateImages(x => "border-multiple.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  62. }
  63. [Test]
  64. public void ConsistentThickness()
  65. {
  66. Document
  67. .Create(document =>
  68. {
  69. document.Page(page =>
  70. {
  71. page.MinSize(new PageSize(550, 0));
  72. page.MaxSize(new PageSize(550, 1000));
  73. page.DefaultTextStyle(x => x.FontSize(20));
  74. page.Margin(25);
  75. page.PageColor(Colors.White);
  76. page.Content()
  77. .Row(row =>
  78. {
  79. row.Spacing(25);
  80. row.RelativeItem()
  81. .Border(1, Colors.Black)
  82. .Padding(10)
  83. .AlignCenter()
  84. .Text("Thin");
  85. row.RelativeItem()
  86. .Border(3, Colors.Black)
  87. .Padding(10)
  88. .AlignCenter()
  89. .Text("Medium");
  90. row.RelativeItem()
  91. .Border(9, Colors.Black)
  92. .Padding(10)
  93. .AlignCenter()
  94. .Text("Bold");
  95. });
  96. });
  97. })
  98. .GenerateImages(x => "border-thickness-consistent.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  99. }
  100. [Test]
  101. public void VariousThickness()
  102. {
  103. Document
  104. .Create(document =>
  105. {
  106. document.Page(page =>
  107. {
  108. page.MinSize(new PageSize(0, 0));
  109. page.MaxSize(new PageSize(1000, 1000));
  110. page.DefaultTextStyle(x => x.FontSize(20));
  111. page.Margin(25);
  112. page.PageColor(Colors.White);
  113. page.Content()
  114. .BorderLeft(4)
  115. .BorderTop(6)
  116. .BorderRight(8)
  117. .BorderBottom(10)
  118. .Padding(25)
  119. .Text("Sample text");
  120. });
  121. })
  122. .GenerateImages(x => "border-thickness-various.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  123. }
  124. [Test]
  125. public void Alignment()
  126. {
  127. Document
  128. .Create(document =>
  129. {
  130. document.Page(page =>
  131. {
  132. page.MinSize(new PageSize(725, 0));
  133. page.MaxSize(new PageSize(725, 1000));
  134. page.DefaultTextStyle(x => x.FontSize(20));
  135. page.Margin(50);
  136. page.PageColor(Colors.White);
  137. page.Content()
  138. .Row(row =>
  139. {
  140. row.Spacing(25);
  141. row.RelativeItem()
  142. .Background(Colors.Grey.Lighten1)
  143. .Padding(25)
  144. .Text("No Border");
  145. row.RelativeItem()
  146. .Border(10, Colors.Grey.Darken2)
  147. .BorderAlignmentInside()
  148. .Padding(25)
  149. .Text("Border Inside");
  150. row.RelativeItem()
  151. .Border(10, Colors.Grey.Darken2)
  152. .BorderAlignmentMiddle()
  153. .Padding(25)
  154. .Text("Border Middle");
  155. row.RelativeItem()
  156. .Border(10, Colors.Grey.Darken2)
  157. .BorderAlignmentOutside()
  158. .Padding(25)
  159. .Text("Border Outside");
  160. });
  161. });
  162. })
  163. .GenerateImages(x => "border-alignment.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  164. }
  165. [Test]
  166. public void RoundedCorners1()
  167. {
  168. Document
  169. .Create(document =>
  170. {
  171. document.Page(page =>
  172. {
  173. page.MinSize(new PageSize(0, 0));
  174. page.MaxSize(new PageSize(1000, 1000));
  175. page.DefaultTextStyle(x => x.FontSize(20));
  176. page.Margin(25);
  177. page.PageColor(Colors.White);
  178. page.Content()
  179. .CornerRadius(10)
  180. .Border(1, Colors.Black)
  181. .Background(Colors.Grey.Lighten2)
  182. .Padding(25)
  183. .Text("Border with rounded corners");
  184. });
  185. })
  186. .GenerateImages(x => "border-rounded-corners-1.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  187. }
  188. [Test]
  189. public void RoundedCorners2()
  190. {
  191. Document
  192. .Create(document =>
  193. {
  194. document.Page(page =>
  195. {
  196. page.MinSize(new PageSize(0, 0));
  197. page.MaxSize(new PageSize(1000, 1000));
  198. page.DefaultTextStyle(x => x.FontSize(20));
  199. page.Margin(25);
  200. page.PageColor(Colors.White);
  201. page.Content()
  202. .CornerRadius(10)
  203. .BorderLeft(10)
  204. .BorderAlignmentInside()
  205. .BorderColor(Colors.Green.Darken2)
  206. .Background(Colors.Green.Lighten4)
  207. .Padding(25)
  208. .PaddingLeft(10)
  209. .DefaultTextStyle(x => x.FontColor(Colors.Green.Darken4))
  210. .Column(column =>
  211. {
  212. column.Item().Text("Completed").Bold();
  213. column.Item().Height(5);
  214. column.Item().Text("The invoice has been paid in full.").FontSize(16);
  215. });
  216. });
  217. })
  218. .GenerateImages(x => "border-rounded-corners-2.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  219. }
  220. [Test]
  221. public void SolidColor()
  222. {
  223. Document
  224. .Create(document =>
  225. {
  226. document.Page(page =>
  227. {
  228. page.ContinuousSize(450);
  229. page.DefaultTextStyle(x => x.FontSize(20));
  230. page.Margin(25);
  231. page.PageColor(Colors.White);
  232. page.Content()
  233. .Row(row =>
  234. {
  235. var colors = new[]
  236. {
  237. Colors.Red.Medium,
  238. Colors.Green.Medium,
  239. Colors.Blue.Medium
  240. };
  241. row.Spacing(25);
  242. foreach (var color in colors)
  243. {
  244. row.RelativeItem()
  245. .Border(5)
  246. .BorderColor(color)
  247. .Padding(15)
  248. .Text(color)
  249. .FontColor(color);
  250. }
  251. });
  252. });
  253. })
  254. .GenerateImages(x => "border-color-solid.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  255. }
  256. [Test]
  257. public void Gradient()
  258. {
  259. Document
  260. .Create(document =>
  261. {
  262. document.Page(page =>
  263. {
  264. page.MinSize(new PageSize(0, 0));
  265. page.MaxSize(new PageSize(1000, 1000));
  266. page.DefaultTextStyle(x => x.FontSize(20));
  267. page.Margin(25);
  268. page.PageColor(Colors.White);
  269. page.Content()
  270. .Column(column =>
  271. {
  272. column.Spacing(25);
  273. column.Item()
  274. .Border(5)
  275. .BorderLinearGradient(0, [Colors.Red.Darken1, Colors.Blue.Darken1])
  276. .BorderAlignmentInside()
  277. .Padding(25)
  278. .Text("Horizontal gradient");
  279. column.Item()
  280. .Border(10)
  281. .BorderLinearGradient(45, [Colors.Green.Darken1, Colors.LightGreen.Darken1, Colors.Yellow.Darken1])
  282. .BorderAlignmentInside()
  283. .Padding(25)
  284. .Text("Diagonal gradient");
  285. column.Item()
  286. .Border(10)
  287. .BorderLinearGradient(90, [Colors.Yellow.Darken1, Colors.Amber.Darken1, Colors.Orange.Darken1])
  288. .CornerRadius(20)
  289. .Padding(25)
  290. .Text("Vertical gradient");
  291. });
  292. });
  293. })
  294. .GenerateImages(x => "border-color-gradient.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.VeryHigh, RasterDpi = 144 });
  295. }
  296. }