Ejemplo n.º 1
0
        void IPrint.Print(byte[] content)
        {
            var data    = NSData.FromArray(content);
            var uiimage = UIImage.LoadFromData(data);

            var printer = UIPrintInteractionController.SharedPrintController;



            if (printer == null)
            {
                Console.WriteLine("Unable to print at this time.");
            }
            else
            {
                var printInfo = UIPrintInfo.PrintInfo;

                printInfo.OutputType = UIPrintInfoOutputType.General;

                printInfo.JobName = "Print Job Name";



                printer.PrintInfo = printInfo;

                printer.PrintingItem = uiimage;

                printer.ShowsPageRange = true;



                var handler = new UIPrintInteractionCompletionHandler((printInteractionController, completed, error) =>
                {
                    if (completed)
                    {
                        Console.WriteLine("Print Completed.");
                    }
                    else if (!completed && error != null)
                    {
                        Console.WriteLine("Error Printing.");
                    }
                });

                CGRect frame = new CGRect();
                frame.Size = uiimage.Size;



                printer.Present(true, handler);
            }
        }
Ejemplo n.º 2
0
        public static void Print(string url)
        {
            if (!UIPrintInteractionController.PrintingAvailable)
            {
                new UIAlertView(TouchFactory.Instance.GetResourceString("PrintErrorTitle"),
                                TouchFactory.Instance.GetResourceString("PrintError"), null,
                                TouchFactory.Instance.GetResourceString("Dismiss"), null).Show();

                return;
            }

            string printUrl = null;
            int    index    = url.IndexOf('?');

            if (index >= 0)
            {
                HttpUtility.ParseQueryString(url.Substring(index)).TryGetValue("url", out printUrl);
            }

            UIPrintInfo printInfo = UIPrintInfo.PrintInfo;

            printInfo.OutputType = UIPrintInfoOutputType.General;
            printInfo.Duplex     = UIPrintInfoDuplex.LongEdge;

            if (!string.IsNullOrEmpty(printUrl) && !PrintUrl(printUrl))
            {
                new UIAlertView(TouchFactory.Instance.GetResourceString("PrintErrorTitle"),
                                string.Format(TouchFactory.Instance.GetResourceString("PrintUrlError"), printUrl), null,
                                TouchFactory.Instance.GetResourceString("Dismiss"), null).Show();

                return;
            }

            var navContext = iApp.CurrentNavContext.ActiveLayer.NavContext;
            var stack      = PaneManager.Instance.FromNavContext(navContext.NavigatedActivePane, navContext.NavigatedActiveTab) as BaseNavigationController;

            if (stack == null || stack.CurrentView == null)
            {
                return;
            }

            UIViewController controller = TouchFactory.GetNativeObject <UIViewController>(stack.CurrentView, "view");
            UIView           view       = controller.View;

            if (controller is IBrowserView)
            {
                view = view.Subviews.FirstOrDefault(sv => sv is UIWebView);
            }

            if (!(view is UIWebView) || !PrintUrl(((UIWebView)view).Request.Url.AbsoluteString))
            {
                printInfo.JobName = controller.NavigationItem.Title;
                UIPrintInteractionController.SharedPrintController.PrintInfo = printInfo;

                view.ViewPrintFormatter.StartPage = 0;
                UIPrintInteractionController.SharedPrintController.PrintFormatter = view.ViewPrintFormatter;
            }

            UIPrintInteractionCompletionHandler completionHandler = FinishPrinting;

            if (TouchFactory.Instance.LargeFormFactor)
            {
                UIViewController top = ModalManager.GetTopmostViewController(null);

                nfloat barHeight = TouchFactory.Instance.IsLandscape ? UIApplication.SharedApplication.StatusBarFrame.Width
                                        : UIApplication.SharedApplication.StatusBarFrame.Height;

                nfloat centerX = TouchFactory.Instance.IsLandscape ? top.View.Center.Y : top.View.Center.X;

                UIPrintInteractionController.SharedPrintController.PresentFromRectInView(
                    new CoreGraphics.CGRect(centerX, stack.NavigationBar.Frame.Height + barHeight, 1, 1), top.View, true, completionHandler);
            }
            else
            {
                UIPrintInteractionController.SharedPrintController.Present(true, completionHandler);
            }
        }
 public virtual bool PresentFromBarButtonItem(UIBarButtonItem item, bool animated, [Optional] UIPrintInteractionCompletionHandler completionHandler)
 {
     return(default(bool));
 }
 public virtual bool PresentAnimated(bool animated, [Optional] UIPrintInteractionCompletionHandler completionHandler)
 {
     return(default(bool));
 }
 public virtual bool PrintToPrinter(UIPrinter printer, [Optional] UIPrintInteractionCompletionHandler completionHandler)
 {
     return(default(bool));
 }
 public virtual bool PresentFromRect(CGRect rect, UIView inView, bool animated, [Optional] UIPrintInteractionCompletionHandler completionHandler)
 {
     return(default(bool));
 }