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 confirme imagem abaixo:

image

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?

Mano, peguei seu código e executei e parece que funcionou. Tentei imprimir a String:

String texto = "Esse é um texto para ser impresso!";
imprimir(texto); // esse é o seu método

E essa é a página de impressão:

Que estranho, pois tento imprimir ele na minha impressora e nada acontece, ele passa pela fila e mostra como se tivesse impresso, porém na impressora não sai nem o papel em branco. Pode tentar imprimir ele em pdf, por favor?