#region OnPrintPage /// <summary> /// Override the default OnPrintPage method of the PrintDocument /// </summary> /// <param name="e"></param> /// <remarks>This provides the print logic for our document</remarks> protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e) { // Run base code base.OnPrintPage(e); //Declare local variables needed int printHeight; int printWidth; int leftMargin; int rightMargin; Int32 lines; Int32 chars; //Set print area size and margins { printHeight = base.DefaultPageSettings.PaperSize.Height - base.DefaultPageSettings.Margins.Top - base.DefaultPageSettings.Margins.Bottom; printWidth = base.DefaultPageSettings.PaperSize.Width - base.DefaultPageSettings.Margins.Left - base.DefaultPageSettings.Margins.Right; leftMargin = base.DefaultPageSettings.Margins.Left; //X rightMargin = base.DefaultPageSettings.Margins.Top; //Y } //Check if the user selected to print in Landscape mode //if they did then we need to swap height/width parameters if (base.DefaultPageSettings.Landscape) { int tmp; tmp = printHeight; printHeight = printWidth; printWidth = tmp; } //Now we need to determine the total number of lines //we're going to be printing Int32 numLines = (int)printHeight / PrinterFont.Height; //Create a rectangle printing are for our document RectangleF printArea = new RectangleF(leftMargin, rightMargin, printWidth, printHeight); //Use the StringFormat class for the text layout of our document StringFormat format = new StringFormat(StringFormatFlags.LineLimit); //Fit as many characters as we can into the print area e.Graphics.MeasureString(_text.Substring(RemoveZeros(curChar)), PrinterFont, new SizeF(printWidth, printHeight), format, out chars, out lines); //Print the page e.Graphics.DrawString(_text.Substring(RemoveZeros(curChar)), PrinterFont, Brushes.Black, printArea, format); //Increase current char count curChar += chars; //Detemine if there is more text to print, if //there is the tell the printer there is more coming if (curChar < _text.Length) { e.HasMorePages = true; } else { e.HasMorePages = false; curChar = 0; } } #endregion
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)