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.