A mi me pasaba igual pero con esta funcion se soluciona. Espero que te sirva
PUBLIC SUB Imprimir_reporte(Text AS String)
DIM textLine AS String
DIM fontHeight AS Integer
DIM pagePosition AS Integer
' Display printer dialog
IF Printer.Setup() THEN RETURN
Draw.Begin(Printer)
' Calcula el tamaño de cada linea del texto
fontHeight = Draw.TextHeight("My DEMO Font Height")
' If the WrapText options is selected then resize each line
pagePosition = 0
FOR EACH textLine IN Split(Text, "\n")
' Chequea si llego al final de la linea
IF pagePosition > (Printer.Height - (3 * fontHeight)) THEN
' Resetea la pagina y vuelve a la posicion inicial para volver a imprimir nueva pagina
pagePosition = 0
Printer.NewPage()
END IF
' Calcula la posicion de la siguiente linea
pagePosition += fontHeight
Draw.Text(textLine, Printer.Resolution / 2, pagePosition)
NEXT
Draw.End
DEC Application.Busy
END '
gambas module file
lo que haces con esto es pesarle como parámetro un textarea cualquiera y se imprime lo que haya en ese textarea. No hace falta que lo envies a html