Página 1 de 1

Plantillas de word desde PHP

Publicado: 04 Oct 2013, 10:07
por asa72
Hola, a ver si alguien me puede ayudar,
tengo que generar un fichero de word a partir de una plantilla con extensión .RTF desde PHP.
Lo que hago es generar una query y por cada registro resultante, que genere un documento word (bueno, ,RFT); dichos documentos se generan bien pero sólo puedo visualizarlos bien si los arrastro manualmente desde el filezilla porque si le meto en el código fuente que se me descarguen automáticamente, luego lo abro y se muestra sólamente algo tal que así:

{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch0\stshfloch31506, etc...

además, sólo me descarga el primer fichero (además de descargarlo mal, como he comentado), cuando en realidad se han generado todos los documentos (1 por cada registro) en el servidor.

Aquí os pongo el código fuente (y gracias, de antemano):

$sql = "SELECT ....";
$res = mysqli_query($link,$sql);
while ($row = mysqli_fetch_array($res)){
$pedido_find = $row["pedido"];
$archivo = file_get_contents('plantilla_etiquetas.rtf');
$archivo = str_replace('tag_pedido',csv_encode_conv($pedido_find),$archivo);
file_put_contents('./etiquetas/et_doc_'.$num_documento_find.'_part_'.$partida_find.'.rtf',$archivo);
descargar('et_doc'.$num_documento_find.'_part_'.$partida_find.'.rtf');
}

function descargar($archivo){
$ruta = './etiquetas/'.$archivo;
if (is_file($ruta))
{
//header ("Content-Type: application/octet-stream");
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename='.$archivo);
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($ruta));

readfile($ruta);
}

//He probado a hacerlo sin usar esta función, pero nada, o usando ficheros .doc o .docx en lugar de .rtf pero nada

function csv_encode_conv($var, $enc='Windows-1252') {
$var = htmlentities($var, ENT_QUOTES, 'utf-8');
$var = html_entity_decode($var, ENT_QUOTES , $enc);
return $var;
}

Re: Plantillas de word desde PHP

Publicado: 29 Oct 2015, 08:47
por konsatsna
cuando en realidad se han generado todos los documentos (1 por cada registro) en el servidor.
royal1688 เข้าไม่ได้