Olá!
Estou utilizando o pacote java.awt.print para imprimir um relatório em uma impressora matricial.
O problema que estou enfrentado é que, caso uma string seja muito grande, não consigo fazer com que o conteúdo seja
enviado para a próxima linha. Sei que existem as classes PageFormat e Paper mas já fiz várias modificações e o conteúdo da
string não é quebrado.
Alguém sabe o que pode estar acontecendo?
A seguir um código de exemplo.
Abraço!
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class HelloPrinter implements Printable {
private int INICIO_X = 20;
PrinterJob job = PrinterJob.getPrinterJob();
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if (pageIndex > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
//pageFormat.setOrientation(PageFormat.PORTRAIT);
Paper paper = new Paper();
//paper.setSize(200, 200);
paper.setImageableArea(0, 0, 200, 200);
pageFormat.setPaper(paper);
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
*/
Graphics2D g2d = (Graphics2D)graphics;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
/*
* Data de emissão e número da nota
*/
g2d.drawString("05/02/2009", 450, 70);
g2d.drawString("10111", 490, 105);
/*
* Dados do Cliente
*/
g2d.drawString("Rafael do Espirito Santo - [telefone removido]", INICIO_X, 95);
g2d.drawString("Rua Conde de Agrolongo, 9999", INICIO_X, 105);
g2d.drawString("Rio de Janeiro", INICIO_X, 115);
g2d.drawString("RJ", INICIO_X, 125);
g2d.drawString("21020-190", INICIO_X, 135);
/*
* Periodo, vencimento, projeto e valor
*/
g2d.drawString("Jan-Jan/2009", INICIO_X, 170);
g2d.drawString("0 dias", INICIO_X + 100, 170);
g2d.drawString("PEP 10225", INICIO_X + 160, 170);
g2d.drawString("R$ 663,00", INICIO_X + 255, 170);
/*
* Valor Extenso - TODO: Implementar for para pular linha caso ultrapasse o tamanho - Essa String não está quebrando!
*/
g2d.drawString("seiscentos e sessenta e três reais askdjasdkljsadasjdksajdlkasjdlkasjdlkasjdlkasjdlkasjdlkasjdlkasjdklasjdlkasjdlkasdjXXXXXXXXXXXXX", INICIO_X + 105, 185);
/*
* Condições especiais
*/
g2d.drawString("Pagamento a ser efetuado no Branco do Brasil", INICIO_X, 220);
/*
* Descrição
*/
//g2d.drawString("", x, y)
//g2d.drawString("", x, y)
/*
* ISS, valor ISS e valor total
*/
g2d.drawString("2,00", INICIO_X + 305, 400);
g2d.drawString("R$ 13,00", INICIO_X + 365, 400);
g2d.drawString("R$ 663,00", INICIO_X + 450, 400);
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
}