MergingDocumentsExamples.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using QuestPDF.Fluent;
  2. using QuestPDF.Helpers;
  3. using QuestPDF.Infrastructure;
  4. namespace QuestPDF.DocumentationExamples;
  5. public class MergingDocumentsExamples
  6. {
  7. [Test]
  8. public async Task UseOriginalPageNumbersExample()
  9. {
  10. Document
  11. .Merge(
  12. GenerateReport("Short Document 1", 5),
  13. GenerateReport("Medium Document 2", 10),
  14. GenerateReport("Long Document 3", 15))
  15. .UseOriginalPageNumbers()
  16. .GeneratePdf("merged.pdf");
  17. }
  18. [Test]
  19. public async Task UseContinuousPageNumbersExample()
  20. {
  21. Document
  22. .Merge(
  23. GenerateReport("Short Document 1", 5),
  24. GenerateReport("Medium Document 2", 10),
  25. GenerateReport("Long Document 3", 15))
  26. .UseContinuousPageNumbers()
  27. .GeneratePdf("merged.pdf");
  28. }
  29. #region Example document
  30. private static Document GenerateReport(string title, int itemsCount)
  31. {
  32. return Document.Create(document =>
  33. {
  34. document.Page(page =>
  35. {
  36. page.Size(PageSizes.A5);
  37. page.Margin(0.5f, Unit.Inch);
  38. page.Header()
  39. .Text(title)
  40. .Bold()
  41. .FontSize(24)
  42. .FontColor(Colors.Blue.Accent2);
  43. page.Content()
  44. .PaddingVertical(20)
  45. .Column(column =>
  46. {
  47. column.Spacing(10);
  48. foreach (var i in Enumerable.Range(0, itemsCount))
  49. {
  50. column
  51. .Item()
  52. .Width(200)
  53. .Height(50)
  54. .Background(Colors.Grey.Lighten3)
  55. .AlignMiddle()
  56. .AlignCenter()
  57. .Text($"Item {i}")
  58. .FontSize(16);
  59. }
  60. });
  61. page.Footer()
  62. .AlignCenter()
  63. .PaddingVertical(20)
  64. .Text(text =>
  65. {
  66. text.DefaultTextStyle(TextStyle.Default.FontSize(16));
  67. text.CurrentPageNumber();
  68. text.Span(" / ");
  69. text.TotalPages();
  70. });
  71. });
  72. });
  73. }
  74. #endregion
  75. }