martes, 19 de agosto de 2014

Imprimir un comprobante desde web con un applet


Holas!!, como siempre un gran problema al hacer un sistema web de venta retail oal menudeo es la impresion de comprobantes, porque debemos hacerlo al estilo "desktop", es decir sin pasar por un pdf previo.. o un "diseño" html con impresion javascript, porque debemos usar muchas veces la "potencia" de impresoras matriciales. Entonces si lo hacemos con tecnologia MS la solucion es a traves de un COM/DLL o como quieran llamarlo. Si es con nuestro querido java entonces debemos incrustar en un jsp un lindo Applet que llame a un bonito diseño en jasperreport que se conecta a nuestra base de datos en forma remota desde el cliente.

Como hacemos eso???? Pues aqui viene la explicacion (vale decir que tambien sirve para cualquier applet que quieran se conecte a una base de datos remota)
 
1. Crear su applet en netbeans, sino saben como se crea un applet pueden seguir el tutorial de aqui:
https://netbeans.org/kb/docs/web/applets.html

2. Firmar sus .jar ; tanto el applet .jar como las librerias adicionales que esten usando en su Applet. Para este caso especifico del comprobante:
 postgres jdbc
     postgresql-8.1-414.jdbc2ee.jar
 jasperreports libs
     commons-collections-3.2.1.jar
     commons-digester-2.1.jar
     commons-logging-1.1.jar
     jasperreports-5.1.0.jar
     groovy-all-2.0.1.jar (este lo pueden obviar si cambian el lenguaje groovy por java en el mismo jasper            diseñado)

Ahora para firmar los .jar seguimos estos 3 pasos desde consola linux o DOS (el keytool y jarsigner estan en la carpeta de ejecutables donde instalaste tu JDK):

                              1. keytool -genkey -keystore myKeyStore -alias me
                              2. keytool -selfcert -keystore myKeyStore -alias me
                              3. jarsigner -keystore myKeyStore jarfile.jar me

Cuando te pregunte por la clave coloca la de tu gusto, lo demas dejalo como "default" o si deseas pon la informacion de tu empresa u organizacion, eso lo decides tu,

3. Recuerda que la etiqueta HTML debe ser algo como esto:

codebase="classes" 
code="comet/ClsPrint.class" 
archive="printApplet.jar,
postgresql-8.1-414.jdbc2ee.jar,
commons-collections-3.2.1.jar,
commons-digester-2.1.jar,
commons-logging-1.1.jar,
groovy-all-2.0.1.jar,
jasperreports-5.1.0.jar" 

El codebase indica la carpeta donde estaran los .jar , el code es la clase que se ejecutara cuando el Applet cargue.
Si desean ver los errores de su applet no olviden activar la consola de Java.

Eso es todo.. hasta otra