MergedDocumentExamples.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System.Linq;
  2. using NUnit.Framework;
  3. using QuestPDF.Examples.Engine;
  4. using QuestPDF.Fluent;
  5. using QuestPDF.Helpers;
  6. using QuestPDF.Infrastructure;
  7. namespace QuestPDF.Examples
  8. {
  9. [TestFixture]
  10. public class MergedDocumentExamples
  11. {
  12. [Test]
  13. public void Merge_ContinuousPageNumbers()
  14. {
  15. var mergedDocument = Document
  16. .Merge(
  17. GenerateReport("Short Document 1", 5),
  18. GenerateReport("Medium Document 2", 10),
  19. GenerateReport("Long Document 3", 15))
  20. .UseContinuousPageNumbers();
  21. RenderingTest
  22. .Create()
  23. .ProducePdf()
  24. .ShowResults()
  25. .Render(mergedDocument);
  26. }
  27. [Test]
  28. public void Merge_SeparatePageNumbers()
  29. {
  30. var mergedDocument = Document
  31. .Merge(
  32. GenerateReport("Short Document 1", 5),
  33. GenerateReport("Medium Document 2", 10),
  34. GenerateReport("Long Document 3", 15))
  35. .UseOriginalPageNumbers();
  36. RenderingTest
  37. .Create()
  38. .ProducePdf()
  39. .ShowResults()
  40. .Render(mergedDocument);
  41. }
  42. private static Document GenerateReport(string title, int itemsCount)
  43. {
  44. return Document.Create(document =>
  45. {
  46. document.Page(page =>
  47. {
  48. page.Margin(0.5f, Unit.Inch);
  49. page.Size(PageSizes.A5);
  50. page.Header()
  51. .Text(title)
  52. .Bold()
  53. .FontSize(24)
  54. .FontColor(Colors.Blue.Accent2);
  55. page.Content()
  56. .PaddingVertical(20)
  57. .Column(column =>
  58. {
  59. column.Spacing(10);
  60. foreach (var i in Enumerable.Range(1, itemsCount))
  61. {
  62. column
  63. .Item()
  64. .Width(200)
  65. .Height(50)
  66. .Background(Colors.Grey.Lighten3)
  67. .AlignMiddle()
  68. .AlignCenter()
  69. .Text($"Item {i}")
  70. .FontSize(16);
  71. }
  72. });
  73. page.Footer()
  74. .AlignCenter()
  75. .PaddingVertical(20)
  76. .Text(text =>
  77. {
  78. text.DefaultTextStyle(TextStyle.Default.FontSize(16));
  79. text.CurrentPageNumber();
  80. text.Span(" / ");
  81. text.TotalPages();
  82. });
  83. });
  84. });
  85. }
  86. }
  87. }