ARTICULOS

Generar documentos de Word

Autor: Albo (http://albo404.blogspot.com/) - 23/04/2007

Del.icio.us Facebook Technorati

La base es simplemente la misma de Generar documentos de Word RTF con php, un articulo de José Luis Del Rincón. La estrategia que usaremos es la misma generar un RTF que es un formato que muchos procesadores de texto (por supuesto el Microsoft Word incluido) leen.

Lo primero que debemos hacer es generar una plantilla de nuestro RTF. Para eso voy a usar AbiWord que es un procesador de texto muy liviano, gratis y abierto (si, y no estoy en Linux). Por supuesto se puede usar el Word aunque es preferible que usen el WordPad si lo tienen.

Ahi escribimos el texto solo que escribiendo los valores variables como si fueran variables PHP adentro del RTF (con el signo $ delante de la palabra)

Codigo PHP

<?php

// Lee la plantilla
$plantilla = file_get_contents('plantilla.rtf');

// Agregamos los escapes necesarios
$plantilla = addslashes($plantilla);
$plantilla = str_replace('\r','\\r',$plantilla);
$plantilla = str_replace('\t','\\t',$plantilla);

// Datos de la plantilla
$nombre = "Juan";
$apellido = "Perez";
$prefijo = "Sr.";
$curso = '"Programacion Web con PHP"';
$fecha = date("d-m-Y", time() - 7 * 24 * 60 * 60); // de esta manera el codigo no envejece :P

// Procesa la plantilla
eval( '$rtf = <<<EOF_RTF
' . $plantilla . '
EOF_RTF;
' );

// Guarda el RTF generado
file_put_contents("$apellido-$nombre-$fecha.rtf",$rtf);

?>

Bueno a primera vista si comparamos los codigos vemos que este es mas corto y simple. Pero analicemos profundamente para conocer la potencia de este codigo. Primero lo que hacemos es leer la plantilla, ahi podemos usar cualquier metodo para leer un archivo que conozcamos. Yo use file_get_contents. Luego debemos procesar un poco al texto del archivo (despues explicaremos porque).

Luego debemos tomar los datos, ahi podemos sacarlos de una base de datos, llenar por formularios, lo que sea. Para simplificar, lo que hacemos es directamente declarar los datos.

Las siguientes lineas son las que importan en el codigo. Lo que usamos es la sintaxis HEREDOC que nos ofrece PHP. El HEREDOC es como usar sintaxis de comillas en PHP, pero sin las comillas. Por esta sintaxis debemos escapar los caracteres \r y \t que son tomados como retorno de carro y tabuladores respectivamente. Esto incluido en una llamada a la funcion eval en la cual podemos procesar codigo dinamicamente. Ahi devolvemos el contenido procesado en la variable $rtf .

Bueno al final guardamos el archivo con la funcion file_put_contents. Lo mismo que al leer, aqui podemos usar cualquier metodo para guardar o enviar al navegador como archivo RTF

Como nota final (y tarea para el hogar) el archivo RTF debe ser procesado una sola vez, es decir que podemos guardarlo con los escapes y luego leerlo,en vez de escaparlo cada vez que lo llamamos (lo que hace al codigo mas efectivo).

 

Más artículos sobre PHP

1. Modificación de cadenas
2. Contador de visitas sin cookies
3. Instalación de PHP-Nuke bajo Windows
4. Funciones en archivos
5. Frases aleatorias con PHP
6. Huevos de Pascua en PHP
7. Buscador simple en PHP
8. Verificar existencia de una URL
9. Creando sitio con forma modular
10. Usuarios activos con PHP sin BD
Más artículos...

Otros artículos...

Marketing Titulares atractivos
Marketing Mirada crítica a las páginas "splash"
ASP Utilizando includes en ASP
Marketing 5 sencillos pasos para ganar clientes
PHP Funciones en archivos
HTML Referencia del código html
Photoshop Efecto de líneas de TV con Photoshop
phpBB Respuesta rápida en phpBB
Servidores Instalación de phpdev en Windows
Marketing Ceguera a los banners
Más artículos...