Example #1
0
        public void ToPng(TaskCompletionSource <ToFileResult> taskCompletionSource, Xamarin.Forms.WebView xfWebView, string fileName)
        {
            if (Platform.CreateRendererWithContext(xfWebView, Settings.Context) is IVisualElementRenderer renderer)
            {
                Android.Webkit.WebView droidWebView = renderer.View as Android.Webkit.WebView;
                if (droidWebView == null && renderer.View is WebViewRenderer xfWebViewRenderer)
                {
                    droidWebView = xfWebViewRenderer.Control;
                }
                if (droidWebView != null)
                {
                    //var size = new Size(8.5, 11);
                    var externalPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
                    using (var dir = new Java.IO.File(externalPath))
                        using (var file = new Java.IO.File(dir + "/" + fileName + ".png"))
                        {
                            if (!dir.Exists())
                            {
                                dir.Mkdir();
                            }
                            if (file.Exists())
                            {
                                file.Delete();
                            }

                            droidWebView.SetLayerType(LayerType.Software, null);
                            droidWebView.Settings.JavaScriptEnabled = true;
#pragma warning disable CS0618 // Type or member is obsolete
                            droidWebView.DrawingCacheEnabled = true;
                            droidWebView.BuildDrawingCache();
#pragma warning restore CS0618 // Type or member is obsolete

                            droidWebView.SetWebViewClient(new WebViewCallBack(taskCompletionSource, fileName, OnPageFinished));
                        }
                }
            }
        }