Nei primi tempi in cui programmavo utilizzavo un RichTextBox e lo riempivo con delle stringhe ed alla fine stampavo il contenuto; c'erano però dei problemi a mescolare immagini e parole (???) quindi ho dovuto abbandonare quel metodo. Così con un po' di fatica ma molta soddisfazione sono passato all'utilizzo dell'ActiveX di Word. In pratica crei con VB il documento di stampa e per gli allineamenti puoi usare le tabelle di Word (il tutto con Codice VB); se hai problemi scrivimi.
Ora mi pare di capire che stai utilizzando l'oggetto printer: un po' menoso per fare stampe, anche se molto efficiente. Per formattare le stringhe potresti costruirti a mano ogni riga di stampa: la parola 'Ciao', ad esempio, la puoi stampare con dei caratteri spazio davanti, anche se poi, a causa dei caratteri proporzionali, le righe successive rimarrebbero leggermente disallineate.
Ultimo consiglio: guarda se riesci a passare all'ActiveX di Word