Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/10/2012, 17:36
mumraa
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Duda Variables de Sesion y Pdf

Buenas de nuevo!

He realizado el script que necesitaba y lo dejo aqui por si alguien puede encontrarse en busca de algo similar.

Lo que hago es crear un pdf a partir de datos obtenidos de la base de datos, utilizando la libreria FPDF.


Le doy al pdf el nombre de "Favoritos-".$fecha_actual.".pdf" (Ej. "Favoritos-02-10-2012.pdf").
Luego con la siguiente funcion chequeo que no exista un archivo con ese nombre. Si existe, le agrego el sufijo "_".$i" (Ej. "Favoritos-02-10-2012_2.pdf"):
Código:
// FUNCION PARA CHECKEAR SI EL NOMBRE DEL PDF EXISTE
$fecha = date("d-m-Y");
$filename_pdf = "Favoritos-".$fecha.".pdf";

$i = 1;
while (file_exists("pdf/".$filename_pdf)):
    $filename_pdf = "Favoritos-".$fecha."_".$i.".pdf";
    $i++;
endwhile;
Exporto el pdf con FPDF y le digo si quiero que se vea en el navegador, o bien descargado:
Código:
// EXPORTAMOS EL DOCUMENTO
$pdf->Output("pdf/".$filename_pdf, 'F');
// PARA PREGUNTAR EN QUE CARPETA DESCARGAR
header('Content-disposition: attachment; filename=pdf/'.$filename_pdf);
// PARA CARGAR DIRECTAMENTE EN EL NAVEGADOR
//header('Content-type: application/pdf');
// LEEMOS EL DOCUMENTO PDF
readfile('pdf/'.$filename_pdf);
Para finalizar, con el objetivo de que no se acumule una infinidad de pdf creados por usuarios dentro del servidor, utilizo una funcion para borrar aquellos más antiguos a 5 minutos (Si 5 minutos...... bien limpia la carpeta).
Código:
// ARCHIVOS ANTIGUOS A 5 MINUTOS SERAN BORRADOS
// NOMBRE DE LA CARPETA EN CUESTION
$DIR = 'pdf/';
if ($handle = opendir($DIR)) {

    // RECORREMOS UNA Y OTRA VEZ EL DIRECTORIO
    while (false !== ($file = readdir($handle))) {
        if ( filemtime($DIR.$file) <= time()-60*5 ) { // AQUI ESTABLECEMOS EL TIEMPO: 60*5 (DURACION DE UN MINUTO EN SEGS * CANTIDAD DE MINUTOS
           unlink($DIR.$file);
        }
    }
    closedir($handle);
}
Espero sirva! saludos y gracias MayLess por tu ayuda!