コード例 #1
0
 public void Print(NSObject sender)
 {
     try
     {
         var printInfo = new NSPrintInfo
         {
             Orientation          = NSPrintingOrientation.Landscape,
             LeftMargin           = 45,
             RightMargin          = 30,
             TopMargin            = 30,
             BottomMargin         = 30,
             HorizontalPagination = NSPrintingPaginationMode.Fit,
             VerticallyCentered   = false,
             HorizontallyCentered = false
         };
         var printOperation = NSPrintOperation.FromView(_statusTextView, printInfo);
         printOperation.ShowsPrintPanel        = true;
         printOperation.ShowsProgressPanel     = true;
         printOperation.CanSpawnSeparateThread = true;
         printOperation.PrintPanel.Options     = NSPrintPanelOptions.ShowsCopies | NSPrintPanelOptions.ShowsPageRange | NSPrintPanelOptions.ShowsPreview |
                                                 NSPrintPanelOptions.ShowsPageSetupAccessory | NSPrintPanelOptions.ShowsScaling;
         printOperation.RunOperation();
         printOperation.CleanUpOperation();
     }
     catch (Exception e)
     {
         UIHelpers.ShowMessage($"Sorry there was a problem printing.\nError was: {e.Message}");
     }
 }
コード例 #2
0
		public override bool KnowsPageRange(ref NSRange range)
		{
			NSPrintOperation po = NSPrintOperation.CurrentOperation;
			NSPrintInfo printInfo = po.PrintInfo;

			// Where can I draw?
			pageRect = printInfo.ImageablePageBounds;
			CGRect newFrame = CGRect.Empty;
			newFrame.Location = CGPoint.Empty;
			newFrame.Size = printInfo.PaperSize;
			this.Frame = newFrame;

			// How many lines per page?
			totalLinesPerPage = (nuint)Math.Floor(pageRect.Size.Height / lineHeight);
			employeeLinesPerPage = totalLinesPerPage -2;

			// Pages are 1-based
			range.Location = 1;

			// How many pages will it take?
			range.Length = (nint)people.Count/((nint)employeeLinesPerPage);
			if ((nuint)people.Count % employeeLinesPerPage > 0) {
				range.Length++;
			}
			numberOfPages = range.Length;
			Console.WriteLine("Number of pages: {0}", numberOfPages);
			return true;
		}
コード例 #3
0
            public override void PrepareForPrint(NSPrintOperation operation)
            {
                base.PrepareForPrint(operation);

                var paperSize = operation.PrintInfo.ImageablePageBounds.Size;
                var size      = _preferredSize.ToNS();

                // todo: take into account if width > page size and multiply number of pages as needed.
                var scale = (nfloat)Math.Min(1.0, paperSize.Width / size.Width);

                operation.PrintInfo.ScalingFactor = scale;

                _numPages = (int)Math.Ceiling(_preferredSize.Height / (paperSize.Height / scale));

                size.Width  = (nfloat)(Math.Max(size.Width, paperSize.Width / scale));
                size.Height = (nfloat)(Math.Max(size.Height, paperSize.Height / scale * _numPages));
                SetFrameSize(size);
                UpdateConstraintsForSubtreeIfNeeded();
                LayoutSubtreeIfNeeded();

                // scale to fit
                if (scale < 1)
                {
                    ScaleUnitSquareToSize(new CGSize(scale, scale));
                }
            }
コード例 #4
0
        // NOTE: I needed to add this method and export it as an action in order to hook up the
        // Print... menu to the FirstResponder printDocument: method which has to be called bu the OS
        // and will trigger the call to PrintOperation(NSDictionary printSettings, out NSError outError)
        // However, once I added this method and made the connection, I no longer need this here,
        // so it was just needed to be able to set the target/ action pair for the Print... menu.
