Io conosco questo metodo che ho utilizzato per dei txt:
codice:
        Dim stampa As New Process()
        With stampa
            .StartInfo.FileName = "percorso file"
            .StartInfo.Verb = "printto"
            .StartInfo.Arguments = """" & "nome stampante" & """"
            .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            .StartInfo.UseShellExecute = True
            .StartInfo.CreateNoWindow = True
            .Start()
            .WaitForExit()
            .Dispose()
        End With
che ha il difetto di mostrare il popup di stampa...
Mentre per ottenere i nomi delle stampanti:
codice:
        For a = 0 To PrinterSettings.InstalledPrinters.Count - 1
            Console.WriteLine(PrinterSettings.InstalledPrinters(a))
        Next
Di più non so...
ciao