Imprimir na rede

Ola pessoas tenho um metodo que imprimi em uma impressora, ela estando local funciona na porta lpt1 normal porem n consigo imprimir na rede alguem sabe como imprimir na rede??

veja

 FileOutputStream os = null;  
        String porta = "LPT1";  
        try {  
            os = new FileOutputStream(porta);  
            PrintStream ps = new PrintStream(os);  
            ps.println("Q320,019");

posso estar falando bobagem mas fiquei pensando e se você mapear o outro pc para imprimir na LPT1 ?

ex: NET USE LPT1 \servidor\impressora

print arquivo.txt /d:\\192.168.0.20\\HPLaserJ

Esse comando consigo imprimir pelo dos, porem n consigo fazer o java abrir o cmd e executar este comando!!

vc precisa mapear apenas a impressora na maquina q quiser mandar, usando " net use ".

entaum saum 2 passos

1 - cria um RunTime pra mapear, faz o mapeamento.
2 - usa o PrintStream pra imprimir.

pronto, veja aqui: http://www.guj.com.br/java/226253-impressora-cupom-fiscal-direto-na-porta-lpt1

tem um exemplo de como eu faco pra imprimir diretamente.

t+ e boa sorte.

E se você gerasse um .bat?

certo mapiei usando o net use e agora no printStream coloco o que como porta? o caminho do mapeamento da impressora é este

T:\\192.168.0.20\\HPLaserJ

[quote=samuelM]certo mapiei usando o net use e agora no printStream coloco o que como porta? o caminho do mapeamento da impressora é este

T:\\192.168.0.20\\HPLaserJ [/quote]

a maneira correta de se mapear impressoras na rede é esta aqui, veja.

net use LPT1: \\hostname(ip)\compartilhamento_impressora /yes

//em Java vc poderia fazer
Runtime.getRuntime().exec("net use LPT1: \\hostname(ip)\compartilhamento_impressora /yes");
Runtime.getRuntime().exec("dir > lpt1"); //aqui faz um teste enviando uma pagina de teste pra impressora mapeada

Caso isso nao funcione, vc pode criar seu Runtime dessa maneira.

Runtime.getRuntime().exec("cmd /c net use LPT1: \\hostname(ip)\compartilhamento_impressora /yes"); //passando o cmd

Depois basta mandar imprimir em LPT1 q ja vai sair a impressao no hostname ou ip q vc passou. Veja como eu fiz no link q mandei no meu primeiro post, nele eu imprimo direto sem ser pela rede, mas basta vc usar o Runtime pra fazer seu mapeamento.

simples.

t+ e boa sorte.

cara ja esta tudo certo, o unico problema esta como disse acima em qual porta mandar!! ja estou mapeando corretamente a lpt1 porem no printStream n sei o que colocar na porta, mapiei da maneira que voce me falou ja

net use LPT1: \\192.168.0.62\\zebradb /yes

mas n sei o que colocar no parametro porta veja:

FileOutputStream os = null;
        String porta = "?????????";
try {
            os = new FileOutputStream(porta);
            PrintStream ps = new PrintStream(os);
            ps.println("N");
            ps.println("testando o printStream");
            ps.println("P1");
            ps.close();

coloquei lpt1 e foi mas em branco

ja falei, se vc mapeou a porta LPT1 entao so pode mandar pra ela, isso é um fato.

tente ir no cmd e digitar “dir > lpt1”, se esta mapeada corretamente vai mandar a lista de diretorios de onde vc mandou.

Se esta mandando em branco é pq vc esta fazendo o PrintStream errado, veja o link do exemplo que mandei no primeiro post, nele eu mando um arquivo.txt inteiro.

t+ e boa sorte.

novamente aqui o link caso nao encontre no primeiro post, http://www.guj.com.br/java/226253-impressora-cupom-fiscal-direto-na-porta-lpt1

t+ e boa sorte.

caso esteja com preguica de abrir o link, aqui como fazer.

 public void imprimeLPT1(){
       try {
            java.io.InputStream is = new FileInputStream("/diretorio/arquivo.txt");
            Scanner sc = new Scanner(is);
            FileOutputStream fs = new FileOutputStream("LPT1:");
            PrintStream ps = new PrintStream(fs);

            while(sc.hasNextLine()){
                String linhas = sc.nextLine();
                ps.println(linhas);
            }
            fs.close();
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "Erro encontrado ao imprimir comanda." + ex.getMessage());
        }        
   }

t+ e boa sorte.

aqui ainda com opcao de vc escolher a porta.

veja

public class ImprimeComprovantes {
    public void imprime(File file){
        try{
            if(file.exists()){
                String[] portas = {"LPT1:", "LPT2:"};
                String portaSelecionada = (String) JOptionPane.showInputDialog(null, "Informe a porta.", "Porta", JOptionPane.QUESTION_MESSAGE, null, portas, portas[0]);
                if(portaSelecionada != null){
                    java.io.InputStream is = new FileInputStream(file);
                    Scanner sc = new Scanner(is);
                    FileOutputStream fs = new FileOutputStream(portaSelecionada);
                    PrintStream ps = new PrintStream(fs);

                    while(sc.hasNextLine()){
                        String linhas = sc.nextLine();
                        ps.println(linhas);
                    }
                    fs.close();
                    is.close();
                    sc.close();
                    file.delete();
                }else {
                    file.delete();
                }
            }
        } catch (IOException ex) {            
            JOptionPane.showMessageDialog(null, "Não foi possível imprimir comprovante, erro encontrado ao imprimir.","Erro", JOptionPane.ERROR_MESSAGE);
            file.delete();
        }
     }
}

vlw deu certo!