public async Task <string> ConvertHtmlToPDF(string html, string fileName) { var dir = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/Download/"); var file = new Java.IO.File(dir + "/" + fileName + ".pdf"); if (!dir.Exists()) { dir.Mkdirs(); } int x = 0; while (file.Exists()) { x++; file = new Java.IO.File(dir + "/" + fileName + "(" + x + ")" + ".pdf"); } var webpage = new Android.Webkit.WebView(MainActivity.Instance); //var windowManager = MainActivity.Instance.GetSystemService(Android.Content.Context.WindowService); //DisplayMetrics outMetrics = new DisplayMetrics(); //windowManager.DefaultDisplay.GetMetrics(outMetrics); //int widthPixels = outMetrics.WidthPixels; //int heightPixels = outMetrics.HeightPixels; //int width = widthPixels; //int height = heightPixels; int width = 2102; int height = 2937; webpage.Layout(0, 0, width, height); var client = new WebViewCallBack(file.ToString()); var tokenSource = new CancellationTokenSource(); var task = Task.Run(() => { if (tokenSource.Token.IsCancellationRequested) { return; } while (true) { if (tokenSource.Token.IsCancellationRequested) { break; } } }, tokenSource.Token); client.OnPageLoadFinished += (s, e) => { tokenSource.Cancel(); }; webpage.SetWebViewClient(client); webpage.LoadDataWithBaseURL("", html, "text/html", "UTF-8", null); await task; return(file.ToString()); }
private static async Task <Java.IO.File> SavePhotoToDiskAsync(byte[] data, string directory) { Java.IO.File pictureFile; string photoFileName; using (var pictureFileDir = new Java.IO.File(directory)) { if (!pictureFileDir.Exists() && !pictureFileDir.Mkdirs()) { _logger.LogError("Can't create directory to save image"); return(null); } photoFileName = $"Picture-{Guid.NewGuid().ToString()}.jpg"; var imageFilePath = $"{pictureFileDir.Path}{Java.IO.File.Separator}{photoFileName}"; pictureFile = new Java.IO.File(imageFilePath); } FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream(pictureFile); await fileOutputStream.WriteAsync(data); } catch (Exception e) { _logger.LogError($"File {photoFileName} has not been saved: {e.Message}", e); } finally { fileOutputStream?.Close(); fileOutputStream?.Dispose(); } return(pictureFile); }