//		[Action("printDocument:")]
//		public override void PrintDocument(NSObject sender)
//		{
//			//base.PrintDocument(sender);
//		}

        public override NSPrintOperation PrintOperation(NSDictionary printSettings, out NSError outError)
        {
            outError = new NSError();
            PeopleView       view      = new PeopleView(NSArray.FromObjects(Employees.ToArray()));
            NSPrintInfo      printInfo = this.PrintInfo;
            NSPrintOperation printOp   = NSPrintOperation.FromView(view, printInfo);

            return(printOp);
        }
コード例 #5
0
ファイル: MacView.cs プロジェクト: CheckTech/Eto
        public void Print(PrintSettings settings)
        {
            var op = NSPrintOperation.FromView(EventControl);

            if (settings != null)
            {
                op.PrintInfo = ((PrintSettingsHandler)settings.Handler).Control;
            }
            op.ShowsPrintPanel = false;
            op.RunOperation();
        }
コード例 #6
0
        public void PrintPDF(NSUrl fileUrl)
        {
            // Create the print settings.
            ContentWebView.MainFrame.FrameView.PrintDocumentView();
            //printOperationWithPrintInfo: printInfo]

            NSPrintInfo sharePrintInfo = NSPrintInfo.SharedPrintInfo;
            var         sharedDict     = sharePrintInfo.Dictionary;

            NSMutableDictionary printInfoDict = NSMutableDictionary.FromDictionary(sharedDict);

            printInfoDict.Add(NSObject.FromObject("NSPrintHeaderAndFooter"), NSObject.FromObject(true));
            printInfoDict.Add(NSObject.FromObject("NSPrintJobDisposition"), NSObject.FromObject("NSPrintSpoolJob"));               //  NSPrintSaveJob

            var printInfo = new NSPrintInfo(printInfoDict);

            printInfo.TopMargin            = 72.0f;
            printInfo.BottomMargin         = 72.0f;
            printInfo.LeftMargin           = 0.0f;
            printInfo.RightMargin          = 0.0f;
            printInfo.HorizontalPagination = NSPrintingPaginationMode.Fit;
            printInfo.VerticalPagination   = NSPrintingPaginationMode.Auto;
            printInfo.HorizontallyCentered = true;
            printInfo.VerticallyCentered   = false;
            printInfo.ScalingFactor        = 0.5f;
            var rect = printInfo.ImageablePageBounds;
            // Create the document reference.
            var pdfData = ContentWebView.MainFrame.FrameView.DocumentView.DataWithPdfInsideRect(
                ContentWebView.MainFrame.FrameView.DocumentView.Frame);

            PdfDocument pdfDocument = new PdfDocument(pdfData);

            PdfView pdfView = new PdfView();

            pdfView.SetFrameSize(ContentWebView.MainFrame.FrameView.Frame.Size);
            pdfView.SetFrameOrigin(new CGPoint(0, 0));
            pdfView.Document = pdfDocument;

            var op = NSPrintOperation.FromView(pdfView.DocumentView, printInfo);

            op.ShowsProgressPanel = true;
            op.ShowsPrintPanel    = true;
            op.RunOperation();

            //op.RunOperationModal(View.Window,null);
        }
コード例 #7
0
ファイル: PrintDocumentHandler.cs プロジェクト: cwensley/Eto
            public override void PrepareForPrint(NSPrintOperation operation)
            {
                base.PrepareForPrint(operation);

                var paperSize = operation.PrintInfo.ImageablePageBounds.Size;
                var size      = Frame.Size;

                // todo: take into account if width > page size and multiply number of pages as needed.

                _numPages = (int)Math.Ceiling(_preferredSize.Height / paperSize.Height);

                size.Width  = (nfloat)Math.Max(size.Width, paperSize.Width);
                size.Height = (nfloat)Math.Max(size.Height, paperSize.Height);

                SetFrameSize(size);
                UpdateConstraintsForSubtreeIfNeeded();
            }
