2008-12-13

Generar documentos OpenOffice con PHP

PHP DocWriter es una serie de clases en php para crear documentos de OpenOffice.org en XML, luego con la propia suite lo conviertes al formato que desees/necesites.

Puede que esto ya lo hayas visto puesto que fué uno de los proyectos aprobados para el Google Summer of Code, su objetivo era leer, modificar y crear documentos OpenDocument desde PHP.

¿Cómo generar un documento Open Office con PHP?

Php DocWriter es una serie de clases PHP que permiten crear documentos OpenOffice en formato XML, puedes descargar los archivos de esta librería aqui.

Sigue los pasos de instalación en el enlace mencionado (En Inglés)

Otra de sus características es la de convertir el documento XML generado con la clase a cualquier otro formato de manera automática.

Características Php DocWriter

1. Cabeceras y pies de página
Puedes definir varias clases de páginas para tus documentos (primera, estandar,especial etc..) y asignar diferentes pies y cabeceras de página para cada una de ella.

2. Cajas de texto

3. Imágenes

4. Tablas

5. Estilos
* Estilos de páginas
* Estilos de párrafos
* Estilos para los carácteres

6. Información Meta del documento
Incluye a los documentos información como el autor o título de la página.

7. Conversión automática a otros formatos
La libreria cómunica con la aplicacion a traves de la nterfaz de esta para convertir los documentos XML al formato deseado.

Actualmente son soportados MS Word, PDF, RTF, StarWriter, LaTeX, XHTML, HTML, etc.

8. Miscelánea

* Enlaces
* Favoritos
* Zonas predefinidas

Ejemplo de Php DocWriter

Estos ejemplos son básicos y utilizan la última version estable de la librería (Version 0.3).

Insertar texto, el clásico "Hola Mundo"

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

$sxw = new pdw_document;

$sxw->SetLanguage('es', 'ES');
$sxw->SetStdFont('Times New Roman', 10);
$sxw->Write('!Hola Mundo!');

$sxw->Output();

?>

Estilos y saltos de línea

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

$sxw = new pdw_document;
$sxw->SetLanguage('es', 'ES');
$sxw->SetStdFont('Times New Roman', 10);
$sxw->SetFont(array('family'=>'Verdana', 'style'=>'BI', 'size'=>27));
$sxw->Write('Primer Nombre');
$sxw->SetFont(array('family'=>'Arial', 'style'=>'U', 'size'=>22));
$sxw->Write('Segundo Nombre');
$sxw->Ln();
$sxw->SetFont (array('family'=>'Comic Sans MS', 'size'=>32));
$sxw->Write ('Tercer Nombre');
$sxw->Ln();
$sxw->SetFont (array('family'=>'Georgia', 'style'=>'B', 'size'=>22));
$sxw->Write ('Cuarto Nombre ');
$sxw->Output();

Cajas de texto e Imágenes

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

$sxw = new pdw_document;
$sxw->SetLanguage('es', 'ES');
$sxw->SetStdFont ('Times New Roman', 10);
$sxw->Write('Vamos a dibujar algunas cajas...');
$sxw->Ln(2);

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

$tb2 = new pdw_textbox ($sxw, array ('w'=>5.5, 'h'=>5, 'x'=>1, 'y'=>3));
$tb2->Write('Una imagen dentro de una caja de texto...');
$tb2->Ln();
$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('Insertar enlaces aqui: ');
$tb3->AddLink("TuFuncion", "http://www.tufuncion.com");
$tb3->Insert();

$sxw->Output();

?>

Cabeceras, pies e información META

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

$sxw = new pdw_document;

$sxw->SetLanguage('es','ES');
$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 ("TuFuncion"," http://www.tufuncion.com");
$foot->Insert();

$sxw->SetTitle ('Documento TuFuncion Prueba');
$sxw->SetAuthor ('Manu');
$sxw->SetSubject ('Documento creado por TuFuncion');
$sxw->SetKeyWords ('php,OpenOffice.org,phpdocwriter');
$sxw->Write ('Esto es un documento básico!');

$sxw->Output();

?>

Tablas

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

$sxw = new pdw_document;

$sxw->SetLanguage('es','ES');
$sxw->SetStdFont ("Times New Roman",10);
$sxw->Write ('Ejemplo de tabla:');
$sxw->Ln(2);

$header = array('Dni','Nombre','Apellido','Telefono','Email');
$data[] = array('23453451F','Juan','Bermudez','912345678','juan.bermudez@gmail.com');
$data[] = array('36213764H','Daniel','Gaeta','915436753','daniel.gaeta@gmail.com');

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

$sxw->Output();

?>

Conclusión

Este pequeño manual debe haberte servido para iniciarte en esta clase sino ha sido asi prueba a leerte la documentación en inglés, usando la potencia de PHP DocWriter puedes crear documentos OpenOffice.org sin necesidad de tener la aplicación instalada en tu servidor.

Openoffice en Español

No hay comentarios: