Beispiel #1
0
        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;
 }
Beispiel #4
0
 public static void Init(ICustomFontProvider customFontProvider = null, IList <Assembly> rendererAssemblies = null)
 {
     PDFManager.Init(new AndroidImageSource(), customFontProvider, rendererAssemblies);
 }