Perl en Español

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

Reporte PDF con formato HTML

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Dom Sep 30, 2007 12:44 pm
situ
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Abr 2007
Mensajes: 132
Reporte PDF con formato HTML Responder citando

Buenas. En este caso los molesto porque estoy tratando de imprimir en un archivo PDF el contenido de un archivo HTML, y el resultado que obtengo no es el que quiero, ya que el contenido de PDF se forma con el código fuente del HTML y no con su contenido.

Les dejo el código:

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");

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

open (DATOS,"reporte.html");
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;
Mensaje Dom Sep 30, 2007 3:42 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3894
Ubicación: Valladolid, España
Responder citando

Pues yo veo que el programa hace exactamente lo que le estás mandando hacer... saca en PDF el código fuente HTML de la página.

Lo que necesitas es un módulo que convierta a PDF no el código HTML sino la página HTML ya renderizada. Por ejemplo: PDF::FromHTML, aunque pone que no es compatible con los estilos CSS.
Mensaje Dom Sep 30, 2007 6:06 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 468
Ubicación: Frente al monitor
Responder citando

Perl:
while (@linea = <DATOS>){
    my $text1= "@linea";
    $pdf->addParagraph($text1, 30, $height-70, $width-60, 30, 25, 10);

}


Hmmmm....

Perl:
while (my $text1 = <DATOS>){
  $pdf->addParagraph($text1, 30, $height-70, $width-60, 30, 25, 10);
}


Aunque lo que queres hacer se hace con lo que explorer dijo.
Mensaje Lun Oct 01, 2007 11:29 am
situ
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Abr 2007
Mensajes: 132
Responder citando

Cambié el script, pero ahora obtengo el siguiente error cuando quiero instalar el módulo.

Código:
Perl:
#!/bin/perl
use PDF::FromHTML;
   my $pdf = PDF::FromHTML->new( encoding => 'utf-8' );
    $pdf->load_file('reporte.html');
    $pdf->convert(
        # With PDF::API2, font names such as 'traditional' also works
        Font        => 'font.ttf',
        LineHeight  => 10,
        Landscape   => 1,
    );
    $pdf->write_file('reporte.pdf');


Error:
Código:
root@tux2:/tmp/PDF-FromHTML-0.24# perl Makefile.PL
*** If you cannot install HTML::Tidy, you may use the XML::Clean
    module instead; however, you will run probably run into more
    "XML not well-formed" errors that way.
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- List::Util           ...loaded. (1.19)
- XML::Twig            ...loaded. (3.26)
- Graphics::ColorNames ...missing.
- LWP::Simple          ...loaded. (1.41)
- Image::Size          ...loaded. (3.01)
- PDF::Writer          ...loaded. (0.06 >= 0.05)
- HTML::Tidy           ...missing.
==> Auto-install the 2 mandatory module(s) from CPAN? [y] y
CPAN: File::HomeDir loaded ok (v0.66)
*** Dependencies will be installed the next time you type 'make'.
*** Module::AutoInstall configuration finished.
Warning: prerequisite Graphics::ColorNames 0 not found.
Warning: prerequisite HTML::Tidy 0 not found.
Writing Makefile for PDF::FromHTML

¿Alguien sabe el por qué de esto?
Mensaje Lun Oct 01, 2007 2:12 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3894
Ubicación: Valladolid, España
Responder citando

Parece que no ha podido bajar los módulos que faltan.
Mensaje Sab Jun 07, 2008 4:30 am
elnico
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Sep 2007
Mensajes: 37
Responder citando

Hola perleros.
Una pregunta, ¿este módulo también está disponible para Windows? Porque probé con "install PDF-FromHTML" en el ppm y me tira el clásico "not found. Search for it first".
Gracias de antemano.
Mensaje Sab Jun 07, 2008 4:34 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3894
Ubicación: Valladolid, España
Responder citando

Sí que está. Añade el repositorio trouchelle.com al PPM y allí está, la versión 0.24.

http://trouchelle.com/perl/ppmrepview.pl?l=P&v=8
Mensaje Sab Jun 07, 2008 5:41 am
elnico
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Sep 2007
Mensajes: 37
Responder citando

Hola y gracias por responder, explorer.

Agregué el repositorio (repository add http://trouchelle.com/ppm) y comencé la instalación del módulo PDF-FromHTML sin problemas.

Lastima que depende de otros y en la instalación me muestra un error "404 not found" porque no encuentra el módulo HTML-tidy(no está cargado en el repositorio).

Escribí install HTML-Tidy pero tampoco lo encuentra.

Creo que tendré que esperar a que arreglen el repositorio.

Saludos.
Mensaje Sab Jun 07, 2008 9:02 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3894
Ubicación: Valladolid, España
Responder citando

Falla porque en el sistema donde estás no tienes instalada la librería libtidy.

Eso te pasa por usar Windows. Cool
Código:
casa:~ # locate libtidy
/usr/lib/libtidy-0.99.so.0
/usr/lib/libtidy-0.99.so.0.0.0
/usr/share/doc/packages/libtidy
/usr/share/doc/packages/libtidy/license.html
casa:~ #
Mensaje Sab Jun 07, 2008 9:12 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3894
Ubicación: Valladolid, España
Responder citando

Estás de suerte...

http://tidy.sourceforge.net/#binaries
Mensaje Sab Jun 07, 2008 11:38 am
elnico
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Sep 2007
Mensajes: 37
Responder citando

Si, la verdad que Windows es una porquería para programar, todo eso de los .exe y los .dll, etc. Pero cuando te obligan, no queda otra, jeje.
Mensaje Sab Jun 07, 2008 1:07 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3894
Ubicación: Valladolid, España
Responder citando

elnico escribió:
Pero cuando te obligan, no queda otra, jeje.

Sí que hay opción: dimitir.

¿Odiamos los informáticos a Microsoft?
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