Meu problema é o seguinte: Preciso ler valores armazenados em um arquivo e depois imprimir. A impressão será realizada em um cartão e não estou conseguindo imprimir no início, sempre começa um pouco antes em x e y, cortando uma parte do texto ou imagem.
Aqui está o codigo do menu que realiza a impressão.
printSequencialMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
printe printee = new printe();
printee.setLayoutPath(layoutEditorPanel.getLoadedLayoutPath());
double CM = 28.346456692913385D;
double cardWidth = 5.398 * CM;
double cardHeight = 8.56 * CM;
Book book = new Book();
Paper papel = new Paper();
PageFormat pageFormat = new PageFormat();
papel.setSize(cardWidth, cardHeight);
papel.setImageableArea(0.0, 0.0, cardWidth, cardHeight);
pageFormat.setPaper(papel);
pageFormat.setOrientation(PageFormat.LANDSCAPE);
PrinterJob job = PrinterJob.getPrinterJob();
book.append(printee, pageFormat);
job.setPageable(book);
try{
job.print();
}
catch(PrinterException e){
System.out.println("Erro na impressão");
}
}
});
E aqui está o panel a ser impresso:
class printe extends JPanel implements Printable{
public void setLayoutPath(String path){
layoutPath = path;
}
public int print(Graphics graphics, PageFormat format, int pageIndex)
throws PrinterException{
if(pageIndex>1){
return Printable.NO_SUCH_PAGE;
}
else{
try{
/* LEITURA DO ARQUIVO
.....
.....
.....*/
Graphics2D g2d = (Graphics2D) graphics;
g2d.translate(format.getImageableX(), format.getImageableY());
g2d.setFont(new Font("Times", Font.PLAIN, 12));
g2d.setColor(Color.BLUE);
g2d.drawString("teste", 0, 0);
}
catch(IOException la){
System.out.println("Erro");
}
return Printable.PAGE_EXISTS;
}
}
}
No exemplo está a impressão apenas da mensagem "teste" mas precisarei imprimir imagem e texto.
Quando utilizo drawString passando 0, 0 o "teste" não é impresso. Agora se eu passar algo em torno de 35, 9 ele imprimi no começo.
Alguma idéia?