1. Como generar un archivo DOC desde PHP
Segunda parte
NOTA: En la entrega anterior se explicaba como generar un archivo RTF desde PHP
directamente manipulando el código fuente.
En esta versión, se amplió el código y se incluyó la generación de una tabla.
Cabe señalar que el código está bastante explicado y es facil pasarlo a otros lenguajes como
es ASP o JAVA.
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.
Para generar una tabla
Para generar una tabla en RTF, se siguen los siguientes pasos:
1. Se indica el margen izquierdo y la posición de la tabla.
2. Se define la cantidad de Columnas y las características de cada celda (líneas y
anchura)
3. Se coloca el encabezado como un renglón con un fuente mas grande y negritas
4. Se introducen en un ciclo el resto de las celdas
Cabe mencionar que el ancho de cada celda se determina indicando la posición del bordo
derecho de la misma. y este se cuenta desde la posición 0 (cero) de la tabla. Por ejemplo si
quiero tener 3 celdas del mismo tamaño y cada una de 1000 twips definiría los tamaños
como 1000, 2000 y 3000.y con esto tendré 3 celdas iguales de 1000 cada una.
<?PHP
/* Comenzamos a armar el documento */
$output="{rtf1"; //<-- Iniciamos un documento RTF
$output.= "{fs48 Libros publicados}"; //<-
2. - Texto de tamaño 48 para el Título
$output.= "par "; //<-- ENTER
$output.= "{fs30 Material didáctico}"; //<-
- Texto de tamaño 30 para el Subtítulo
$output.= "par "; //<-- ENTER
$output.= "par "; //<-- ENTER
/* INICIO DE LA TABLA */
$output.= "{ "; //<-- Inicio de la tabla
$output.= "trgaph70"; //<-
- márgenes izquierdo y derecho de las celdas=70
$output.= "trleft-10"; // <-
- Posición izquierda la primera celda = -10
/* Definición de las celdas de datos. Se definen 4 columna
s */
$output.= "
clbrdrlbrdrw10brdrs
clbrdrtbrdrw10brdrs
clbrdrrbrdrw10brdrs
clbrdrbbrdrw10brdrs
cellx500
clbrdrlbrdrw10brdrs
clbrdrtbrdrw10brdrs
clbrdrrbrdrw10brdrs
clbrdrbbrdrw10brdrs
cellx2500
clbrdrlbrdrw10brdrs
clbrdrtbrdrw10brdrs
clbrdrrbrdrw10brdrs
clbrdrbbrdrw10brdrs
cellx5000
clbrdrlbrdrw10brdrs
clbrdrtbrdrw10brdrs
clbrdrrbrdrw10brdrs
clbrdrbbrdrw10brdrs
cellx8700
";
3. /*Introducción de los títulos en el primer renglón*/
$output.= "{fs24b "; //<-
- Fuente de tamaño 24 y en negrita
$output.= "
No cell
Título cell
Autor cell
Descripción cell
}";
$output.= " row "; //<-- Fin del renglón de encabezado
/* Introducción de los datos */
$datos= array();
$datos[]= array("1", "PHP para tontos" ,
"Brizuela, Guillermina" ,
"Este es un libro ficticio utilizad
o como Demo");
$datos[]= array("2", "La inversión prudente" ,
"Luis Carlos Jemio" ,
"Impacto del bonosol sobre la familia
, la equidad social.");
$datos[]= array("3", "Diseño de proyectos de tecnología ed
ucativa" ,
"Victor de la Rocha" ,
"Con una propuesta totalmente visual,
el video se convierte en ...");
foreach($datos as $v)
{
$output.= " {$v[0]}cell {$v[1]}cell {$v[2]}cell {$v[
3]}cell n";
$output.= "row "; //<-- Fin del renglón
}
$output.= "} "; //<-- fin de la tabla
$output.= "par "; //<-- ENTER
$output.="}"; //<-- Terminador del RTF
/* En los encabezados indicamos que se trata de un document
o de MS-WORD
y en el nombre de archivo le ponemos la extensión RTF.
4. */
header('Content-type: application/msword');
header('Content-
Disposition: inline; filename=ejemplo1.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 ejemplo2.rtf y si
elegimos abrir con Microsoft Word nos invocará al mismo y nos aparecerá como se ve en
la siguiente imagen