(por Roberto Araújo)
Extraído do site: www.portaljava.com
Exemplo de utilização da classe Print2DPrinterJob que
implementa Printable.
É necessário ter o cuidado de separar cada linha a ser
impressa, pois esta classe parece não intrepretar a
instrução "n" para troca de linha.
Caso alguém consiga implementar este novo recurso de troca de
linha entre em contato comigo em betopac@yahoo.com.br
import java.net.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.JobName;
import javax.print.attribute.standard.OrientationRequested;
public class Print2DPrinterJob implements Printable {
private String text;
/**
* Efetua impressão do texto passado como parâmetro.
* @param texto
*/
public Print2DPrinterJob(String texto) {
text += texto;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(OrientationRequested.PORTRAIT);
aset.add(new Copies(1));
aset.add(new JobName("Relatório", null));
/*
* Crai um "Printer job"
*/
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(this);
/*
* Localiza um serviço de impressão
* que possa tratar esta requisção.
*/
PrintService[] services = PrinterJob.lookupPrintServices();
if (services.length > 0) {
System.out.println("Impressora seleionada" + services[0].getName());
try {
pj.setPrintService(services[0]);
pj.pageDialog(aset);
if (pj.printDialog(aset)) {
pj.print(aset);
}
} catch (PrinterException pe) {
System.err.println(pe);
}
}
}
/**
* Método necessário quando a interface Printable é implementada.
*/
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex == 0) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g2d.setColor(Color.black);
/*
* Imprime o texto passado, na coluna 10 e na linha 5
* da página a ser impressa
*/
g2d.drawString(text, 10, 5);
return Printable.PAGE_EXISTS;
} else {
return Printable.NO_SUCH_PAGE;
}
}
}