Buenas, les traigo un script que hice para poder hacer y descargar archivos .rtf , los cuales tienen características similares a .doc ( WORD ) y se pueden abrir con Word, open office y procesadores de texto similares.
Este script lo hice para que una empresa de RRHH descargue los datos de los curriculum ingresados por los postulantes en linea.
La parte de conexión a las BD las omito y simplemente muestro como ingresar los datos que queremos al archivo.
1) Creamos una plantilla .rtf , con lo que queramos poner, ( si lo van hacer en windows, lo mejor es hacerlo con Wordpad que no ingresa caracteres especiales) .
Como podrán ver las variables se declaran tal cual en php, con el símbolo $ antes de cada una. Lo otro queda según sus gustos y necesidades.
Lo guardamos con el nombre que queramos ( en este caso, plantilla.rtf ).
Antes de ir al script, aclaro que los saltos de lineas en .rtf según pude averiguar se realizan con los caracteres "rn" por eso podrán ver que declaré una variable $salto para acelerar el proceso. En este caso como el ejemplo es corto no los utilizo, pero por si alguien lo necesita lo aclaro.
<?php
$plantilla = file_get_contents('plantilla.rtf'); // Lee la plantilla
$salto="rn";
// Datos que irán en la plantilla
$nombre = 'Taringa' ;
$domicilio = ' La calle de taringa al 666 ' ;
$telefono = ' 011 9116666' ;
$celular = ' 011-155 555555' ;
// Esta parte es para sacar un par de caracteres especiales, si trabajan en server linux y su plantilla esta bastante básica tal vez no haga falta, pero a mi me tocó trabajar en un server en Windows.
$plantilla = addslashes($plantilla);
$plantilla = str_replace('r','r',$plantilla);
$plantilla = str_replace('t','t',$plantilla);
$plantilla = str_replace('rn','par',$plantilla);
$plantilla = str_replace('rn','par',$plantilla);
// Procesa la plantilla
eval( '$rtf = <<<EOF_RTF
' . $plantilla . '
EOF_RTF;
' );
// Guarda el RTF generado
file_put_contents("cv/$nombre.rtf",$rtf);
//Nombro el archivo y le agrego la extensión .rtf .
$f = $nombre .".rtf";
//Acá dejo dos soluciones para descargar el archivo que generamos.
//1º si tienen un server linux o simplemente van a probarlo en localhost pueden hacerlo de esta forma que además luego de descargar el // archivo lo borra :
header("Content-disposition: attachment; filename=$f";
header("Content-type: application/octet-stream";
readfile($f);
@unlink($f); / /Borro el temporal creado
header('Location: cv/'.$f.'');
/* Ahora dejo la opción que yo utilice, con la anterior me agregaba caracteres al archivo al parecer el problema lo generaba el header, por lo que lo hice de esta forma, y luego agregue un botón aparte para borrar el archivo generado. */
// Lo dejo comentado por si solo hacen copy and paste.
// header('Location: cv/'.$f.'');// Esta es la opción para hacerlo desde un server windows .
?>
Bueno espero que les sirva, todo lo he sacado parte de acá y otras desde la red, por lo que seguro hay mejores opciones y mas cortas, pero esta me sirvió para sacarme del apuro.
Saludos
Este script lo hice para que una empresa de RRHH descargue los datos de los curriculum ingresados por los postulantes en linea.
La parte de conexión a las BD las omito y simplemente muestro como ingresar los datos que queremos al archivo.
1) Creamos una plantilla .rtf , con lo que queramos poner, ( si lo van hacer en windows, lo mejor es hacerlo con Wordpad que no ingresa caracteres especiales) .
Como podrán ver las variables se declaran tal cual en php, con el símbolo $ antes de cada una. Lo otro queda según sus gustos y necesidades.
Lo guardamos con el nombre que queramos ( en este caso, plantilla.rtf ).
Antes de ir al script, aclaro que los saltos de lineas en .rtf según pude averiguar se realizan con los caracteres "rn" por eso podrán ver que declaré una variable $salto para acelerar el proceso. En este caso como el ejemplo es corto no los utilizo, pero por si alguien lo necesita lo aclaro.
<?php
$plantilla = file_get_contents('plantilla.rtf'); // Lee la plantilla
$salto="rn";
// Datos que irán en la plantilla
$nombre = 'Taringa' ;
$domicilio = ' La calle de taringa al 666 ' ;
$telefono = ' 011 9116666' ;
$celular = ' 011-155 555555' ;
// Esta parte es para sacar un par de caracteres especiales, si trabajan en server linux y su plantilla esta bastante básica tal vez no haga falta, pero a mi me tocó trabajar en un server en Windows.
$plantilla = addslashes($plantilla);
$plantilla = str_replace('r','r',$plantilla);
$plantilla = str_replace('t','t',$plantilla);
$plantilla = str_replace('rn','par',$plantilla);
$plantilla = str_replace('rn','par',$plantilla);
// Procesa la plantilla
eval( '$rtf = <<<EOF_RTF
' . $plantilla . '
EOF_RTF;
' );
// Guarda el RTF generado
file_put_contents("cv/$nombre.rtf",$rtf);
//Nombro el archivo y le agrego la extensión .rtf .
$f = $nombre .".rtf";
//Acá dejo dos soluciones para descargar el archivo que generamos.
//1º si tienen un server linux o simplemente van a probarlo en localhost pueden hacerlo de esta forma que además luego de descargar el // archivo lo borra :
header("Content-disposition: attachment; filename=$f";
header("Content-type: application/octet-stream";
readfile($f);
@unlink($f); / /Borro el temporal creado
header('Location: cv/'.$f.'');
/* Ahora dejo la opción que yo utilice, con la anterior me agregaba caracteres al archivo al parecer el problema lo generaba el header, por lo que lo hice de esta forma, y luego agregue un botón aparte para borrar el archivo generado. */
// Lo dejo comentado por si solo hacen copy and paste.
// header('Location: cv/'.$f.'');// Esta es la opción para hacerlo desde un server windows .
?>
Bueno espero que les sirva, todo lo he sacado parte de acá y otras desde la red, por lo que seguro hay mejores opciones y mas cortas, pero esta me sirvió para sacarme del apuro.
Saludos

