• Publicidad

Diferentes salidas xls, pdf, doc.

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Diferentes salidas xls, pdf, doc.

Notapor Seth » 2007-02-06 19:25 @851

He estado siguiendo el "hilo" de la creación de reportes de "salida".

llamando salida a la creación de archivos con extensiones xls, pdf, doc.

Con gran éxito pude usar el módulo Spreadsheet::WriteExcel y SimpleExcel descrito en los foros.

Estuve probando el módulo para la creación de la salida pdf, intenté utilizar el módulo PDF::Report junto con el PDF::API2 y el código descrito también por estos módulos y mi salida fue a la mitad puesto que sí genero el archivo PDF, pero el contenido en blanco.

Y para la salida doc (Archivo de Microsoft Word), no tengo la más remota idea de qué módulo usar; intenté con Win32:OLE, pero estoy más perdido que una batalla sin municiones.

Agradecería alguna pista, dejo el código "copiado" (odio la palabra pero es la realidad) del PDF y si tienen algún ejemplo de la creación de archivos Word, o una liga de algún modulo, mucho se los he de agradecer.

El pero más grande que tengo es que estoy utilizando IIS y Activeperl.
No obstante han funcionado los ejemplos de este sitio.

Gracias por todas las atenciones.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!\perl\bin -l
use strict;
my $datos               = '/Inetpub/wwwroot/dat/extractor/ejemplo.pdf';
 
use PDF::Report;
my $pdf = new PDF::Report(
                          PageSize => 'letter',
                          PageOrientation => 'Portrait'
);

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

$pdf->centerString(0, $width, $height-40, "Párrafo");

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

my $text1= "texto de prueba";
my $text2= "Segundo texto de prueba";
my $text3= "Tercer texto de prueba";

$pdf->addParagraph($text1, 30, $height-70, $width-60, 30, 25, 10);
$pdf->addParagraph($text2, 30, $height-100, $width-60, 20, 25, 10);
$pdf->addParagraph($text3, 30, $height-120, $width-60, 20, 25, 10);

open(PDF, "> $datos") or die "ERROR: No puedo escribir en $datos: $!\n";
print PDF $pdf->Finish();
close(PDF);
 
exit;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Seth
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2004-07-15 15:25 @684
Ubicación: Mexico DF

Publicidad

Notapor explorer » 2007-02-06 20:05 @878

Buscando en CPAN por módulos que tengan 'Word' me sale por ejemplo este: Win32::Word::Writer.

De todas formas, yo te aconsejo que te olvides del formato Word y te pases el OpenDocument (OpenOffice::OODoc).

El formato Word no es estándar, no es compatible, no está garantizada su supervivencia y sólo se puede leer en un determinado programa de una empresa norteamericana.

El Open Document es estándar (norma ISO), es compatible (es independiente del vendedor), y se puede leer desde cualquier programa que siga la norma (hasta incluso hay una extensión para el Firefox). Incluso Word incorpora una extensión para poder leer documentos ODF.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2007-02-06 21:20 @931

Hola:

Crear PDFs con Perl no es algo imposible, pero tampoco algo muy sencillo.

Pronto haré un tutorial acerca de esto poniendo un poco de la experiencia que he tenido con ello y poniendo ejemplos de funciones que he creado y uso cuando hago mis PDFs.

Sin embargo, por mientras, te comento que lo más sencillo y práctico que he encontrado es realizar una combinación del módulo Text::Format con PDF::Create.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-02-07 04:45 @240

Encontré el fallo.

Quita la opción '-l' de la primera línea del script.

Esa opción manda un retorno de carro cada vez que hay un final de línea, pero en tu caso, lo que haces un volcado binario de un PDF. Al poner la opción, estabas creando un PDF con muchos errores en el código, por lo que no salía nada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Gracias.

Notapor Seth » 2007-02-07 12:41 @570

Las respuestas son de lo mas precisas y concretas, es lo que necesito.

Muchas Gracias.!

Desde México, D.F., Saludos. 8)
Seth
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2004-07-15 15:25 @684
Ubicación: Mexico DF

2 de 3

Notapor Seth » 2007-02-10 17:20 @764

2 de 3 "reportes de salida" he concretado gracias a este sitio, la salida .xls y la .pdf

