• Publicidad

Generar imagen a partir de tabla html en script.pl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Generar imagen a partir de tabla html en script.pl

Notapor sarriaga » 2015-01-15 10:23 @474

!Hola, compañeros Perleros!, espero que puedan ayudarme. Verán, soy nueva en este lenguaje y no sé muy bien cómo crear una imagen de una tabla html o dibujarla.

Les explico más detalladamente: tengo un script donde realizo una consulta a la base de datos y muestro el resultado en una tabla. Ahora, lo que quiero es guardar como imagen la pura tabla o lo que es el resultado. ¿Hay manera de hacer esto? Ya he buscado cómo hacerlo y no he tenido éxito. :(

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $fetch = $dbh->selectall_arrayref("SELECT * FROM ALUMNOS");
  2.  
  3. if(defined $fetch && scalar(@$fetch) == 1){
  4.  foreach(@$fetch){
  5.   push(@$tabla, $_)
  6.  }
  7. }
  8.  
  9. unshift(@$tabla, $q->td({-bgcolor=>'#A9E2F3'},
  10. ['<b>No. ALUMNO</b>','<b>NOMBRE<b>','<b>CALIFICACION</b>'])) if defined $tabla;
  11.  
  12. print $q->start_html("Lista de Alumnos");
  13.   print $q->start_form();
  14.   print $q->h3({-align=>'CENTER'},'Lista de Alumnos'.'<br>');
  15.   print 'Inicio DD-MM-AAAA: '.$q->textfield(-name=>'init').'&nbsp;&nbsp;&nbsp;&nbsp;';
  16.   print 'Fin DD-MM-AAAA: '.$q->textfield(-name=>'end').'&nbsp;&nbsp;&nbsp;&nbsp;';
  17.   print 'Filtro: '.$q->popup_menu(-name=>'filtro', -values=>['','Alumnos', 'Profesores'], -default=>$filtro, -override=>1).'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
  18. print $q->table({-border=>1, -cellpadding=>2, -cellspacing=>0}, $q->Tr($tabla)) if defined $tabla && @$tabla;
  19.   print $q->end_form();
  20.   print $q->end_html();
  21.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


La tabla que se generó es la que quiero guardar como imagen o dibujarla, el resto no.

Espero que puedan orientarme.

¡Saludos!
sarriaga
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2013-10-21 08:42 @404

Publicidad

Re: Generar imagen a partir de tabla html en script.pl

Notapor explorer » 2015-01-15 11:43 @530

Hola.

Dibujarla, ¿en qué formato?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar imagen a partir de tabla html en script.pl

Notapor sarriaga » 2015-01-15 12:41 @570

Puede ser .jpg o .png
sarriaga
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2013-10-21 08:42 @404

Re: Generar imagen a partir de tabla html en script.pl

Notapor explorer » 2015-01-16 07:25 @351

Necesitarás la ayuda de alguna biblioteca externa o la participación de un navegador web (casi siempre, el Firefox).

En Windows existe Win32::CaptureIE, pero he visto por ahí decir que ya no funciona (es de hace 11 años). Más moderno es Win32::Capture, pero captura pantalla o una ventana o un rectángulo de la pantalla.

Luego está el módulo Wight, que sirve para comunicarse con la biblioteca phantomjs, y a partir de ahí poder sacar un pantallazo de la página:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use Wight;
  3.  
  4. my $wight = Wight->new;
  5.  
  6. $wight->visit('http://www.google.com/');
  7. $wight->render('google.png');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra posibilidad es usar la API de Selenium para manejar la misma biblioteca PhantomJS. Hay módulos para ello, naturalmente: En este artículo se puede ver un ejemplo de consulta a una web y cómo guardar en gráfico una captura del resultado.

Otra opción es, que si la tabla y los contenidos de las celdas son sencillos, puedes modificar el código para que en vez de generar HTML, cree el gráfico de forma directa, en PNG. Eso se puede hacer con módulos como GD, y otros (este es el método que yo siempre he usado).

Otra opción es la de manejar el Firefox directamente para que sea él el que haga la transformación de HTML a PNG. Con módulos como WWW::Mechanize::Firefox se puede hacer. En WWW::Mechanize::Firefox::Cookbook tienes algunos ejemplos, como este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.   my $png = $mech->content_as_png();
  2.   open my $fh, '>', 'page.png'
  3.       or die "Couldn't save to 'page.png': $!";
  4.   binmode $fh;
  5.   print {$fh} $png;
  6.   close $fh;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Este módulo sí que permite renderizar un solo elemento de la página. Si, por ejemplo, la tabla tiene un campo id, con un nombre, se puede renderizar solo esa tabla indicando su nombre:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.   my $shiny = $mech->selector('#tabla', single => 1);
  2.   my $png = $mech->element_as_png($shiny);
  3.   open my $fh, '>', 'page.png'
  4.       or die "Couldn't save to 'page.png': $!";
  5.   binmode $fh;
  6.   print {$fh} $png;
  7.   close $fh;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Mechanize también permite manejar la biblioteca PhantomJS, con la ayuda de WWW::Mechanize::PhantomJS.

Por estos hilos hay más respuestas sobre este problema. Usa el sistema de búsqueda.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar imagen a partir de tabla html en script.pl

Notapor sarriaga » 2015-01-16 12:26 @560

explorer escribiste:Otra opción es, que si la tabla y los contenidos de las celdas son sencillos, puedes modificar el código para que en vez de generar HTML, cree el gráfico de forma directa, en PNG. Eso se puede hacer con módulos como GD, y otros (este es el método que yo siempre he usado).


Me parece que esto es justo lo que necesito :wink:
sarriaga
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2013-10-21 08:42 @404


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados