Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Consulta sobre reporte PDF

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Vie Oct 12, 2007 7:14 am
situ
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Abr 2007
Mensajes: 149
Consulta sobre reporte PDF Responder citando

Tengo un problema con el siguiente script, capaz alguien me puede ayudar.

Perl:

#!/bin/perl

use PDF::Report;

my $pdf = new PDF::Report(
                          PageSize => 'A4',
                          PageOrientation => 'Portrait'
);

$pdf->newpage(1);
$pdf->setFont('Helvetica-bold');
$pdf->setSize(14);
my ($width, $height) = $pdf->getPageDimensions();

$pdf->centerString(0, $width, $height-40, "Reporte de Seguridad");

$pdf->setFont('Helvetica');
$pdf->setSize(10);

open (DATOS,"hola.txt");
while (@linea = <DATOS>){
my $text1= "@linea";


$pdf->addParagraph($text1, 30, $height-70, $width-60, 30, 25, 10);
}


open(PDF, "> reporte.pdf") or die "ERROR: No puedo escribir en reporte.pdf: $!\n";
print PDF $pdf->Finish();
close(PDF);

exit;




Contenido de hola.txt

Código:

marcos
marcos    marcos1
marcos    marcos2


El tema que genera el reporte, pero me pone el contenido del archivo en un mismo renglon, digamos que no respeta los "ENTER's"

Saludos
Mensaje Vie Oct 12, 2007 8:19 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
Responder citando

Hola,

Algunos comentarios. En primer lugar es cuando usas un while para leer un archivo, lo estás leyendo línea por línea, así que no tiene caso leerlo en un array, y después ese array meterlo a un string, más bien debería ser:

Perl:
while ($text1 = <DATOS>){


Nunca cierras el archivo DATOS, no te olvides siempre cerrar los archivos que abras:

Perl:
close DATOS;


Finalmente, viendo la documentación del módulo PDF::Report, viene que la sintáxis para el párrafo es:

Perl:
$pdf->addParagraph($text, $hPos, $vPos, $width, $height, $indent, $lead);


El problema, es que estás metiendo la línea en la misma posición vertical, por lo que según la documentación, meterá todo en la misma línea.

Te dejo aquí un par de links a unos hilos del foro donde se ha tratado lo mismo:
http://perlenespanol.baboonsoftware.com/foro/about1524.html
http://perlenespanol.baboonsoftware.com/foro/about784.html

Saludos
Mensaje Vie Oct 12, 2007 8:45 am
situ
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Abr 2007
Mensajes: 149
Responder citando

Gracias, ahí me anda Very Happy
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group