コード例 #8
0
 public void PrintDocument(IPrintViewController tableViewController)
 {
     try
     {
         var printingViewController = new TablePrintingViewController(tableViewController);
         var printOperation         = NSPrintOperation.FromView(printingViewController.PrintView, PrintInfo);
         printOperation.ShowsPrintPanel        = true;
         printOperation.ShowsProgressPanel     = true;
         printOperation.CanSpawnSeparateThread = true;
         printOperation.PrintPanel.Options     = NSPrintPanelOptions.ShowsCopies | NSPrintPanelOptions.ShowsPageRange | NSPrintPanelOptions.ShowsPreview |
                                                 NSPrintPanelOptions.ShowsPageSetupAccessory | NSPrintPanelOptions.ShowsScaling;
         printOperation.RunOperation();
         printOperation.CleanUpOperation();
     }
     catch (Exception e)
     {
         UIHelpers.ShowMessage($"Sorry there was a problem printing.\nError was: {e.Message}");
     }
 }
コード例 #9
0
        public void Print(NSObject sender)
        {
            try
            {
                var printInfo = new NSPrintInfo
                {
                    Orientation          = NSPrintingOrientation.Landscape,
                    LeftMargin           = 45,
                    RightMargin          = 30,
                    TopMargin            = 30,
                    BottomMargin         = 30,
                    HorizontalPagination = NSPrintingPaginationMode.Auto,
                    VerticallyCentered   = false,
                    HorizontallyCentered = false
                };
                var printView = new NSView
                {
                    AutoresizesSubviews = true
                };
                var indPrintVC = new TablePrintingViewController(_individualsViewController);
                var famPrintVC = new TablePrintingViewController(_familiesViewController);
                indPrintVC.View.SetFrameOrigin(new CoreGraphics.CGPoint(0, famPrintVC.TotalHeight));
                printView.AddSubview(indPrintVC.View);
                printView.AddSubview(famPrintVC.View);

                var width  = Math.Max(indPrintVC.TotalWidth, famPrintVC.TotalWidth);
                var height = indPrintVC.TotalHeight + famPrintVC.TotalHeight;
                printView.SetFrameSize(new CoreGraphics.CGSize(width, height));

                var printOperation = NSPrintOperation.FromView(printView, printInfo);
                printOperation.ShowsPrintPanel        = true;
                printOperation.ShowsProgressPanel     = true;
                printOperation.CanSpawnSeparateThread = true;
                printOperation.PrintPanel.Options     = NSPrintPanelOptions.ShowsCopies | NSPrintPanelOptions.ShowsPageRange | NSPrintPanelOptions.ShowsPreview |
                                                        NSPrintPanelOptions.ShowsPageSetupAccessory | NSPrintPanelOptions.ShowsScaling;
                printOperation.RunOperation();
                printOperation.CleanUpOperation();
            }
            catch (Exception e)
            {
                UIHelpers.ShowMessage($"Sorry there was a problem printing.\nError was: {e.Message}");
            }
        }
コード例 #10
0
        public bool Print(bool showPanel, Window parent, NSPrintPanel panel)
        {
            var op = NSPrintOperation.FromView(Control);

            if (printSettings != null)
            {
                op.PrintInfo = printSettings.ToNS();
            }
            if (panel != null)
            {
                op.PrintPanel = panel;
            }
            op.ShowsPrintPanel = showPanel;
            if (parent != null)
            {
                var parentHandler = (IMacWindow)parent.Handler;
                var closeSheet    = new SheetHelper();
                op.RunOperationModal(parentHandler.Control, closeSheet, new Selector("printOperationDidRun:success:contextInfo:"), IntPtr.Zero);
                NSApplication.SharedApplication.RunModalForWindow(parentHandler.Control);
                return(closeSheet.Success);
            }
            return(op.RunOperation());
        }
コード例 #11
0
ファイル: PrintDocumentHandler.cs プロジェクト: pcdummy/Eto
 void PrintOperationDidRun(NSPrintOperation operation, bool success, IntPtr contextInfo)
 {
     //NSApplication.SharedApplication.StopModalWithCode (success ? 1 : 0);
 }