Mar Feb 06, 2007 6:25 pm
|
 |
Seth
Perlero Nuevo

|
Registrado: 15 Jul 2004
Mensajes: 13
Ubicación: Mexico DF
|
|
| Diferentes salidas xls, pdf, doc. |
|
|
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.
| Perl: | #!\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; |
|
|
|
|

Mar Feb 06, 2007 7:05 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Mar Feb 06, 2007 8:20 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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 |
|
Mie Feb 07, 2007 3:45 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Mie Feb 07, 2007 11:41 am
|
 |
Seth
Perlero Nuevo

|
Registrado: 15 Jul 2004
Mensajes: 13
Ubicación: Mexico DF
|
|
| Gracias. |
|
|
Las respuestas son de lo mas precisas y concretas, es lo que necesito.
Muchas Gracias.!
Desde México, D.F., Saludos.  |
|
Sab Feb 10, 2007 4:20 pm
|
 |
Seth
Perlero Nuevo

|
Registrado: 15 Jul 2004
Mensajes: 13
Ubicación: Mexico DF
|
|
| 2 de 3 |
|
|
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. |
|

Lun Feb 12, 2007 7:27 pm
|
 |
Seth
Perlero Nuevo

|
Registrado: 15 Jul 2004
Mensajes: 13
Ubicación: Mexico DF
|
|
| Error |
|
|
Amigos, espero y me puedan echarme la mano, no he podido generar un archivo .odt utilizando el siguiente código.
| Perl: | #!/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; |
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: |
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. |
|

Mar Feb 13, 2007 2:29 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 478
Ubicación: Frente al monitor
|
|
|
|
|
| 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) |
|

Mie Feb 14, 2007 12:47 pm
|
 |
Seth
Perlero Nuevo

|
Registrado: 15 Jul 2004
Mensajes: 13
Ubicación: Mexico DF
|
|
| Aún sigo |
|
|
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:
| Perl: | #!/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; |
El error que me marca es en cuanto a la estructura XML,
| Cita: | *
[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.  |
|

Mie Feb 14, 2007 4:32 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|