12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Drawing;
- using System.IO;
- using System.Threading.Tasks;
- using Rg.Plugins.Popup.Animations;
- using Syncfusion.Pdf;
- using Syncfusion.Pdf.Graphics;
- namespace InABox.Mobile
- {
- public class MobileDocument
- {
- public string FileName { get; set; }
- public byte[] Data { get; set; }
- public MobileDocument()
- {
- FileName = "";
- Data = new byte[] { };
- }
-
- public MobileDocument(string filename, byte[] data)
- {
- FileName = filename;
- Data = data;
- }
-
- public void ConvertToPDF()
- {
- using (var img = new MemoryStream(Data))
- {
- var image = new PdfBitmap(img);
- var pdfDoc = new PdfDocument();
- var section = pdfDoc.Sections.Add();
- section.PageSettings.Margins.All = 0;
- section.PageSettings.Width = image.Width;
- section.PageSettings.Height = image.Height;
- var page = section.Pages.Add();
- page.Graphics.DrawImage(image, 0, 0, page.Size.Width, page.Size.Height);
- using (var ms = new MemoryStream())
- {
- pdfDoc.Save(ms);
- Data = ms.GetBuffer();
- FileName = Path.ChangeExtension(FileName, "pdf");
- }
- }
- }
-
- public bool IsPDF() => FileName.ToUpper().EndsWith(".PDF");
-
- public static async Task<MobileDocument> From<TSource, TOptions>(TSource source)
- where TSource : MobileDocumentSource
- where TOptions : MobileDocumentOptions<TSource>
- {
- var result = await source.From();
- return result;
- }
-
- public static async Task<MobileDocument> From<T>(MobileDocumentOptions<T> options) where T : MobileDocumentSource
- {
- var source = (T)Activator.CreateInstance(typeof(T), new object[] { options });
- var result = await source.From();
- return result;
- }
-
- }
- }
|