Foro sobre Java EE > java + jasper + unix + print
Hola.
Sabes si en el servidor estan registrada la impresora?
Es decir si estan instaldos los drivers de la impresora?
Podrias verificar esto con un comando apra imprimir :
http://www.seas.upenn.edu/cets/answers/unixprint.html
http://help.cs.umn.edu/printing/unix
http://docs.oracle.com/cd/E16764_01/bi.1111/b32121/pbr_uxprt002.htm
Si verificas que puedes imprimir "nativamente", recien podemos revisar tu codigo.
Saludos
Muchas gracias por tu respuesta, jrichard.
te comento,
antes de modificar el codigo lo imprimia directamente y salia por la impresora predeterminada. pero yo necesito que el usuario eligiera la impresora y probe el siguiente codigo
JasperPrintManager.printReport(print , true);
true = es para que salga el dialogo de impresión, eso en windows funciona bien.
pero en unix no.
lo probe en diferente versiones de unix, con y sin entorno gráfico en los mismo no funciono.
nuevamente gracias por tu respuesta
Zavier puedo intuir cual es el problema.
La linea :
JasperPrintManager.printReport(print , true);
Imprime el reporte a la impresora predeterminada. Esta impresion se logra para aplicaciones DESKTOP O DE ESCRITORIO (SWING) :
http://www.jc-mouse.net/java/impresion-de-reportes-con-jasperreport-yapa
Este dialogo de impresion es SWING o AWT por lo tanto no puede ser ejecutado cuando la aplicacion es web (WAR).
Esa puede ser la explicacion a el problema.
Si tu aplicacion es de escritio (AWT / SWING / JAR) y aun asi no funciona, es otro tema.
Si tu aplicacion es web (JSP/ HTML / SERVLETS / WAR) debes usar un applet para que el usuario pueda seleccionar una impresora (tambien podrias imprimir a la impresora por defecto con este applet). El applet es necesario debido a que cuando la pagina es visualizada, esto se da en el lado del usuario (BROWSER) por lo que para poder manipular la impresora necesitas acceder a recursos de la maquina del usuario(permisos/seguridad).
Podrias revisar esta herramienta la cual fue usada en un par de proyectos de los que fui parte:
http://code.google.com/p/jzebra/
Este tema no esta solucionado al 100%. Esto se debe a que la unica solucion para que tu aplicacion web pueda imprimir es un applet, dll , algun activex (internet explorer) o algun codigo extraño. Estas alternativas son lentas al cargar la web, necesitan actualizarse si el browser se actualiza (applets) , permisos de seguridad, cuelgan el browser etc etc.
Hace unos meses estaba ideando una solucion pero por temas de tiempo y prioridad se quedo en stop.
Saludos y feliz navidad javahispano :)
http://jrichardsz.weebly.com
Gentes, recurro a ustedes a ver si les paso.
Estoy imprimiendo un reporte que se necesita seleccionar la impresora, el mismo funciona en windows, pero cuando sublo el war al servidor que esta en unix no funciona.
el error que me da el log es el siguiente "net.sf.jasperreports.engine.JRException: Error printing report."
solo eso.
las versiones es java 1.6 irerport 4.0.2.
y les paso el codigo
List<Stagging> list;
list = imprimirServicio.imprimirStagging(ciclo);
HashMap<String , String> mp = new HashMap<String, String>();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
InputStream reportStream = request.getSession().getServletContext().getResourceAsStream("/reports/Stagging.jasper");
String url = request.getSession().getServletContext().getRealPath("/reports/subreporte.jasper");
mp.put("urlSubreport", url);
try {
JasperPrint print = JasperManager.fillReport(reportStream, mp, ds);
JasperPrintManager.printReport(print , true);
} catch (Exception e) {
e.printStackTrace();
log.error(e.toString());
}
bueno espero me puedan ayudar.
que tengan un excelente dia