| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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<byte[]?> 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<byte[][]?> 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<int?> PdfPageCountAsync(byte[]? pdf)
- => Task.Run(() => PdfPageCount(pdf));
- public byte[]? ImageToPdf(byte[]? image) => null;
- public Task<byte[]?> ImageToPdfAsync(byte[]? image)
- => Task.Run(() => ImageToPdf(image));
- }
|