Impressão de arquivos em impressoras PS

3 respostas
J

Olá galera…
Gostaria de uma ajuda para resolver um problema…
Eu preciso desenvolver uma aplicacão simples que apartir de uma
lista de nomes de arquivos em PostScript, imprima os em uma das impressora disponíveis pra mim no windows.
No caso aqui, os nomes são organizados em uma combo box e a pessoa escolhe qual arquivo imprimira primeiro.

Os arquivos já estarão em PS, ou seja, propriamete codificado para a impressora… a dificuldade esta em desenvolver a parte do código em que a impressora é escolhida e o arquivo é transmitido para a impressora… Tem alguma maneira de eu chamar aquela "janelinha"de impressão do windows diretamente do meu código ?

Obrigado mais uma vez
Abraços !
:smiley:

João Clemente - RJ.

[email removido]

3 Respostas

cassio

Cara, ddáu uma olhada nisso aqui:

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/print/PrinterJob.html

http://java.sun.com/printing/whitepaper.html

E com isso acho que vc consegue abrir a janelinha para escolher as impressoras

http://java.sun.com/j2se/1.3/docs/api/java/awt/JobAttributes.html#setPrinter(java.lang.String)

Falou!

Lindberg

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

J

Pô galera, valeu mesmo pela ajuda… vou cair dentro dessas informações…

Abraços ! e obrigado :slight_smile:

Criado 19 de junho de 2006
Ultima resposta 20 de jun. de 2006
Respostas 3
Participantes 3