PdfRenderer.Android.cs 686 B

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