La stampa avviene dopo la chiusura del programma perche' tu non usi l'istruzione

Printer.EndDoc

che chiude il documento e indica allo spooler di mandarlo in stampa ...

Ma questo e' il secondo problema ... il primo, quello che riguarda la formattazione, non lo puoi risolvere facilmente perche' questa riguarda unicamente il controllo RichText ...