コード例 #1
0
ファイル: PDFService_Android.cs プロジェクト: GeorGeWzw/Forms
            /// <summary>
            /// Note: Not stable.
            /// </summary>
            /// <param name="webview"></param>
            private async void CreatePDF1(Android.Webkit.WebView webview)
            {
                //var pageCount = await GetPDFPageCount(webview);
                PdfDocument document = new PdfDocument();

                PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(2120, 3000, 1).Create());

                await Task.Delay(34);

                webview.Draw(page.Canvas);
                document.FinishPage(page);
                Stream           filestream = null;
                FileOutputStream fos        = null;

                try
                {
                    filestream = new MemoryStream();
                    fos        = new Java.IO.FileOutputStream(fileNameWithPath, false);
                    document.WriteTo(filestream);
                    fos.Write(((MemoryStream)filestream).ToArray(), 0, (int)filestream.Length);
                }
                catch (Java.Lang.Exception e)
                {
                    System.Console.WriteLine(e.Message);
                }
                finally
                {
                    filestream?.Close();
                    fos?.Close();
                }

                document.Close();

                OnPageLoadFinished?.Invoke(this, new EventArgs());
            }
コード例 #2
0
            public override void LoadingFinished(UIWebView webView)
            {
                double height, width;
                int    header, sidespace;

                width     = 595.2;
                height    = 841.8;
                header    = 10;
                sidespace = 10;

                UIEdgeInsets pageMargins = new UIEdgeInsets(header, sidespace, header, sidespace);

                webView.ViewPrintFormatter.ContentInsets = pageMargins;

                UIPrintPageRenderer renderer = new UIPrintPageRenderer();

                renderer.AddPrintFormatter(webView.ViewPrintFormatter, 0);

                CGSize pageSize      = new CGSize(width, height);
                CGRect printableRect = new CGRect(sidespace,
                                                  header,
                                                  pageSize.Width - (sidespace * 2),
                                                  pageSize.Height - (header * 2));
                CGRect paperRect = new CGRect(0, 0, width, height);

                renderer.SetValueForKey(NSValue.FromObject(paperRect), (NSString)"paperRect");
                renderer.SetValueForKey(NSValue.FromObject(printableRect), (NSString)"printableRect");
                NSData file = PrintToPDFWithRenderer(renderer, paperRect);

                File.WriteAllBytes(filename, file.ToArray());

                OnPageLoadFinished?.Invoke(this, new EventArgs());
            }
コード例 #3
0
ファイル: PDFService_Android.cs プロジェクト: GeorGeWzw/Forms
 public Java.Lang.Object Invoke(Java.Lang.Object proxy, Method method, Java.Lang.Object[] args)
 {
     if (method.Name.Equals("onLayoutFinished"))
     {
         // 监听到内部调用了onLayoutFinished()方法,即打印成功
         onLayoutSuccess();
     }
     else if (method.Name.Equals("onWriteFinished"))
     {
         OnPageLoadFinished?.Invoke(this, new EventArgs());
     }
     else
     {
         // 监听到打印失败或者取消了打印
     }
     return(null);
 }