private Font verdana10Font; private StreamReader reader; private void SendToPrinter(string filename) { reader = new StreamReader(filename); verdana10Font = new Font("Verdana", 10); PrintDialog printDialog = new PrintDialog(); printDialog.ShowDialog(); PrintDocument pd = new PrintDocument(); pd.PrinterSettings = printDialog.PrinterSettings; pd.PrintPage += new PrintPageEventHandler(this.PrintTextFileHandler); pd.Print(); if (reader != null) reader.Close(); File.Delete(filename); } private void PrintTextFileHandler(object sender, PrintPageEventArgs ppeArgs) { Graphics g = ppeArgs.Graphics; float linesPerPage = 0; float yPos = 0; int count = 0; float leftMargin = ppeArgs.MarginBounds.Left; float topMargin = ppeArgs.MarginBounds.Top; string line = null; linesPerPage = ppeArgs.MarginBounds.Height / verdana10Font.GetHeight(g); while (count < linesPerPage && ((line = reader.ReadLine()) != null)) { yPos = topMargin + (count * verdana10Font.GetHeight(g)); g.DrawString(line, verdana10Font, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; } if (line != null) { ppeArgs.HasMorePages = true; } else { ppeArgs.HasMorePages = false; } }