Buscar en moleculax
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.

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}"; //<-- 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 columnas */
$output.= "
\\clbrdrl\\brdrw10\\brdrs
\\clbrdrt\\brdrw10\\brdrs
\\clbrdrr\\brdrw10\\brdrs
\\clbrdrb\\brdrw10\\brdrs
\\cellx500
\\clbrdrl\\brdrw10\\brdrs
\\clbrdrt\\brdrw10\\brdrs
\\clbrdrr\\brdrw10\\brdrs
\\clbrdrb\\brdrw10\\brdrs
\\cellx2500
\\clbrdrl\\brdrw10\\brdrs
\\clbrdrt\\brdrw10\\brdrs
\\clbrdrr\\brdrw10\\brdrs
\\clbrdrb\\brdrw10\\brdrs
\\cellx5000
\\clbrdrl\\brdrw10\\brdrs
\\clbrdrt\\brdrw10\\brdrs
\\clbrdrr\\brdrw10\\brdrs
\\clbrdrb\\brdrw10\\brdrs
\\cellx8700
"
;


/*Introducción de los títulos en el primer renglón*/
$output.= "{\\fs24\\b ";  //<-- 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 utilizado 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 educativa" , 
                      "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 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=ejemplo1.rtf'); 
/*  Enviamos el documento completo a la salida  */
echo $output; 
?>

.


Powered by

http://emiliogomez.com.ar