Impressão em Java

Olá, estou tentando fazer a impressão de uma string em java, porem quando tento imprimir ela em uma impressora normal, não sai nada, nem da erro. Porém quando peço para imprimir na impressora “Microsoft Print to PDF” ela gera um arquivo mas não é possível ler ele, aparece q esta corrompido.

Segue o codigo:

public void imprimir(String txt) {
    try {
        InputStream prin = new ByteArrayInputStream(txt.getBytes());
        DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        SimpleDoc docTexto = new SimpleDoc(prin, docFlavor, null);

        PrintService impressora;
        PrintService[] ps = PrintServiceLookup.lookupPrintServices(docFlavor, null);
        for (PrintService p : ps) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Selecionar impressora " + p.getName() + "?");
            String sel = sc.nextLine();
            if (sel.equals("1")) {
                impressora = p;
                PrintRequestAttributeSet printer = new HashPrintRequestAttributeSet();
                printer.add(new JobName("Impressao", null));
                printer.add(OrientationRequested.PORTRAIT);
                printer.add(MediaSizeName.ISO_A4);
                DocPrintJob printJob = impressora.createPrintJob();
                try {
                    printJob.print(docTexto, (PrintRequestAttributeSet) printer);
                } catch (PrintException ex) {
                    JOptionPane.showInputDialog(null, "Erro ao imprimir o cupom: " + ex, "Erro de impressão", JOptionPane.ERROR_MESSAGE);
                }
                prin.close();
                break;
            }
        }

    } catch (Exception e) {

        e.printStackTrace();

    }

}

No caso era para imprimir o conteúdo da string conforme abaixo:

Pedido App Della Massa

Pedido: 5
Data:2021-10-04 14:14:23.0
Nome:João Pedro da Silva
Telefone: 12988272288
Rua:Tigre
CEP:06810490 - Num: 226
Bairro:independencia ll
Comp.:Borges

ESFIHA
Quantidade: 1
1 - Calabresa
Obs.: teste

ESFIHA
Quantidade: 2
1 - Mix Chocolate
Obs.: teste doce

LANCHE
Quantidade: 1
1 - Hot Dog Simples
Obs.: tranquilo

PIZZA
Quantidade: 2
1 - Americana
Obs.: recheada

PIZZA
Quantidade: 1
1 - Choconana
Obs.:

PIZZA
Quantidade: 1
1/2 - Degradê com Frutas
1/2 - Doce de Leite
Obs.: teste

SubTotal: 194.4
Taxa de Entrega: 4.00
Total Geral: 198.4
Forma de Pag: Cartão de Credito
Troco: 0

Já verifiquei e a String txt e esta recebendo corretamente o texto. Alguém sabe algo que possa estar errado?

Faça um teste usando o DocFlavor assim:

DocFlavor docFlavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_HOST;

Testei aqui, ele não encontrou nenhuma impressora.

Alguém pode me ajudar?