Sip, con el PrintDocument, estoy seguro que se hace con coordenadas, de lo contrario todo te saldria en la posicion 0,0 y te imaginas un cheque todo en la esquina izquierda? eso debe ser desastrozo, espera busco algo.....
buscando....
Insertas un objeto PrintDocument en el formulario y en el evento
printDocument1_PrintPage puedes hacer algo como esto:
Código:
e.Graphics.DrawString("CODIGO DE PRODUCTO", fuenteTitulo, Brushes.Black, 10,100);//Titulo
"CODIGO DE PRODUCTO" = Texto que necesito que salga.
fuenteTitulo = Es una familia de fuentes, previamente tengo esta linea, donde indico fuente, tamaño, tipo, etc.
Código:
Font fuenteTitulo = new Font("Verdana",6,FontStyle.Regular);
Brushes.Black =

Lo siento pero esta no recuerdo para que sirve, fijate en las sobrecargas haber que explicacion dan.
Y sigue lo que necesitas:
, 10,100) = Posicion X y Y donde comenzara a escribir el texto.
Recuerda hacer muchas pruebas para que estes seguro que saldra siempre donde debe ser, prueba con texto largo, etc. etc.
Se me ocurre que si la persona llena el cheque desde el programa podrias tenes en el backgroud del form una imagen de cheque asi dara la impresion de hacerlo directamente sobre el cheque.
Saludos