Dúvida sobre impressão

Bom dia.

Tem uma dúvida referente a como fazer para imprimir dados que estão em tela, como por exemplo, pegar o valor dos JTextFields, ou imagens, ou qualquer outro arquivo e imprimir.

Tenho um código que é utilizado aqui na empresa, mas ele não atende às minhas necessiades. Será que alguém pode me ajudar?

try{
            PrinterJob printJob = PrinterJob.getPrinterJob();
            Book book = new Book();
            book.append(rel, rel.getFormatoPagina(), rel.getTotalPaginas());
            printJob.setPageable(book);
            
            if (printJob.printDialog()) printJob.print();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro ao imprimir", "Erro", JOptionPane.ERROR_MESSAGE);
        }

A variável é rel, é do tipo Relatorio, um objeto criado por um dos programadores da empresa, mas que pra mim é totalmente incompreensível.