• Publicidad

Error PDF::ReportWriter

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Error PDF::ReportWriter

Notapor Lor » 2010-05-14 07:26 @351

Estoy trabajando con este modulo y no he tenido problemas. Pero detecto un error al querer pintar el fondo de una celda.

Siguiendo la explicación del CPAN, puedo cambiar el color del texto de una celda por ejemplo sin problemas utilizando (colour_func) y NO TIRA ERROR, pero no sucede lo mismo con el cambio de color de fondo (background_func).

http://search.cpan.org/~dkasak/PDF-Repo ... round_func

Utilizando por ejemplo en una columna:

colour_func FUNCIONA:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
{
     name               => "nombre_col",
     percent            => 30,
     align              => "centre",
     colour_func        => sub { red_if_fantastic(@_); },
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


pero si aplico lo mismo para obtener por ejemplo en vez de texto rojo, color de fondo rojo, me tira error:

background_func NO FUNCIONA:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
{
     name               => "nombre_col",
     percent            => 30,
     align              => "centre",
     background_func    => sub { red_if_fantastic(@_); },
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Según el CPAN tanto background_fun como colour_func reciben un COLOR desde la función, pero para el caso de background_fun este valor es erróneo.

Muchísimas gracias,
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282

Publicidad

Re: Error PDF::ReportWriter

Notapor explorer » 2010-05-14 08:10 @382

Viendo el código de PDF::ReportWriter, se ve que el resultado de esas dos funciones es distinta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     if ( $cell->{colour_func} ) {
  2.         if ( $self->{debug} ) {
  3.             print "\nRunning colour_func() on data: " . $string . "\n";
  4.         }
  5.         $self->{txt}->fillcolor( $cell->{colour_func}( $string, $row, $opt ) || "black" );
  6.     } else {
  7.         $self->{txt}->fillcolor( $cell->{colour} || "black" );
  8.     }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Efectivamente, el color que la función devuelve es la que se guarda en $self->{txt}->fillcolor().

En cambio, con background_func, el funcionamiento es distinto.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     if ( $cell->{background_func} ) {
  2.         if ( $self->{debug} ) {
  3.             print "\nRunning background_func() \n";
  4.         }
  5.        
  6.         $background = $cell->{background_func}($opt->{current_value}, $opt->{current_row}, $opt);
  7.     }
  8.     else {
  9.         $background = $cell->{background};
  10.     }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y a partir de aquí, se utilizar $background como una referencia a un hash:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     if ( $background->{shape} ) {
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si miras la documentación del módulo, hay una sección que se llama BACKGROUNDS, donde te explica que debe ser un hash con estos atributos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
shape
colour
border
borders
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
así que es eso lo que debe devolver la función definida en background_func: una referencia a un hash de ese tipo.

Por ejemplo, podría ser así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub red_if_fantastic {

     my $data = shift;

     my %background;

    $background{shape  } = "box";
    $background{border } = "black";
    $background{borders} = "all";

     if ( $data eq "Fantastic" ) {
          $background{colour} = "red";
     } else {
          $background{colour} = "black";
     }

     return \%background;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error PDF::ReportWriter

Notapor Lor » 2010-05-15 04:42 @237

¡¡¡¡explorer, Excelente!!!!

Dio resultado, muchísimas gracias. :D
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282


Volver a Módulos

¿Quién está conectado?

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

cron