pow… aê: resolvi sim…
desculpa aê galera num ter postado a solução antes…
public class ImprimeNF extends JPanel implements Printable{
NotaFiscal nf01;
public ImprimeNF(NotaFiscal nf01){
this.nf01 = nf01;
JFrame f = new JFrame();
f.getContentPane().add(this);
Paper papel1 = new Paper();
try{
Double width = new Double(609.44);
Double height = new Double(892.91);
papel1.setSize(width, height);
papel1.setImageableArea(0, 0, width, height);
PageFormat pf = new PageFormat();
pf.setPaper(papel1);
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this, pf);
if (printJob.printDialog()) {
try {
printJob.print();
} catch (Exception ex) {
ex.printStackTrace();
}
}
} catch(Exception e){e.printStackTrace();}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
escreve((Graphics2D) g);
}
public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
if (pi >= 1) {
return Printable.NO_SUCH_PAGE;
}
escreve((Graphics2D) g);
return Printable.PAGE_EXISTS;
}
private void escreve(Graphics2D g){
DecimalFormat formatador = new DecimalFormat();
y=100;
// Imprimir Razão Social
g.drawString(nf01.getRazaoSocial(), 25, y);
// Imprimir CNPJ
g.drawString(nf01.getCnpj(), 380, y);
// Imprimir Data de emissão
g.drawString(formatoBR.format(nf01.getDataEmissao()), 530, y);
y=200;
...
...
g.dispose();
}
}
Essa aí acima foi uma das soluções que encontrei.
A outra:
public class ImprimePedido {
private void EmitePedido(){
Frame f = new Frame();
f.pack();
Toolkit tk = f.getToolkit();
PrintJob pj = tk.getPrintJob(f, "Pedido", null);
if (pj!=null) {
Graphics g = pj.getGraphics();
g.setFont(new Font("Dialog",Font.BOLD, 12));
formatador.applyPattern("00000");
g.drawString("Pedido número: " + pedidoNumero, 25, 50);
g.drawString(razaoSocial, 25, 65);
g.drawString("Dt. pedido: " + dataPedido, 420, 50);
g.drawString("Dt. entrega: " + dataEntrega, 420, 65);
g.drawString("Observação: " + observacao, 25, 80);
g.drawLine(25, 85, 550, 85);
g.dispose();
pj.end();
}
f.dispose();
}
Essa foi a outra solução.
Mas na verdade nem estou usando mais nenhuma delas.
Parti pra web e tô usando Jasper Reports. Ele cria a impressão pra mim e eu mando pro cliente em PDF, e ele pode salvar e/ou imprimir.
Sei que os códigos acima num estão nem um pouco otimizados… mas funcionam.
Quem tiver sugestões de melhoria, post plz…
vlw
[]´s
Artur Sampaio