Desktop.PdfRenderer.cs 850 B

123456789101112131415161718192021222324252627282930
  1. using InABox.Core;
  2. using PDFtoImage;
  3. using SkiaSharp;
  4. namespace InABox.Avalonia.Platform.Desktop;
  5. public class Desktop_PdfRenderer : IPdfRenderer
  6. {
  7. public byte[]? PdfToImage(byte[]? pdf, int page, int dpi)
  8. {
  9. if (pdf?.Any() != true)
  10. return null;
  11. var result = Conversion.ToImage(pdf, page, options: new RenderOptions(Dpi: dpi));
  12. using var ms = new MemoryStream();
  13. result.Encode(ms, SKEncodedImageFormat.Jpeg, 65);
  14. return ms.ToArray();
  15. }
  16. public Task<byte[]?> PdfToImageAsync(byte[]? pdf, int page, int dpi)
  17. => Task.Run(() => PdfToImage(pdf, page, dpi));
  18. public byte[]? ImageToPdf(byte[]? image)
  19. => null;
  20. public Task<byte[]?> ImageToPdfAsync(byte[]? image)
  21. => Task.Run(() => ImageToPdf(image));
  22. public Logger? Logger { get; set; }
  23. }