Könntest Du nicht einfach eine Zeichenroutine schreiben, der Du den entsprechenden Canvas als Parameter übergibst? Wobei bei einer Bitmap natürlich dann die Abmessungen des Printer.Canvas zu berücksichtigen wären (Höhe, Breite, Seitenränder, Skalierung, etc.). Auf der anderen Seite kannst Du natürlich auch gleich entsprechende PrintPreview-Komponenten verwenden, z.B.
die von DelphiArea.