miércoles, 31 de octubre de 2007

PHP DocWriter es un conjunto de clases PHP que le permiten crear documentos en formanto OpenOffice.org XML (es decir, documentos StarOffice / OpenOffice.org). Puede descargar los archivos de la libreria de aquí (http://phpdocwriter.sourceforge.net/download.php?lang=en). Además, usted puede encontrar pasos de la instalación en el enlace mencionado.

También es capaz de comunicar con la aplicación de OpenOffice.org con la finalidad de la conversión de documentos OpenOffice.org XML generados a cualquier otro formato soportado por OpenOffice.org en una forma automática y transparente.

Funcionalidad
La clase está aún en fase de desarrollo pero es completamente funcional en este momento. En estos momentos tiene incorporadas las siguientes características:
1. Encabezados de pagina y footer.
Puede definir distintas clases de páginas de sus documentos (la primera página, índice, estándar, etc) y asignar diferentes niveles de cabecera y pie por cada clase.
2. Textboxes
3. Imágenes
4. Tables
5. Drawings
6. Styles management
-Estilo de pagina
-Apartado de estilos
-Estilos de caracteres

7. Meta de la información del documento
Meta la información del documento, el documento incluye información como el autor o el título del documento.

8. Conversión automática de los documentos creados a otros formatos
Esto se logra utilizando la interfaz UNO de OpenOffice.org . La libreria se comunica con la aplicación a través de esta interfaz con el fin de convertir documentos a otros formatos. La libreria no puede convertir documentos en sí, es necesario tener OpenOffice.org instalado y correctamente configurado para aceptar las conversiones. Actualmente los formatos que están soportados son MS Word, PDF, RTF, StarWriter, LaTeX, XHTML, HTML, etc

9. Misc
Algunas otras características de la libreria:
-Links
-Bookmarks
-Page breaks
-Campos Predefinidos

Campos como el número de página o el número de páginas del documento.

He aquí algunos ejemplos que crear documentos simples. Estos ejemplos funcionan con la ultima versión de la librería (actualmente 0,3 versión).
insertar texto
Vamos a comenzar con un simple 'Hola Mundo'

<?php
require_once('../lib/include.php');
import('phpdocwriter.pdw_document');

$sxw = new pdw_document;

$sxw->SetLanguage('en', 'US');
$sxw->SetStdFont('Times
New Roman', 10);
$sxw->Write('Hello World!');

$sxw->Output();

?>


Estilos de texto y saltos de línea
Un ejemplo sobre el uso de diferentes estilos de texto y saltos de línea

<?php
require_once('../lib/include.php');
import('phpdocwriter.pdw_document');

$sxw = new pdw_document;
$sxw->SetLanguage('en', 'US');
$sxw->SetStdFont('Times New
Roman', 10);
$sxw->SetFont(array('family'=>'Verdana',
'style'=>'BI', 'size'=>27));
$sxw->Write('John Doe');
$sxw->SetFont(array('family'=>'Arial', 'style'=>'U',
'size'=>22));
$sxw->Write('Mark');
$sxw->Ln();
$sxw->SetFont (array('family'=>'Comic Sans MS',
'size'=>32));
$sxw->Write ('Edarta');
$sxw->Ln();
$sxw->SetFont (array('family'=>'Georgia', 'style'=>'B',
'size'=>22));
$sxw->Write ('Nick ');
$sxw->Output();

?>


Texto e imágenes
Un ejemplo para mostrar el uso del cuadro de texto y de imagen

<?php

require_once('../lib/include.php');
import('phpdocwriter.pdw_document');
import("phpdocwriter.pdw_textbox");

$sxw = new pdw_document;
$sxw->SetLanguage('en', 'US');
$sxw->SetStdFont ('Times New Roman', 10);
$sxw->Write('Lets draw some boxes...');
$sxw->Ln(2);

$tb1 = new pdw_textbox ($sxw, array ('w'=>15, 'h'=>2,
'x'=>1, 'y'=>0.5));
$tb1->Write('Text Box 1');
$tb1->Insert();

$tb2 = new pdw_textbox ($sxw, array
('w'=>5.5, 'h'=>5, 'x'=>1, 'y'=>3));
$tb2->Write('An image inside the text box...');
$tb2->Ln();
//You can use any .png image with width = 4.12 and
height = 1.92
$tb2->Image(array('path'=>'logo.png',
'w'=>4.12, 'h'=>1.92));
$tb2->Insert();

$tb3 =
new pdw_textbox ($sxw,array ('w'=>9, 'h'=>4, 'x'=>7,
'y'=>3));
$tb3->Write('Inserts links inside: ');
$tb3->AddLink("pwneds", "http://pwneds.blogspot.com");
$tb3->Insert();

$sxw->Output();

?>


Cabecera, pie de página y meta-información información

<?php
require_once('../lib/include.php');
import('phpdocwriter.pdw_document');
import('phpdocwriter.pdw_header');
import('phpdocwriter.pdw_footer');

$sxw = new pdw_document;

$sxw->SetLanguage('en','US');
$sxw->SetStdFont ("Times
New Roman",10);
$sxw->AddPageDef(array('name'=>'Standard','margins'=>'2,2,2,2'));

$head = new pdw_header($sxw,'Standard');
$head->Ln();
$head->Image(array('path'=>'logo.png','w'=>4.12,'h'=>1.92));
$head->Insert();

$foot = new pdw_footer($sxw,'Standard');
$foot->Ln();
$foot->AddLink ("Pwneds","
http://pwneds.blogspot.com/");
$foot->Insert();

$sxw->SetTitle ('Document PHPHACKS');
$sxw->SetAuthor
('Joeri');
$sxw->SetSubject ('Sample document created using
phpdocwriter');
$sxw->SetKeyWords
('php,OpenOffice.org,phpdocwriter');
$sxw->Write ('This is a sample
document!!!');

$sxw->Output();

?>


Tablas

<?php

require_once('../lib/include.php');
import('phpdocwriter.pdw_document');

$sxw = new pdw_document;

$sxw->SetLanguage('en','US');
$sxw->SetStdFont ("Times
New Roman",10);
$sxw->Write ('Sample Table:');
$sxw->Ln(2);

$header = array('ID','First Name','Last
Name','Tel','Email');
$data[] =
array('23453451F','John','Doe','912345678','john at dom.com');
$data[] =
array('36213764H','Cowboy','Beebob','915436753','beebob at dom.com');

$sxw->Table($header,$data);

$sxw->Output();

?>


Resumen. Esto debería poder empezar a generar documentos OpenOffice.org usando PHP. Usando el poder de PHP DocWriter puede crear documentos OpenOffice.org sin ni siquiera tener la aplicacion (OpenOffice.org) instalada en su servidor.

Mas info y fuentes:
http://phpdocwriter.sourceforge.net/
http://www.phphacks.com/

2 comentarios :

  1. Anónimo dijo...

    Hombre, funcional ... lo que se dice funcional no es.

    No tiene una versión desde 2005. Estaba desarrollado para OpenOffice 1.x y, no se si has intentado probar los ejemplos que aparecen en su web, pero no funcionan.

  2. Anónimo dijo...

    cierto lo que han comentado, la ultima version data del 2005, pero aun sigue siendo funcional en las versiones actuales de OpenOffice con unas ligeras modificaciones al codigo.