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); }
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); }