Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Impressoras em rede com java

Alguém saberia me explicar se é possível e como faço pra poder listar todas impressoras reconhecidas na rede e também poder reconhecer quando um usuário mandar imprimir para uma dessas impressoras?

No caso eu precisaria fazer um contador de paginas impressas por usuário

3 respostas

Fala aí Kaique, blz?

Para listar todas as impressoras instaladas você pode usar a API de PrintService.

PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);

Isso aí retorna um array com todas as impressoras instaladas. Não tenho certeza se tem como ficar ouvindo quando alguém mandar alguma coisa para a impressora, mas acho que vale a pena dar uma olhada na documentação.

https://docs.oracle.com/javase/7/docs/api/javax/print/package-summary.html

http://docs.oracle.com/javase/7/docs/api/javax/print/PrintService.html

https://docs.oracle.com/javase/7/docs/api/javax/print/PrintServiceLookup.html

Espero ter ajudado!

ja fiz um código assim, mas o código lista apenas as impressoras instaladas, mas como eu disse, eu preciso da lista de todas as impressoras NA REDE

import javax.print.PrintService;
import javax.print.PrintServiceLookup;

public class PrinterLister {

    public void getPrinters() {
        PrintService[] impressoras = PrintServiceLookup.lookupPrintServices(null, null);

        for (PrintService ps : impressoras) {
            System.out.println(ps.getName());
        }
    }

    public static void main(String args[]) {
        PrinterLister pLister = new PrinterLister();
        pLister.getPrinters();
    }

    void teste() {

    }
}
solução!

Desculpe, tinha entendido errado Kaique.

Bom para isso você vai precisar de alguma lib que implemente o protocolo SNMP.

É um protocolo de gerenciamento de redes (uma das coisas que se pode fazer com ele é monitorar quando algum device se conecta a rede, sai da rede e ficar ouvindo quando uma requisição chega a determinado device).

A partir dele você consegue, localizar todos os devices na rede (precisará filtrar quais são as impressoras) e com ele também é possível monitorar requisições à determinado(s) device(s) na rede (essa seria a forma de implementar o listener).

Eu nunca precisei fazer algo desse tipo, mas dando uma googlada achei http://www.snmp4j.org.

Talvez valha a pena dar uma olhada nesse cara.

Espero ter ajudado!