/* * public void ToPdf(TaskCompletionSource<ToFileResult> taskCompletionSource, WebView xfWebView, string fileName) * { * if (xfWebView.Effects.Any(e=>e is Forms9Patch.WebViewPrintEffect)) * { * * } * } */ async Task NavigationComplete(WKWebView webView, string filename, PageSize pageSize, PageMargin margin, TaskCompletionSource <ToFileResult> taskCompletionSource) { try { var widthString = await webView.EvaluateJavaScriptAsync("document.documentElement.offsetWidth"); var width = double.Parse(widthString.ToString()); var heightString = await webView.EvaluateJavaScriptAsync("document.documentElement.offsetHeight"); var height = double.Parse(heightString.ToString()); if (width < 1 || height < 1) { taskCompletionSource.SetResult(new ToFileResult(true, "WebView has zero width or height")); return; } webView.ClipsToBounds = false; webView.ScrollView.ClipsToBounds = false; if (webView.CreatePdfFile(webView.ViewPrintFormatter, pageSize, margin) is NSMutableData data) { var path = System.IO.Path.Combine(ToPngService.FolderPath(), filename + ".pdf"); System.IO.File.WriteAllBytes(path, data.ToArray()); taskCompletionSource.SetResult(new ToFileResult(false, path)); data.Dispose(); return; } taskCompletionSource.SetResult(new ToFileResult(true, "No data returned.")); } catch (Exception e) { taskCompletionSource.SetResult(new ToFileResult(true, "Exception: " + e.Message + (e.InnerException != null ? "Inner exception: " + e.InnerException.Message : null))); } finally { webView.Dispose(); } }