Ajuda na impressão!

olá pessoal, estou com um probleminha aqui com a minha impressão.

meu código (simples) é esse:


package impressao;

/**
 *
 * @author Hemerson
 */
import java.awt.Graphics;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.awt.Font;
import java.awt.Frame;

public class Impressora {

    public void imprimir() {

        // cria um frame temporário, onde será  desenhado  o texto a ser impresso     
        Frame frame = new Frame("Frame");
        frame.pack();

        // pega o Toolkit do Frame
        Toolkit toolkit = frame.getToolkit();

        // Pega os serviços de impressão existentes no computador,
        // para que seja escolhida uma impressora.
        // Também pode ser uma impressora de rede
        try {
            PrintJob printJob = toolkit.getPrintJob(frame, "print", null);
            // Aqui se inicia a impressão
            if (printJob != null) {
                int posX = 50;
                int posY = 50;
                int enter = 10;
                int numLinha = 1;

                Graphics g = printJob.getGraphics();

                g.setFont(new Font("Courier New", Font.PLAIN, 12));
                g.drawString("Teste de impressão", posX, posY); //titulo da pagina
                posY += enter;
                while (posY < 800) {
                    g.drawString("Linha: " + numLinha + " PosY = " + posY, posX, posY);
                    posY += enter;
                    numLinha++;
                }
                g.setFont(new Font("Courier New", Font.PLAIN, 8));
                g.drawString("página 1", 490, 800); //rodape da pagina

                // libera os recursos gráficos
                g.dispose();
                // encerra a impressão
                printJob.end();
            }
        } catch (Exception e) {
            System.out.println("Erro na impressao: " + e);
        }
        // desfaz o frame temporário
        frame.dispose();
    }
    // Método main para teste

    public static void main(String[] args) {
        Impressora imp = new Impressora();
        imp.imprimir();
        System.exit(0);
    }
}

Explicando:

  • posX nunca muda, mas coloquei caso queira usar outro exemplo
  • posY varia de acordo com o valor do “enter” que é o salto para a proxima linha
  • Basicamente a impressao do codigo é a seguinte:
    Linha: 1 PosY = 60
    Linha: 2 PosY = 70
    Linha: 3 PosY = 80
    Linha: 4 PosY = 90

porém quando a variavel posY for um valor maior que 800, significa que é o fim da pagina.

Se fosse para continuar imprimindo, teria que ir para uma outra pagina.

Como deve ser implementado esse “teria que ir para uma outra pagina” ?

Se no laço while eu trocar o valor 800 por 1500 por exemplo, a impressao é executada porém imprime até o limite da folha (800)
o restante fica em branco.

Grato.

ajudas?

ninguém mesmo?

Me parece que você precisará da classe Book. Crie uma nova instância (new Book()) e use o método append para adicionar páginas ao seu livro (as páginas devem implementar a interface Printable). Depois você deve imprimir o livro.

Consulte a documentação do pacote java.awt.print e procure sobre tutoriais na internet.