Impressão

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.

[code] 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");
	}
}

}); [/code]

E aqui está o panel a ser impresso:

[code] 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;
	}
}

} [/code]

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?

Opa, pelo menos uma resposta! rs

É, ficou meio complicado isso. Mas me virei por aqui, utilizei outra parte do programa em que é possível alterar o layout do cartão e estou mandando imprimir de lá mesmo.

=)

Se a impressão já tiver sido enviada para o spool da impressora há alguma maneira de cancelar? Pelo que eu li, o método cancel() só funciona antes do retorno do método print. =/

Fala ai LG! Beleza?!

Isso aqui ajuda um pouco

http://java.sun.com/j2se/1.4.2/docs/guide/jps/spec/JPSTOC.fm.html

E sobre o cancel(), acho que o método print() só retorna quando recebe um sinal da impressora dizendo que a impressão foi concluída, afinal de contas não faria sentido algum cancelar uma impressão antes de mandá-la para a impressora, ou cancelar um documento já impresso. Como print() é um método de PrinterJob, como é possível terminar a impressão sem que exista um job de impressão válido ainda alocado para a impressora, mesmo que através de um objeto Java remoto?!
Bom, pra confirmar isso só testanto. Você já realizou algum destes testes?!

Abraço pra vc e pro pessoal ai!

Opa, falae Cassio!
Tudo tranquilo, e aí??

A parte da impressão está pronta, o programa está rodando legal nos testes, a única coisa que não estou conseguindo fazer é cancelar a impressão.

Já testei colocando o cancel em vários lugares, até mesmo logo após a chamada do print mas não cancela. =/

[quote=LuizLG]Opa, falae Cassio!
Tudo tranquilo, e aí??

A parte da impressão está pronta, o programa está rodando legal nos testes, a única coisa que não estou conseguindo fazer é cancelar a impressão.

Já testei colocando o cancel em vários lugares, até mesmo logo após a chamada do print mas não cancela. =/[/quote]

Cara, tinha esquecido de um detalhe! Para vc poder cancelar um job de impressão em Java, ele precisa implementar a interface CancelablePrintJob

Achei este exemplo aqui, acho que ajuda! Abraço! epois quero ver meu “filhote” pronto e funcionando!

http://jug.org.ua/wiki/display/JavaAlmanac/Cancelling+a+Print+Job

Abraço!

Saudações.

Não, infelizmente eu não sei como responder à sua dúvida. Mas aceite a minha dica: poste seu problema no tópico “Java Avançado”, acho que obterá mais sucesso.

Boa sorte, e perdoe a expectativa não realizada. :lol:

Opa, se é assim tá maravilha, então.