Java - Listar impresoras del lado del cliente (Java)

 
Vista:

Listar impresoras del lado del cliente (Java)

Publicado por Deika (3 intervenciones) el 14/09/2018 19:30:17
Buenas tardes!

Tengo una aplicación corriendo en servidor y quiero poder detectar las impresoras que estén accesibles desde un ordenador xs.

Es decir, del lado del cliente quiero que se listen las impresoras y actualmente, como la aplicación la estoy corriendo desde un servidor, me muestra las impresoras que están accesibles desde el servidor.

La idea es que desde donde se vaya a acceder a la aplicación, o sea desde un ordenador xs, se puedan listar sus respectivas impresoras.

No se si un camino puede ser obteniendo la dirección ip de ese ordenador pero la verdad no he podido encontrar la manera de resolverlo con lo que tengo que viene siendo esto:

PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
List <String> Impresoras= new ArrayList<>();
// -- ver los atributos de las impresoras...

for (PrintService printService : services) {

Impresoras.add(printService.getName());
System.out.println(" ---- IMPRESORA: " + printService.getName());

PrintServiceAttributeSet printServiceAttributeSet = printService.getAttributes();

System.out.println("--- atributos");

// todos los atributos de la impresora
Attribute[] a = printServiceAttributeSet.toArray();
for (Attribute unAtribute : a) {
System.out.println("atributo: " + unAtribute.getName());
}

System.out.println("--- viendo valores especificos de los atributos ");

// valor especifico de un determinado atributo de la impresora
System.out.println("PrinterLocation: " + printServiceAttributeSet.get(PrinterLocation.class));
System.out.println("PrinterInfo: " + printServiceAttributeSet.get(PrinterInfo.class));
System.out.println("PrinterState: " + printServiceAttributeSet.get(PrinterState.class));
System.out.println("Destination: " + printServiceAttributeSet.get(Destination.class));
System.out.println("PrinterMakeAndModel: " + printServiceAttributeSet.get(PrinterMakeAndModel.class));
System.out.println("PrinterIsAcceptingJobs: " + printServiceAttributeSet.get(PrinterIsAcceptingJobs.class));

Aquí obtengo el servicio que me listas las impresoras pero esto lo hace en donde se corra la aplicación.

Si me podrían dar una pista se los agradecería mucho pues no se mucho de Java y estoy probando con ejemplos.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 166
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Listar impresoras del lado del cliente (Java)

Publicado por Cesar (52 intervenciones) el 14/09/2018 20:01:59
Hola.

Si es para imprimir, yo lo que hago, es que esa tarea se la delego al navegador.

En mi aplicacion, del lado servidor creo un PDF en memoria, y envio ese PDF al navegador cliente (en mi caso Chrome), y el usuario lo puede imprimir (y seleccionar impresoras), con la misma opcion de impresion del navegador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Listar impresoras del lado del cliente (Java)

Publicado por Deika (3 intervenciones) el 14/09/2018 20:05:29
Un saludo Cesar!

Esto estaba contemplado desde un principio. Pero eso es precisamente lo que quisiera evitar. Pues en mi caso necesito controlarlo por medio de la aplicación. Debido a que esos parámetros de configuración de impresión deben ser guardados en mi base de datos, por lo tanto para ello necesito obtener las impresoras de ese ordenador del cliente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 166
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Listar impresoras del lado del cliente (Java)

Publicado por Cesar (52 intervenciones) el 14/09/2018 20:37:05
Hola.

Entonces tienes que leer las impresoras desde JavaScript (desde el navegador cliente).

Puedes emplear esta libreria, aunque requiere que instales un servicio en Python:

http://kwickpos.com/opensource/

Tambien esta otra (que es 100% JavaScript), pero no tiene un metodo para listar impresoras:

http://printjs.crabbly.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Listar impresoras del lado del cliente (Java)

Publicado por Deika (3 intervenciones) el 14/09/2018 21:13:05
Lo malo es que con el segundo me sigue apareciendo la opción de impresión del browser.

Gracias por tus respuestas igualmente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar