CodePatternAddressComponentExample.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using QuestPDF.Fluent;
  2. using QuestPDF.Helpers;
  3. using QuestPDF.Infrastructure;
  4. namespace QuestPDF.DocumentationExamples.CodePatterns;
  5. public class CodePatternAddressComponentExample
  6. {
  7. [Test]
  8. public void Example()
  9. {
  10. var address = new Address
  11. {
  12. CompanyName = "Apple",
  13. PostalCode = "95014",
  14. Country = "United States",
  15. City = "Cupertino",
  16. Street = "One Apple Park Way"
  17. };
  18. Document
  19. .Create(document =>
  20. {
  21. document.Page(page =>
  22. {
  23. page.MinSize(new PageSize(0, 0));
  24. page.MaxSize(new PageSize(600, 1200));
  25. page.DefaultTextStyle(x => x.FontSize(20));
  26. page.Margin(25);
  27. page.Content()
  28. .Component(new AddressComponent(address));
  29. });
  30. })
  31. .GenerateImages(x => $"code-pattern-component-address.webp", new ImageGenerationSettings() { ImageFormat = ImageFormat.Webp, ImageCompressionQuality = ImageCompressionQuality.Best, RasterDpi = 144 });
  32. }
  33. public class Address
  34. {
  35. public string CompanyName { get; set; }
  36. public string PostalCode { get; set; }
  37. public string Country { get; set; }
  38. public string City { get; set; }
  39. public string Street { get; set; }
  40. }
  41. public class AddressComponent : IComponent
  42. {
  43. private Address Address { get; }
  44. public AddressComponent(Address address)
  45. {
  46. Address = address;
  47. }
  48. public void Compose(IContainer container)
  49. {
  50. container
  51. .Column(column =>
  52. {
  53. column.Spacing(10);
  54. AddItem("Company name", Address.CompanyName);
  55. AddItem("Postal code", Address.PostalCode);
  56. AddItem("Country", Address.Country);
  57. AddItem("City", Address.City);
  58. AddItem("Street", Address.Street);
  59. void AddItem(string label, string value)
  60. {
  61. column.Item().Text(text =>
  62. {
  63. text.Span($"{label}: ").Bold();
  64. text.Span(value);
  65. });
  66. }
  67. });
  68. }
  69. }
  70. }