PdfRenderer.Android.cs 847 B

123456789101112131415161718192021222324252627282930
  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[]? PdfToImage(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[]?> PdfToImageAsync(byte[]? pdf, int page, int dpi)
  18. => Task.Run(() => PdfToImage(pdf, page, dpi));
  19. public byte[]? ImageToPdf(byte[]? image) => null;
  20. public Task<byte[]?> ImageToPdfAsync(byte[]? image)
  21. => Task.Run(() => ImageToPdf(image));
  22. }