internal static void Init(ImageSource handler, ICustomFontProvider customFontProvider = null, IList <Assembly> rendererAssemblies = null) { if (Instance == null) { Instance = new PDFManager(); } else { throw new InvalidOperationException("PdfSharp.Xamarin.Forms already initialized before"); } GlobalFontSettings.FontResolver = new FontProvider(customFontProvider); ImageSource.ImageSourceImpl = handler; Instance.Renderers = new Dictionary <Type, Type>(); if (rendererAssemblies == null) { rendererAssemblies = new List <Assembly>(); } var thisAssembly = typeof(PDFManager).GetTypeInfo().Assembly; if (!rendererAssemblies.Contains(thisAssembly)) { rendererAssemblies.Add(thisAssembly); } foreach (var asm in rendererAssemblies) { foreach (var typeInfo in asm.DefinedTypes) { if (typeInfo.IsDefined(typeof(Attributes.PdfRendererAttribute), false)) { var rInfo = typeInfo.GetCustomAttribute <Attributes.PdfRendererAttribute>(); if (Instance.Renderers.ContainsKey(rInfo.ViewType)) { Instance.Renderers[rInfo.ViewType] = typeInfo.AsType(); } else { Instance.Renderers.Add(rInfo.ViewType, typeInfo.AsType()); } } } } }
public static void Init(IPDFHandler handler, ICustomFontProvider customFontProvider = null) { if (Instance == null) { Instance = new PDFManager(); } if (handler == null) { throw new ArgumentNullException("IPDFHandler"); } GlobalFontSettings.FontResolver = new FontProvider(customFontProvider); ImageSource.ImageSourceImpl = handler?.GetImageSource(); Instance.Handler = handler; Instance.Renderers = new Dictionary <Type, Type>(); //register all predefined renderers var assembly = typeof(PDFManager).GetTypeInfo().Assembly; foreach (var typeInfo in assembly.DefinedTypes) { if (typeInfo.IsDefined(typeof(Attributes.PdfRendererAttribute), false)) { var rInfo = typeInfo.GetCustomAttribute <Attributes.PdfRendererAttribute>(); if (Instance.Renderers.ContainsKey(rInfo.ViewType)) { Instance.Renderers[rInfo.ViewType] = typeInfo.AsType(); } else { Instance.Renderers.Add(rInfo.ViewType, typeInfo.AsType()); } } } }
public FontProvider(ICustomFontProvider fontProvider) { _fontProvider = fontProvider; }
public static void Init(ICustomFontProvider customFontProvider = null, IList <Assembly> rendererAssemblies = null) { PDFManager.Init(new AndroidImageSource(), customFontProvider, rendererAssemblies); }