Written by: on 02/02/2011 @ 19:27

Aunque tengamos miles de lineas de codigo para poder generar un PDF, en ciertas ocasiones, nos es necesario generar un documento para ser editado a posteriori, en este caso lo mas sencillo es hacerlo con un documento RTF.

Segun wikipedia:

El Rich Text Format (formato de texto enriquecido a menudo abreviado como RTF) es un formato de archivo informático desarrollado por Microsoft en 1987 para el intercambio de documentos multiplataforma. La mayoría de procesadores de texto son capaces de leer y escribir documentos RTF.1

Pues bien, ahora nosotros veremos como generar dicho fichero con el proyecto open source PHPRtfLite. Se trata de una API que permite a los desarrolladores crear documentos RTF con php. PHPRtfLite está diseñado en los principios de programación orientada a objetos. Para trabajarlo con CakePHP haremos lo siguiente:

1. Descarga PHPRtfLite y extraer al Escritorio, por ejemplo.
2. Copia la directorio «lib» de PHPRtfLite a la carpeta app/vendors/ de tu proyecto
3. Renombra el directorio «lib» por «phprtf»

En estos momentos ya tendríamos listo para usar esta librería en nuestra aplicación web. Ahora vamos a generar el codigo necesario para que pueda descargarse el fichero RTF que vamos a generar.

4. Crea un nuevo layout y nombrarlo «rtf.ctp». Este fichero ha de incluir el siguiente codigo fuente:

<?php
header(«Content-type: application/msword»);
echo $content_for_layout;
?>

5. En el controlador sobre el que desees usar dicha libreria crea la funcion llamada «holamundo» con el siguiente codigo:

function holamundo() {
$this->layout = 'rtf';
}

6. Y en la vista, crea el fichero «holamundo.ctp», con el siguiente codigo, tan sencillo que no hace falta ni explicarlo:


<?php
App::import(‘Vendor’,’phprtflite’,array(‘file’=>’phprtf’.DS.’PHPRtfLite.php ‘));

$rtf = new PHPRtfLite();
$sect = $rtf->addSection();
$sect->writeText('<i>Hola <b>Mundo</b></i>.', new PHPRtfLite_Font(12), new PHPRtfLite_ParFormat('left'));
$rtf->sendRtf('NombreDelFichero');
?>

Listo, cada vez que llames a holamundo obtendras un fichero con el texto que has pasado formateado en HTML con writeText, a partir de aqui hasta donde quieras llegar.

Catogories: cakephp, PHP, Software Libre

2 Responses

  1. Gustavo dice:

    No logro generar el rtf, al utilizar $rtf->sendRtf(‘NombreDelFichero’); el archivo en word muestra los simbolos del formato.

    Si funciona cuando utilizo el «save». Lo raro es que utilizando PHPRtfLite fuera de cake funciona perfectamente. Estoy utilizando cake 1.3 y word 2007

  2. Julio dice:

    Elimina cualquier «echo» que tengas es el archivo

Leave a Reply