Ahora bien, voy por la tercera salida: crear un documento plenamente formateado que incluya un encabezado, una imagen y una tabla, siguiendo el consejo de crear un documento con la salida .odt (creo que aun no llega ese tutorial) pero como novato tendré que aventurarme hacerlo con el código de CPAN para este Documento (OpenOffice-OODoc).

Tendré que personalizarlo para que corra en la plataforma de Windows (Activeperl). Esperando contar con su apoyo, comentarios, tutoriales, ligas, ejemplos o cualquier cosa de ayuda.
Seth
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2004-07-15 15:25 @684
Ubicación: Mexico DF

Error

Notapor Seth » 2007-02-12 20:27 @894

Amigos, espero y me puedan echarme la mano, no he podido generar un archivo .odt utilizando el siguiente código.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
my $datos       = '/Inetpub/wwwroot/dat/extractor/ejemplo.odt';
my $imagen1= '/Inetpub/wwwroot/dat/extractor/imagen1.jpg';

use OpenOffice::OODoc;
        my $document = ooDocument(file => $datos);
        my $newparagraph = $document->insertParagraph
                        (
                        my $place,
                        position        => 'before',
                        text            => 'A new paragraph to be inserted',
                        style           => 'Text body'
                        );
                       
        $document->createImageStyle
                        (
                        "NewImageStyle",
                        properties      =>
                                {
                                'draw:luminance'        => '20%',
                                'draw:color-inversion'  => 'true'
                                }
                        );
                       
        $document->createImageElement
                        (
                        "Image1",
                        style           => "NewImageStyle",
                        attachment      => $newparagraph,
                        import          => $imagen1
                        );
                       
        $document->save;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si alguien me puede dar pistas u otro ejemplo. Lo que busco es que sólo cree un documento el cual tenga texto e imagen o tablas, etc. como si lo hubiese creado en un editor de textos con soporte para ello.
Al correr mi codigo me sale...

Código: Seleccionar todo
format error: can't find EOCD signature
 at C:/Perl/site/lib/OpenOffice/OODoc.pm line 109
[OpenOffice::OODoc::File::new] Read error
Can't call method "link" on an undefined value at C:/Perl/site/lib/OpenOffice/OODoc/XPath.pm line 468.



No quiero darme por vencido, ayuda.
Seth
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2004-07-15 15:25 @684
Ubicación: Mexico DF

Notapor creating021 » 2007-02-13 15:29 @687

Lo que pasa es que estás tratando de usar un archivo ($datos) que no es odt, sí quieres crear uno nuevo usa create => $dato y no file => $dato puesto que file es para lectura (según veo)
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Aún sigo

Notapor Seth » 2007-02-14 13:47 @616

Sisculpen mi ignorancia, pero no quiero quedarme así, corregí el código para mi en su forma más simple, pero hay algo que aún no entiendo. Tal vez sea la estructura de cómo se forman estos documentos, además de un mensaje de error al código siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict;
use OpenOffice::OODoc;

my $datos = '/Inetpub/wwwroot/dat/extractor/test.odt';

my $document = ooDocument(create => $datos, member => "content")
     or die "no se puede crear el archivo test.odt\n";
     
        my $content = ooDocument
                        (
                        file => $datos,
                        member => 'content'
                        );

        my $styles = ooDocument
                        (
                        file => $datos,
                        member => 'styles'
                        );
       
                       

        $content->appendParagraph
                        (
                        text => "Agregando texto con el estilo",
                        style => "BlueStyle"
                        );
        $styles->createStyle
                        (
                        "BlueStyle",
                        parent => 'Text body',
                        family => 'paragraph',
                        properties =>
                                {
                                area            => 'text',
                                'fo:color'      => rgb2oo('blue')
                                }
                        );

        $datos->save;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

El error que me marca es en cuanto a la estructura XML,
*
[OpenOffice::OODoc::XPath::new] No XML content
no se puede crear el archivo test.odt
*
¿Alguna pista? se los he de agradecer, sigo leyendo todo lo relacionado con la generación de este tipo de archivos. :cry:
Seth
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2004-07-15 15:25 @684
Ubicación: Mexico DF

Notapor explorer » 2007-02-14 17:32 @772

Tienes que fijarte un poquito más en el ejemplo que aparece en la página de OpenOffice::OODoc.

En tu caso, deberás cambiar $datos->save por $document->save.

Deberías leerte, con calma, el OODoc::Intro.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

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