sábado, 6 de julio de 2013

jsPDF (Herramienta para la creación de archivos PDF a nivel de cliente)

Hola a todos, el día de hoy les traigo una herramienta muy interesante, se llama jsPDF, esta herramienta facilita la creación de archivos .pdf en el cliente.

Se preguntaran que ventajas trae hacer archivos .pdf a nivel de cliente. Bueno como saben la idea de hoy en día es que el servidor haga menos tareas y que el cliente esta agarrando mucha fuerza, con esto podemos decir que si antes hacíamos archivos .pdf en el servidor, el servidor se tenia que tomar la molestia de crear un archivo por cada uno de los "request" que reciba del mismo, supongamos que tenemos unos 3000 "request", son 3000 archivos .pdf que tiene que crear el servidor, no cualquier servidor aguanta esto. Ahora si tenemos la facilidad de enviarle un jSON al cliente y que este cliente con esta información pueda crear el mismo el .pdf, pasamos de hacer archivos de aproximadamente de 50kbs cada uno,  en servidor a solo un jSON que puede pesar aproximadamente 1kb. Eso seria aumentar la capacidad de tu servicio un 80% o si no mas.

Esa arquitectura de los "thin client" o "cliente liviano", a mi criterio se esta acabando, gracias a la incursión de HTML5 las cosas han cambiado un poco en la web, y como vemos no solo .pdf podemos hacer, ya hay herramientas para la creación de archivos word, excel, entre otras muchas cosas. Que ahora esta dejando el lado del servidor solo para hacer querys y que todo lo haga el cliente.

En este código de muestra uso la herramienta anteriormente explicada, el "VJS" para la creación de un dialogo y un grid para que vean lo simple que se puede hacer un PDF, en este ejemplo agarro todo lo que esta en el grid y lo coloco en una pagina nueva donde se crea el PDF.

El botón de ejecución del PDF va a un método que se llama createPDF, en este método se usa un poco de paginacion para que el  PDF quede bien estructurado y no quede algo sobrepuesto.

Capaz es un poco complicado verlo así de una vez, pueden probar un botón y solo poner:

var doc  = new jsPDF();
doc.addText(80,20,"Hola mundo");
doc.output('datauri');

ya con eso estarían creando un PDF, sencillo cuando presionan un botón, no olviden importar el JS al principio del documento, de todas maneras les dejo la pagina oficial del proyecto:

http://jspdf.com/

Les dejo un ejemplo como siempre para que puedan descargar aqui

Y les dejo el ejemplo para que lo vean sin descargar aqui (disculpen las publicidades pero es el host gratis).

Bueno con esto concluyo este ejemplo que me parece bastante interesante!...

Hasta luego todos

Saludos





8 comentarios:

  1. excelente aporte sigue así! la idea de tener un servidor menos cargado de peticiones a pdfs lo hara mas optimo interesante...

    ResponderEliminar
  2. Gracias amigo, si es una idea bastante interesante

    ResponderEliminar
  3. Hola Gustavo, una preguntilla, hay un error con los caracter especiales como á Á é É etc, sabes como resolver el problema con las tildes etc en el jsPDF?

    Gracias

    Un Saludo

    ResponderEliminar
    Respuestas
    1. Buenos días Anónimo, para que los caracteres especiales sirvan: "áéíóúñÑñÁÉÍÓÚäëïöüÄËÏÖÜ" debes incluir el siguiente archivo: jspdf.plugin.standard_fonts_metrics.js que lo descargas de http://parall.ax/products/jspdf#
      Atte: Agustín y Laura!!!!

      Eliminar
  4. Hola Gustavo tengo la misma duda de mi amigo Anónimo...

    ResponderEliminar
  5. hola que tal cuando quiero usarlo para convertir el contenido de un div a pdf me marca un error en javascript que es el siguiente
    Uncaught TypeError: "" has no method 'fromHTML'

    omiti un codigo por que no es permitido obllect remplaza ll por j
    jejejeje

    ResponderEliminar
  6. Hola gustavo quiero saber si utilizando esta herramienta puedo exportar una pagina html que lleva tabla e imagenes

    ResponderEliminar
  7. Hola Gustavo
    Utilizo esta librería y me exporta correctamente el pdf pero me imprime la primera hoja con fondo negro. Como puedo solucionar este problema

    ResponderEliminar