jueves, 8 de enero de 2015

Crear un Thumbnail de un sitio

Vamos a crea una imagen de algún sitio web. En este caso vamos a utilizar Java y un framework llamado WKhtmltopdf. Realmente es muy bueno y generar los pdf o imágenes muy rápido. Lo primero que debemos hacer es ir al siguiente link http://wkhtmltopdf.org/ y descargar la versión que necesitamos. Cuentan con versión para Windows, Linux, OS, FreeBDS, etc.

Después de descargar el que requiere su sistema operativo vamos a instalarlo en nuestras maquinas. En mi caso estoy usando Windows 7.

Cuando ya tenemos nuestro sistema para crear PDF o imágenes vamos a crear un pequeño proyecto en Java con el nombre de webtoImage.

Lo que realmente vamos hacer con nuestro proyecto en Java es llamar el framework con los parámetros requeridos para poder generar las imágenes o el pdf.

Lo primero que debemos conocer es donde se encuentra ubicado el framework que instalamos. Ya que al final lo que vamos hacer es ejecutar el framewok con los parámetros que necesitamos.

Para nuestro ejemplo vamos hacer el llamado de dos formas diferentes. Vamos buscar el sitio que deseamos transformar en pdf e imagen.

En el caso de las imágenes vamos a crear un ProccessBuilder que se encargara de hacer el llamado al framework con los parámetros necesarios para poder crear el pdf. Se requiere el link que vamos a llamar htmlFilePath, luego donde los vamos a guardar que vamos a llamar pdfFilePath y finalmente la dirección de donde está el framework y esos parámetros nos permitirán crear nuestro pdf.

Y vamos usar el sistema wkhtmltopdf.exe.
String webKitLocation="C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"; 
            
            //primero vamos a crear el PDF
            String htmlFilePath = "http://www.amazon.com/"; 
            String pdfFilePath = "C:\\TempPicture\\result.pdf";
            ProcessBuilder pb = new ProcessBuilder(webKitLocation, htmlFilePath, pdfFilePath);
            pb.redirectErrorStream(true);
            Process process = pb.start();
            
            BufferedReader inStreamReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = inStreamReader.readLine();
            
            while(line != null)
            {
                System.out.println(line);
                line = inStreamReader.readLine();
            }
Luego vamos hacer la imagen. Para este vamos a usar wkhtmltoimage.exe. En este caso vamos a utilizar la librería Runtime para invocar el framework. Vamos a enviar los parámetros necesarios para poder crear la imagen con su nombre, formato, etc.

//Para las imagenes
            pdfFilePath = "C:\\TempPicture\\result.png";
            webKitLocation="C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltoimage.exe"; 
             Runtime rt = Runtime.getRuntime() ; 
            Process p = rt.exec(webKitLocation + " --quality 10 --height 800 --height 600 --format png " 
+ htmlFilePath +  " " +pdfFilePath) ;
Ahora podemos ver el pdf y la imagen en la carpeta de destino que agregamos. Si quieren aprender más sobre el framework y los parámetros que se le pueden enviar es solo cuestión de investigar en la documentación del framework.




Para descargar el ejemplo puede darle clic aquí
 


Etiquetas: