ElTicus.com

Programación, lenguajes y recursos para programadores

Truco
Como generar un archivo .DOC de WORD desde PHP
Mandar la salida de un reporte directamente al Microsoft Word
Publicado por JL Fecha: 2007-02-23 16:12:32 Idioma: Español Tipo de documento: Truco

Como generar un archivo DOC desde PHP

La idea consiste en generar un archivo de WORD y que este archivo se abra en el Microsoft WORD tal como si se tratara de un archivo .DOC, pero en realidad lo estaremos creando "al vuelo" desde nuestro programa en PHP.

Bueno, en primer lugar, este truco no nos genera un DOC en realidad sino más bien un archivo RTF, el cual es muy similar al DOC y también, de igual modo, el sistema nos lo va a abrir con el Word e incluso si guardamos el archivo en el disco duro, lo veremos con el mismo logito (o muy similar) al que nos muestra un archivo .DOC real.

La razón de utilizar un RTF (Rich Text Format) es que este es un archivo de texto enriquecido que nos admite prácticamente las mismas propiedades que un archivo DOC pero internamente se guarda en formato ASCII, tal como si fuera un archivo de texto.

Para crear un archivo RTF simplemente tenemos que conocer los códigos que nos permitan establecer negritas, títulos, itálicas, tablas, imágenes, etc.

Como generar un archivo RTF

En primer lugar, deberemos poner las siguientes líneas al inicio de nuestro programa PHP

 header('Content-type: application/msword');
 header('Content-Disposition: inline; filename=ejemplo.rtf');

Donde ejemplo.rtf es el nombre del archivo con que se abrirá en Word y también es el nombre con el que se guardará en disco duro si el usuario elige esta opción.

Este código lo he probado con las varias versiones de Word como son la 2000, 2002 y XP con buenos resultados y debería de funcionar con cualquiera. Tambien si una PC no tiene office instalado deberá funcionar con el WordPad de Windows tambien sin problema.

Ejemplo completo:

El siguiente código deberá guardarse dentro de un archivo PHP y ejecutarse desde el navegador.


<?PHP

/* En los encabezados indicamos que se trata de un documento de MS-WORD
  y en el nombre de archivo le ponemos la extensión RTF.            */

header('Content-type: application/msword');
header('Content-Disposition: inline; filename=ejemplo.rtf'); 


/*  Comenzamos a armar el documento  */
$output="{\\rtf1";   //<-- Iniciamos un documento RTF

$output.= "{\\fs48 Internet Explorer 7}"; //<-- Texto de tamaño 48 para el Título
$output.= "\\par ";  //<-- ENTER       

$output.= "{\\fs30 El navegador Número 1}"; //<-- Texto de tamaño 30 para el Subtítulo
$output.= "\\par ";  //<-- ENTER       
$output.= "\\par ";  //<-- ENTER       

/* Parrafo */
$output.= "Windows Internet Explorer (también conocido antes como Internet Explorer, IE o MSIE) 
es un navegador de Internet producido por Microsoft para su plataforma 
Windows y más tarde para Apple Macintosh. "
;
$output.= "\\par ";  //<-- ENTER       

/* Parrafo */
$output.= "El 18 de octubre de 2006, Microsoft lanzó la versión 
número 7 de Internet Explorer. Entre otros detalles el programa fue 
renombrado a Windows Internet Explorer, como muestra de 
la integración de la aplicación con el Sistema Operativo. 
IE7 esta disponible solamente para Windows XP Service Pack 2, 
Windows Server 2003 Service Pack 1 y "
;
$output.= "{\\b Windows Vista}."; //<-- Poner negritas

$output.= "\\par ";  //<-- ENTER
$output.= "\\par ";  //<-- ENTER
$output.= "{\\qr Tomado de wikipedia\\par}"; // <-- Alineado a la derecha

$output.= "{\\i Bill Gates III}"; // <-- Itálica
$output.= "\\par ";  //<-- ENTER
$output.= "{\\ul Fundador de Microsoft}"; // <-- Subrayado

$output.="}"; //<-- Terminador del RTF

/*  Enviamos el documento completo a la salida  */
echo $output; 
?>

Como resultado de este código nos parecerá una ventanita como la siguiente

Y si elegimos "guardar" nos lo guardará como archivo con el nombre ejemplo.rtf y si elegimos abrir con Microsoft Word nos invocará al mismo y nos aparecerá como se ve en la siguiente imagen


En este ejemplo incluyo una demostración de como generar en RTF los siguientes estilos o elementos:

  1. Titulos o más bien distintos tamaños de fuente
  2. Negritas, Italicas y subrayados
  3. Saltos de línea o párrafos
  4. Alineación a la izquierda, derecha o centrado


NOTA: del mismo modo se pueden también utilizar
  1. Viñetas
  2. Tipos de letras
  3. Tablas
  4. Colores
  5. Imágenes

Y prácticamente todos los elementos que soporta un archivo .DOC (En posteriores entregas presentaré más ejemplos con estos elementos)


Segunda parte: Inclusión de tablas en el RTF




Hay 7 comentarios sobre este tema por parte de los lectores


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =

Los últimos 5 comentarios colocados son:

1. Comentario de XRumerTest el 2017-05-15 19:28:52
Hello. And Bye.

2. Comentario de XRumerTest el 2017-05-05 23:03:01
Hello. And Bye.

3. Comentario de XRumerTest el 2017-04-28 02:47:18
Hello. And Bye.

4. Comentario de XRumerTest el 2017-03-17 00:40:47
Hello. And Bye.

5. Comentario de Marisol el 2016-09-16 20:36:27
Yp


VER TODOS LOS MENSAJES (7)...


Artículos relacionados:
Truco Como generar un archivo XLS desde PHP Truco Como generar un archivo .DOC/.RTF de WORD desde PHP (Incluyendo tablas) artículo ¿Que es la integridad referencial?