Exemple #1
0
 public override void OnEndPrint(PrintDocument document, PrintEventArgs e)
 {
     SysPrn.GlobalService.EndDoc(e.GraphicsContext);
 }
        // methods
        public void Print()
        {
            PrintEventArgs printArgs = new PrintEventArgs();

            this.OnBeginPrint(printArgs);
            if (printArgs.Cancel)
            {
                return;
            }
            PrintController.OnStartPrint(this, printArgs);
            if (printArgs.Cancel)
            {
                return;
            }

            // 原实现
            //Graphics g = null;
            //if (printArgs.GraphicsContext != null) {
            //	Graphics.FromHdc (printArgs.GraphicsContext.Hdc); //todo:
            //	printArgs.GraphicsContext.Graphics = g;
            //}

            // while there are more pages
            PrintPageEventArgs printPageArgs;

            do
            {
                QueryPageSettingsEventArgs queryPageSettingsArgs = new QueryPageSettingsEventArgs(
                    DefaultPageSettings.Clone() as PageSettings);
                OnQueryPageSettings(queryPageSettingsArgs);

                PageSettings pageSettings = queryPageSettingsArgs.PageSettings;
                printPageArgs = new PrintPageEventArgs(
                    null /*g*/,
                    pageSettings.Bounds,
                    new Rectangle(0, 0, pageSettings.PaperSize.Width, pageSettings.PaperSize.Height),
                    pageSettings);

                // 原TODO: We should create a graphics context for each page since they can have diferent paper
                // size, orientation, etc. We use a single graphic for now to keep Cairo using a single PDF file.
                // 现每个Page一个Graphics

                printPageArgs.GraphicsContext = printArgs.GraphicsContext;
                Graphics pg = PrintController.OnStartPage(this, printPageArgs);
                // assign Graphics in printPageArgs
                printPageArgs.SetGraphics(pg);

                if (!printPageArgs.Cancel)
                {
                    this.OnPrintPage(printPageArgs);
                }

                PrintController.OnEndPage(this, printPageArgs);
                if (printPageArgs.Cancel)
                {
                    break;
                }
            } while (printPageArgs.HasMorePages);

            this.OnEndPrint(printArgs);
            PrintController.OnEndPrint(this, printArgs);
        }
Exemple #3
0
 public override void OnStartPrint(PrintDocument document, PrintEventArgs e)
 {
     SysPrn.GlobalService.CreateGraphicsContext(document);
     e.GraphicsContext = new GraphicsPrinter(document);
     SysPrn.GlobalService.StartDoc(e.GraphicsContext, document.DocumentName, string.Empty);
 }