| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | using InABox.Core;using Syncfusion.Pdf;using Syncfusion.Pdf.Graphics;using Syncfusion.PdfToImageConverter;namespace InABox.Avalonia.Platform.Desktop;public class Desktop_PdfRenderer : IPdfRenderer{    public byte[]? PdfToImage(byte[]? pdf, int page, int dpi)    {        if (pdf?.Any() != true)            return null;                using (var inData = new MemoryStream(pdf))        {            using (var converter = new PdfToImageConverter(inData))            {                using (var outData = new MemoryStream())                {                    converter.Convert(page,true,false)                        .CopyTo(outData);                    return outData.ToArray();                }            }        }            }    public Task<byte[]?> PdfToImageAsync(byte[]? pdf, int page, int dpi)        => Task.Run(() => PdfToImage(pdf, page, dpi));    public byte[]? ImageToPdf(byte[]? image)    {         if (image?.Any() != true)            return null;        using var imgStream = new MemoryStream(image);                var bmp = new PdfBitmap(imgStream);                var doc = new PdfDocument();                var section = doc.Sections.Add();        section.PageSettings.Margins.All = 0;        section.PageSettings.Width = bmp.Width;        section.PageSettings.Height = bmp.Height;                var page = section.Pages.Add();        page.Graphics.DrawImage(bmp, 0, 0, page.Size.Width, page.Size.Height);        using var docStream = new MemoryStream();                doc.Save(docStream);        return docStream.GetBuffer();    }    public Task<byte[]?> ImageToPdfAsync(byte[]? image)        => Task.Run(() => ImageToPdf(image));    public Logger? Logger { get; set; }}
 |