tem meu caro !
ai ta um codigo que uso completo
a rotina ta dentro , procura ai !!!
divirtasse
//package jm.impressao;
//import java.awt.<em>;
import java.awt.font.</em>;
//import java.awt.print.<em>;
import <a href="http://java.io">java.io</a>.</em>;
import java.util.*;
import java.text.AttributedString;
import java.awt.;
import java.awt.print.;
import javax.swing.*; // mensagem
public class lvale {
public String Doc;
public lvale(String dc) {
{
Doc = dc;
}
}
public String imp() {
String ok = "Impressão ok ! ";
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new Livro());
if (job.printDialog()) {
try {
job.print();
} catch (PrinterException e) {
ok = "Falha de Impressão !"; /*...*/}
}
return ok;
}
// public static void main(String[] args) {
// new lvale();
// }
}
// Definição de uma classe ‘pageable’(um Book com 3 páginas)
class Livro extends Book {
public Livro() {
PageFormat formatoCapa = new PageFormat();
formatoCapa.setOrientation(PageFormat.PORTRAIT);
PageFormat formatoPagina = new PageFormat();
//L formatoPagina.setOrientation(PageFormat.LANDSCAPE);
formatoPagina.setOrientation(PageFormat.PORTRAIT);
// Define o tamanho da pagina para "Carta" ******************
// (os valores têm que ser passados em pontos) ***************
//L formatoPagina.getPaper().setSize(612, 792);
formatoPagina.getPaper().setSize(612, 492);
// Adiciona uma capa ao livro utilizando a formatação de capa ******
//L append(new Capa(), formatoCapa);
// Adiciona duas paginas ao livro utilizando ********
// a formatação de página interna *******************
append(new Pagina(), formatoPagina);
//L append(new Pagina(), formatoPagina);
}
}
// Renderiza a capa: um retangulo ao redor da area util da pagina
class Capa implements Printable {
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
throws PrinterException
{
if (pageIndex > 1) return Printable.NO_SUCH_PAGE;
else {
g.drawRect((int) pageFormat.getImageableX() + 1,
(int) pageFormat.getImageableY() + 1,
(int) pageFormat.getImageableWidth() - 2,
(int) pageFormat.getImageableHeight() - 2);
return Printable.PAGE_EXISTS;
}
}
}
// Renderiza uma página do Book (texto impresso no centro da página)
class Pagina implements Printable {
public ArrayList dados;
public String conex="";
public String usux="";
public String senx="";
public String[][] reg;
public int regsw = 0;
public String docw;
public int print(Graphics g, PageFormat format, int page)
throws PrinterException
{
lertxt pegacampo1 = new lertxt("L1"); //Nr Doc
lertxt pegacampo2 = new lertxt("L2"); //Nome
lertxt pegacampo3 = new lertxt("L3"); //funcionario
pegaconexao();
pegapedido("" + pegacampo1.lerArquivotexto());
// ArrayList dados;
dados = new ArrayList();
/* dados.add(“Lindberg”);
dados.add(“Larissa”);
dados.add(“Bianka”);
dados.add(“Aldeires”);
*/
//************* CABECALHO *************
dados.add(" "
+ “A. M. SANTOS VERDURAS”);
dados.add(" "); // linha
dados.add(“Fornecedor: " + reg[0][0] + " - " + pegacampo2.lerArquivotexto()); // ccf
dados.add(“Data: " + reg[0][2] + " Nr Controle: " + docw ); // emissao
dados.add(”==============================================================================”); // linha
dados.add(“Quant Produto “); // linha
dados.add(”==============================================================================”); // linha
//************* DETALHE ***************
float vv = 0;
int ll = 0;
int ii = 0;
String dd;
dd = "dd";
while (dd != "fim") {
//mensagem("" + ii + " dados ---> " + reg[ii][8] + " registro ---> " + regsw);
// vv = Float.parseFloat(reg[ii][14]);
ll = reg[ii][14].length() - 2;
// cpf.substring(0, 9)
dd = " " + reg[ii][9].substring(0, ll) + " " + reg[ii][10] + " de " + reg[ii][19] + " (Codigo: " + reg[ii][8] + ")";
dados.add(dd);
ii++;
if (ii == regsw) { dd = "fim"; }
}
//************* RODAPE *************
dados.add("=============================================================================="); // linha
dados.add(" "); // linha
dados.add(" "); // linha
dados.add(" "); // linha
dados.add(" "
+ "_________________________________"); // linha
dados.add(" "
+ pegacampo3.lerArquivotexto()); // linha
//************************* preenche dados (array)
if (page != 0)
return NO_SUCH_PAGE;
else {
Graphics2D gr = (Graphics2D) g;
// Determina a pos. de início do dados
float posX = (float) format.getImageableX() + 10; // 10
float posY = (float) format.getImageableY() + 10; // 10
// Define a largura do dados como 350 pontos
float larguradados = 2500;
int linhaw = 0;
// Imprime parágrafos formatados
Iterator it = dados.iterator();
while (it.hasNext()) {
String line = (String) it.next();
// Caso haja uma linha em branco, substituir por um espaço
// para permitir formatação
if (line.length() == 0) {
line = " ";
}
linhaw++;
//System.out.println("linha == > " + linhaw + " dados " + line);
// dados formatado a ser impresso
AttributedString str = new AttributedString(line);
// Define a fonte do dados como Arial 12 itálico
str.addAttribute(TextAttribute.FONT, new Font("Arial",
Font.ITALIC, 12));
// Cria objeto para quebrar o dados formatado
LineBreakMeasurer quebrador =
new LineBreakMeasurer(
str.getIterator(),
gr.getFontRenderContext());
// Cria um TextLayout para armazenar cada linha 'quebrada'
TextLayout linha = quebrador.nextLayout(larguradados);
while (linha != null) {
// Posiciona a linha
posY += linha.getAscent();
linha.draw(gr, posX, posY);
// Soma espaço para a próxima linha
posY += linha.getDescent() + linha.getLeading();
linha = quebrador.nextLayout(larguradados);
}
}
return PAGE_EXISTS;
}
}
/<em>/</em>***********************************************
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
throws PrinterException
{
// Imprime somente os indices 0 e 1
if (pageIndex > 2) return Printable.NO_SUCH_PAGE;
else { // col linha
g.drawString(“dadosssss”, 60, 60);
//L (int) pageFormat.getImageableWidth() / 3,
//L (int) pageFormat.getImageableHeight() / 2);
return Printable.PAGE_EXISTS;
}
}
*/
public void pegapedido(String dc) {
docw = dc;
// int regsw = 0;
String qry;
// String[][] reg;
if (!(dc.equals(""))) {
ConexaoDados ac =
new ConexaoDados( conex, usux, senx );
if (ac.conecta()) {
qry = " SELECT COUNT(*) FROM esentsai "
+ " WHERE Doc = "
+ " ‘" + dc + "’"
+ " And es = ‘COMPRA’";
// ver a quant de registros ************************
if ((regsw = ac.regCount(qry)) == 0) {
ac.desconecta();
return;
}
reg = new String[regsw][20];
// registro se existe
qry = " SELECT "
+ " esentsai.CCF, " //0
+ " esentsai.CFunc, " //1
+ " esentsai.Emissao, " //2
+ " esentsai.TFatura, " //3
+ " esentsai.Area, " //4
+ " esentsai.Periodo, " //5
+ " esentsai.TPreco, " //6
+ " esentsai.QtdItens, " //7
+ " esentsai.CProduto, " //8
+ " esentsai.QtPedido, " //9
+ " esentsai.UnPedido, " //10
+ " esentsai.UnSai, " //11
+ " esentsai.PesoUnSai, " //12
+ " esentsai.QtUnSai, " //13
+ " esentsai.QtTotal, " //14
+ " esentsai.PrUn, " //15
+ " esentsai.Total, " //16
+ " esentsai.ES, " //17 - SAI/ENT/DEV/ARR
+ " esentsai.Embala, " //18 - Embala
+ " esprodutos.Nome as Produto " //19 - Produto
+ " FROM esentsai "
+ " INNER JOIN esprodutos ON esentsai.CProduto=esprodutos.CProduto "
+ " WHERE Doc = " + dc //+ "'"
+ " And es = 'COMPRA' "
// + " WHERE Doc = ‘" + tped.getText() + "’"
+ " ;";
ac.getColumn(qry, reg, 20);
// preenche table *****************************
/*
for (int lin = 0; lin < 50; lin++) {
// for (int lin = 0; lin < regsw; lin++) {
if (reg[lin][0] != null);
// if (reg[lin][0] != " ");
/* tccf.setText("" + reg[lin][0]);
tcfunc.setText("" + reg[lin][1]);
tfat.setText("" + reg[lin][3]);
tarea.setText("" + reg[lin][4]);
tperiodo.setText("" + reg[lin][5]);
tqtditens.setText("" + reg[lin][7]);
temissao.setText("" + reg[lin][2]);
reg[lin][8], // cod
reg[lin][9], // qt ped
reg[lin][10], // un ped
reg[lin][11], // un sai
reg[lin][12], // peso da caixa
reg[lin][13], // qt de caixa
reg[lin][14], // qt total
reg[lin][15], // pr unitario
reg[lin][16], // valor total do item
reg[lin][18], // embala
reg[lin][19] // produto
}
*/
ac.desconecta();
}
}
}
public void pegaconexao() {
lertxt pegacampo1 = new lertxt("X1"); //conexao
conex = pegacampo1.lerArquivotexto();
lertxt pegacampo2 = new lertxt("X2"); //usu
usux = pegacampo2.lerArquivotexto();
lertxt pegacampo3 = new lertxt("X3"); //sen
senx = pegacampo3.lerArquivotexto();
}
public void mensagem(String m) {
JOptionPane.showMessageDialog(
null,
m,
"Mensagem",
JOptionPane.INFORMATION_MESSAGE);
}
}
Lindberg