RenderingTest.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Diagnostics;
  3. using System.Runtime.CompilerServices;
  4. using QuestPDF.Elements;
  5. using QuestPDF.Fluent;
  6. using QuestPDF.Infrastructure;
  7. namespace QuestPDF.Examples.Engine
  8. {
  9. public enum RenderingTestResult
  10. {
  11. Pdf,
  12. Images
  13. }
  14. public class RenderingTest
  15. {
  16. private string FileNamePrefix = "test";
  17. private Size Size { get; set; }
  18. private bool ShowResult { get; set; }
  19. private RenderingTestResult ResultType { get; set; } = RenderingTestResult.Images;
  20. private RenderingTest()
  21. {
  22. }
  23. public static RenderingTest Create()
  24. {
  25. return new RenderingTest();
  26. }
  27. public RenderingTest FileName([CallerMemberName] string fileName = "test")
  28. {
  29. FileNamePrefix = fileName;
  30. return this;
  31. }
  32. public RenderingTest PageSize(Size size)
  33. {
  34. Size = size;
  35. return this;
  36. }
  37. public RenderingTest PageSize(int width, int height)
  38. {
  39. return PageSize(new Size(width, height));
  40. }
  41. public RenderingTest ProducePdf()
  42. {
  43. ResultType = RenderingTestResult.Pdf;
  44. return this;
  45. }
  46. public RenderingTest ProduceImages()
  47. {
  48. ResultType = RenderingTestResult.Images;
  49. return this;
  50. }
  51. public RenderingTest ShowResults()
  52. {
  53. ShowResult = true;
  54. return this;
  55. }
  56. public void Render(Action<IContainer> content)
  57. {
  58. var container = new Container();
  59. content(container);
  60. var maxPages = ResultType == RenderingTestResult.Pdf ? 1000 : 10;
  61. var document = new SimpleDocument(container, Size, maxPages);
  62. if (ResultType == RenderingTestResult.Images)
  63. {
  64. Func<int, string> fileNameSchema = i => $"{FileNamePrefix}-${i}.png";
  65. document.GenerateImages(fileNameSchema);
  66. if (ShowResult)
  67. Process.Start("explorer", fileNameSchema(0));
  68. }
  69. if (ResultType == RenderingTestResult.Pdf)
  70. {
  71. var fileName = $"{FileNamePrefix}.pdf";
  72. document.GeneratePdf(fileName);
  73. if (ShowResult)
  74. Process.Start("explorer", fileName);
  75. }
  76. }
  77. }
  78. }