Lo que puedes hacer es, en lugar de imprimir el reporte, exportarlo a PDF y enviarlo al cliente. El PDF lo abre y lo imprime en la impresora que quiera. Así mantendrás el formato.
Código:
Dim rptStream As New IO.MemoryStream
rptStream = reporte.ExportToStream(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "attachment;filename=" & "Factura.pdf")
Response.BinaryWrite(rptStream.ToArray())
Response.End()
Espero que te sirva.
Un saludo.