Beispiel #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);
            }
        }
        public void PrintDocument(string filePath)
        {
            var attr = new PrintAttributes.Builder()
                       .SetColorMode(PrintColorMode.Color)
                       .SetMediaSize(PrintAttributes.MediaSize.IsoA4)
                       .SetDuplexMode(DuplexMode.LongEdge)
                       .Build();
            var jobName = Android.App.Application.Context.PackageName + ".PrintDocument";
            var job     = PrintManager.Print(jobName, new PrintAdapter(filePath), attr);

            PrintManager.PrintJobs.Add(job);
        }
Beispiel #3
0
            public override void OnPageFinished(WebView view, string url)
            {
                base.OnPageFinished(view, url);

                string          jobName    = "Document";
                PrintAttributes attributes = new PrintAttributes.Builder()
                                             .SetMediaSize(PrintAttributes.MediaSize.IsoA4)
                                             .SetResolution(new PrintAttributes.Resolution("pdf", "pdf", 600, 600))
                                             .SetMinMargins(PrintAttributes.Margins.NoMargins).Build();
                PdfPrint pdfPrint = new PdfPrint(attributes);

                pdfPrint.Print(view.CreatePrintDocumentAdapter(jobName));
            }
Beispiel #4
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);
                }
            }
        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);
            }
        }
Beispiel #6
0
        public void GeneratePdfFile(string text)
        {
            PrintAttributes printAttrs = new PrintAttributes.Builder()
                                         .SetColorMode(PrintColorMode.Color)
                                         .SetMediaSize(PrintAttributes.MediaSize.IsoA4)
                                         .SetResolution(new PrintAttributes.Resolution("guardianHealthId", "TestReport", 592, 842))
                                         .SetMinMargins(PrintAttributes.Margins.NoMargins)
                                         .Build();

            // Create a document
            PdfDocument document = new PrintedPdfDocument(Android.App.Application.Context, printAttrs);

            // Create a page description
            // A4 : Page size
            // pageWidth The page width in PostScript (1/72th of an inch)
            // pageHeight The page height in PostScript(1 / 72th of an inch).
            PageInfo pageInfo = new PageInfo.Builder(592, 842, 1).Create();

            PdfDocument.Page page = document.StartPage(pageInfo);

            Xamarin.Forms.Button btn = new Xamarin.Forms.Button();


            // File to create page
            File path = GetDirectoryPath();

            System.IO.FileStream fileStream = new System.IO.FileStream(path.ToString(), System.IO.FileMode.Create);

            Canvas canvas = page.Canvas;
            Paint  paint  = new Paint();

            canvas.DrawText("This is a demo pdf file.\n" + text, 10, 10, paint);

            document.FinishPage(page);
            document.WriteTo(fileStream);
            document.Close();
            fileStream.Close();
        }
 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;
     }
 }