using InABox.Core; using PDFtoImage; using SkiaSharp; namespace InABox.Avalonia.Platform.Android; public class Android_PdfRenderer : IPdfRenderer { public Logger? Logger { get; set; } public byte[]? PdfToImage(byte[]? pdf, int page, int dpi) { if (pdf is null || pdf.Length == 0) return null; var result = Conversion.ToImage(pdf, page, options: new RenderOptions(Dpi: dpi)); using var ms = new MemoryStream(); result.Encode(ms, SKEncodedImageFormat.Jpeg, 65); return ms.ToArray(); } public Task PdfToImageAsync(byte[]? pdf, int page, int dpi) => Task.Run(() => PdfToImage(pdf, page, dpi)); public byte[][]? PdfToImages(byte[]? pdf, int dpi) { if (pdf is null || pdf.Length == 0) return null; var result = Conversion.ToImages(pdf, options: new RenderOptions(Dpi: dpi)); return result.Select(x => { using var ms = new MemoryStream(); x.Encode(ms, SKEncodedImageFormat.Jpeg, 65); return ms.ToArray(); }).ToArray(); } public Task PdfToImagesAsync(byte[]? pdf, int dpi) => Task.Run(() => PdfToImages(pdf, dpi)); public int? PdfPageCount(byte[]? pdf) { if (pdf is null || pdf.Length == 0) return null; return Conversion.GetPageCount(pdf); } public Task PdfPageCountAsync(byte[]? pdf) => Task.Run(() => PdfPageCount(pdf)); public byte[]? ImageToPdf(byte[]? image) => null; public Task ImageToPdfAsync(byte[]? image) => Task.Run(() => ImageToPdf(image)); }