Otra forma de generar documentos Word con PHP
Bueno en realidad no es otra forma, 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
// 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).