Example #1
0
        async Task OnPageFinished(Android.Webkit.WebView webView, string fileName, PageSize pageSize, PageMargin margin, TaskCompletionSource <ToFileResult> taskCompletionSource)
        {
            if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
            {
                await Task.Delay(5);

                var builder = new PrintAttributes.Builder();
                //builder.SetMediaSize(PrintAttributes.MediaSize.NaLetter);
                builder.SetMediaSize(new PrintAttributes.MediaSize(pageSize.Name, pageSize.Name, (int)(pageSize.Width * 1000 / 72), (int)(pageSize.Height * 1000 / 72)));
                builder.SetResolution(new PrintAttributes.Resolution("pdf", "pdf", 72, 72));
                if (margin is null)
                {
                    builder.SetMinMargins(PrintAttributes.Margins.NoMargins);
                }
                else
                {
                    builder.SetMinMargins(new PrintAttributes.Margins((int)(margin.Left * 1000 / 72), (int)(margin.Top * 1000 / 72), (int)(margin.Right * 1000 / 72), (int)(margin.Bottom * 1000 / 72)));
                }
                var attributes = builder.Build();

                var adapter = webView.CreatePrintDocumentAdapter(Guid.NewGuid().ToString());

                var layoutResultCallback = new PdfLayoutResultCallback();
                layoutResultCallback.Adapter = adapter;
                layoutResultCallback.TaskCompletionSource = taskCompletionSource;
                layoutResultCallback.FileName             = fileName;
                adapter.OnLayout(null, attributes, null, layoutResultCallback, null);
            }
        }
Example #2
0
        public override void OnPageFinished(Android.Webkit.WebView webView, string url)
        {
            base.OnPageFinished(webView, url);

            var    printManager = (PrintManager)webView.Context.GetSystemService(Context.PrintService);
            string jobName      = webView.Context.PackageName + ".PrintHtml";
            PrintDocumentAdapter printAdapter = webView.CreatePrintDocumentAdapter(jobName);

            Android.Print.PrintJob printJob = printManager.Print(jobName, printAdapter, new PrintAttributes.Builder().Build());
            printManager.PrintJobs.Add(printJob);
        }
Example #3
0
            private async void CreatePDF2(Android.Webkit.WebView webview)
            {
                try
                {
                    // 计算webview打印需要的页数
                    int numberOfPages = await GetPDFPageCount(webview);

                    File pdfFile = new File(fileNameWithPath);
                    if (pdfFile.Exists())
                    {
                        pdfFile.Delete();
                    }
                    pdfFile.CreateNewFile();
                    descriptor = ParcelFileDescriptor.Open(pdfFile, ParcelFileMode.ReadWrite);
                    // 设置打印参数
                    var             dm         = webview.Context.Resources.DisplayMetrics;
                    var             d          = dm.Density;
                    var             dpi        = dm.DensityDpi;
                    var             height     = dm.HeightPixels;
                    var             width      = dm.WidthPixels;
                    var             xdpi       = dm.Xdpi;
                    var             ydpi       = dm.Ydpi;
                    PrintAttributes attributes = new PrintAttributes.Builder()
                                                 .SetMediaSize(MediaSize)
                                                 .SetResolution(new PrintAttributes.Resolution("id", Context.PrintService, Convert.ToInt16(xdpi), Convert.ToInt16(ydpi)))
                                                 .SetColorMode(PrintColorMode.Color)
                                                 .SetMinMargins(PrintAttributes.Margins.NoMargins)
                                                 .Build();

                    ranges = new PageRange[] { new PageRange(0, numberOfPages - 1) };
                    // 创建pdf文件缓存目录
                    // 获取需要打印的webview适配器
                    printAdapter = webview.CreatePrintDocumentAdapter("CreatePDF");
                    // 开始打印
                    printAdapter.OnStart();
                    printAdapter.OnLayout(attributes, attributes, new CancellationSignal(), GetLayoutResultCallback(this), new Bundle());
                }
                catch (Java.IO.FileNotFoundException e)
                {
                    System.Console.WriteLine(e.Message);
                }
                catch (Java.IO.IOException e)
                {
                    System.Console.WriteLine(e.Message);
                }
                catch (Java.Lang.Exception e)
                {
                    System.Console.WriteLine(e.Message);
                }
            }
 protected void OnElementChanged(Android.Webkit.WebView webView)
 {
     try
     {
         Device.BeginInvokeOnMainThread(() =>
         {
             var printManager = (PrintManager)Forms.Context.GetSystemService(Context.PrintService);
             PrintDocumentAdapter printAdapter = webView.CreatePrintDocumentAdapter("IDCARD");
             PrintJob printJob = printManager.Print("IDCARD", printAdapter, new PrintAttributes.Builder().Build());
             // Save the job object for later status checking
             mPrintJobs.Add(printJob);
         });
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #5
0
        async Task OnPageFinished(Android.Webkit.WebView webView, string fileName, TaskCompletionSource <ToFileResult> taskCompletionSource)
        {
            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
            {
                var builder = new PrintAttributes.Builder();
                builder.SetMediaSize(PrintAttributes.MediaSize.NaLetter);
                builder.SetResolution(new PrintAttributes.Resolution("pdf", "pdf", 600, 600));
                builder.SetMinMargins(PrintAttributes.Margins.NoMargins);
                var attributes = builder.Build();

                var adapter = webView.CreatePrintDocumentAdapter(Guid.NewGuid().ToString());

                var layoutResultCallback = new PdfLayoutResultCallback();
                layoutResultCallback.Adapter = adapter;
                layoutResultCallback.TaskCompletionSource = taskCompletionSource;
                layoutResultCallback.FileName             = fileName;
                adapter.OnLayout(null, attributes, null, layoutResultCallback, null);
            }
        }
Example #6
0
 internal void OnPageLoaded(Android.Webkit.WebView webView)
 {
     try
     {
         if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
         {
             var builder = new PrintAttributes.Builder();
             builder.SetMediaSize(PrintAttributes.MediaSize.IsoA4);
             builder.SetResolution(new PrintAttributes.Resolution("pdf", "pdf", (int)pDFToHtml.PageDPI, (int)pDFToHtml.PageDPI));
             builder.SetMinMargins(PrintAttributes.Margins.NoMargins);
             var attributes           = builder.Build();
             var adapter              = webView.CreatePrintDocumentAdapter(pDFToHtml.FileName);
             var layoutResultCallback = new PdfLayoutResultCallback();
             layoutResultCallback.Adapter   = adapter;
             layoutResultCallback.PDFToHtml = pDFToHtml;
             adapter.OnLayout(null, attributes, null, layoutResultCallback, null);
         }
     }
     catch
     {
         pDFToHtml.Status = PDFEnum.Failed;
     }
 }