Hallo,
zum "Daten aus einem DataGridView" hatte ich ja schon etwas gesagt. Das gilt für diese Aufgabe genauso: Zeile für Zeile holen und die Spaltenwerte zusammensetzen...
Es gibt keine vorgefertigte Methode, mit der irgendetwas gedruckt werden kann. Du musst Seite für Seite und Zeile für Zeile gezielt zum Drucker schicken. Richte dich nach dem Beispiel in der SDK-Doku/MSDN/Hilfe zur PrintDocument-Klasse, und zwar den Inhalt des PrintPage-EventHandlers. Relevant ist vor allem, dass mit yPos und leftMargin die Startposition einer Zeile bestimmt werden muss und mit ev.Graphics.DrawString die Zeile gedruckt wird.
Du kannst es dir im ersten Schritt einfach machen und die Schriftart Courier benutzen; dann bekommst du i.V.m. String.Format eine Aufteilung der Spalten. Im nächsten Schritt kannst du für die Schriftart Arial auch die Spalten mit xPos einzeln berechnen.
Viel Erfolg! Jürgen