Portada » Featured, Headline, Programacion, Web

Como imprimir open flash chart desde gxt-gwt

9 mayo 2010 Sin comentarios
escrito por : aKcro

Muchos de los que programan utilizando librerías gxt de www.extjs.com utilizan open flash chart para desplegar gráficos en pantalla, el problema es manejar la impresión desde la web, ya que por medio de los navegadores no tenemos control sobre el hardware.

En general siempre utilizamos javascript para imprimir utilizando el clásico window.print(); y lo que haremos para poder captar los gráficos como objetos flash desde gxt sera utilizar funciones nativas de javascript para generar un html e imprimirlo.

Vamos al código:

Chart nuevoGrafico = new Chart();

Vamos a generar ese gráfico, no entraremos en detalles de como se generará o como se desplegará o en que contenedor irá, aquí la finalidad es imprimir, por lo que asumiremos que todos han creado gráficos.  De todas maneras se puede ver una lista de ejemplos desde Aquí.

Button btnPrint = new Button(“Imprimir”);

btnPrint.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String img1 = getImage(nuevoGrafico.getSwfId());
String myHtml=”";
myHtml += “<center><img src=’data:image/png;base64,” + img1 + “‘/></center>”; }
printHtml(myHtml);
}
});

Lo que haremos sera generar una imagen en base 64 a partir de nuestro objeto flash utilizando la función getImage(String id), luego generar el código html que mostrará la imagen en pantalla, finalmente imprimirlo.  Notar que prefiero generar el html en esta sección debido a que pueden existir más gráficos o algo en particular que nos gustaría mostrar para imprimir en nuestro html.

Vamos a las funciones:

/*

* Retorna la imagen en base 64

*/

public static String getImage(String id) {

return getImageData(id);

}

private static native String getImageData(String id)

/*-{

var swf = $doc.getElementById(id);

var data = swf.get_img_binary();

return data;

}-*/;

Con esto obtenemos la imagen en base 64 ahora solo necesitamos imprimir nuestro html.

/**

* Imprime el codigo html.

* @param x Codigo html que se mostrara en una ventana popup

*/

public static native void printHtml(String x)

/*-{

img_win=window.open(”,’name’,'height=800,width=800,scrollbars=yes’);

var tmp = img_win.document;

tmp.writeln(‘<html><head><title>Imprimir Graficos<\/title><\/head>’);

tmp.writeln(‘<body>’);

tmp.writeln(x);

tmp.writeln(‘<\/body><\/html>’);

tmp.close();

img_win.print();

}-*/;

Eso es todo amigos. Saludos.

Comparte:
  • Facebook
  • Twitter
  • Google Bookmarks
  • Meneame
  • Tumblr
  • Live
  • del.icio.us
Line Break

Author: aKcro (56 Articulos)

Deja tu comentario!

Debes estar Logeado para dejar un comentario.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes