Utilizo o método print do JTable para imprimir um tabela.
Agora, se eu quiser transformar essa saída da impressora e transformar em imagens, uma lista de PNG por exemplo ( ao invés de colocar nas folhas impressas), com cabeçalhos, os render etc etc.
Como poderia ser feito isso ?
Obs: Sei que podemos pegar a tabela e transformar em uma imagem, mas não é isso. Quero o valor daquela impressão, naquela folha x e tranformar em uma imagem. Se a impressão em folha A4 desse 5 páginas, deverei ter 5 imagens com o devido conteúdo.
BufferedImage bu = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB );
Graphics g = bu.createGraphics();
JTable.paint( g );
g.dispose();
ByteArrayOutputStream imageArray = new ByteArrayOutputStream();
ImageIO.write( bu, "png", imageArray );
//demais coisas etc etc
Dai tenho a imagem da tabela.
Mas eu quero a imagem gerada pelo printable do print, que quebra as páginas, coloca os nomes das colunas em todas as páginas , que faz toda “a magia” de ficar tudo perfeito na saída.
Estou estudando o código da sun, qualquer coisa vou colocando novidades.
Consegui resolver a questão estudando a classe TablePrintable nativa da Sun. Fiz umas modificações no código e o resultado é que tenho, de forma transparente e direta, uma cópia do que será impresso, já separados por páginas, nos formato PNG, JPEG ou qualquer arquivo de imagem que o java suporte.
Reutilizei essa classe pois o código realiza algumas formatações muito interessantes, como:
Ajusta o tamanho linhas na página, como o método print faz.
Faz as quebras de páginas e recoloca os nomes das colunas em cada página
Não coloca o Scroll na imagem
Entre outras
Resumindo fica algo muito profissional, diferente de simplesmente pegar o componente e transformá-lo em alguma imagem.
Estou formatando o código para postar de forma mais legível.
Até