Foros del Web » Programando para Internet » PHP »

Problemas al visualizar un pdf sobreescrito con fpdf en IE

Estas en el tema de Problemas al visualizar un pdf sobreescrito con fpdf en IE en el foro de PHP en Foros del Web. Hola, Una vez más acudo a vosotros en busca de una solución. El caso es que mediante la clase fpdf creo un fichero pdf al ...
  #1 (permalink)  
Antiguo 07/10/2009, 02:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Pregunta Problemas al visualizar un pdf sobreescrito con fpdf en IE

Hola,

Una vez más acudo a vosotros en busca de una solución.

El caso es que mediante la clase fpdf creo un fichero pdf al que posteriormente podré visualizarlo/descargarlo. Hasta aquí bien, lo creo y lo veo perfectamente.

El problema surge cuando quiero sobreescribir el pdf en el servidor porque la información de la cual se crea se modifica y se necesita crearlo de nuevo, para que cuando descargue el pdf sea coherente con esta información. Para resolver este problema, cambié en la función Output() de la clase FPDF la cabecera
Código PHP:
header('Cache-Control: private, max-age=0, must-revalidate'); 
por estas
Código PHP:
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: public'); 
El resultado fue exitoso para FF, descargándome la última versión del pdf, pero no para IE, donde sigo viendo el pdf anterior. Si limpio la caché a mano si que veo la última versión, con lo que internamente todo funciona bien.

¿Existe alguna solución para que funcione también para IE?

Gracias.

Saludos.
  #2 (permalink)  
Antiguo 07/10/2009, 02:56
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Problemas al visualizar un pdf sobreescrito con fpdf en IE

Prueba enviando en el header del fichero un numero aleatorio, osea, si el nombre del fichero es:

Filename: hola.pdf

cambialo por

$rand = rand(0,900000);
Filename: hola$rand.pdf
  #3 (permalink)  
Antiguo 07/10/2009, 03:11
 
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Problemas al visualizar un pdf sobreescrito con fpdf en IE

Cita:
Iniciado por karliky Ver Mensaje
Prueba enviando en el header del fichero un numero aleatorio, osea, si el nombre del fichero es:

Filename: hola.pdf

cambialo por

$rand = rand(0,900000);
Filename: hola$rand.pdf
Sí, gracias, ya lo había pensado, pero esperaba encontrar alguna solución del tipo "pon esta cabecera en el header" o "cambia esto por aquello". Sino, utilizando la opción de cambiar el nombre del fichero, me tocaría añadir más código por otras partes, cosa que tendré que hacer sino encuentro otra solución.

Gracias por tu apunte.

Saludos
  #4 (permalink)  
Antiguo 07/10/2009, 04:11
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Problemas al visualizar un pdf sobreescrito con fpdf en IE

con esto no te funciona?
Código php:
Ver original
  1. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  2. header ("Expires: Thu, 27 Mar 1980 23:59:00 GMT"); //la pagina expira en una fecha pasada
  3. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
  4. header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
  5. header ("Pragma: no-cache");
  #5 (permalink)  
Antiguo 07/10/2009, 04:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Cita:
Iniciado por samu22 Ver Mensaje
con esto no te funciona?
Código php:
Ver original
  1. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  2. header ("Expires: Thu, 27 Mar 1980 23:59:00 GMT"); //la pagina expira en una fecha pasada
  3. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
  4. header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
  5. header ("Pragma: no-cache");
En FF sí , pero en IE sigue sin funcionar .

Gracias.

Cita:
Iniciado por bucky Ver Mensaje
Hola,

Una vez más acudo a vosotros en busca de una solución.

El caso es que mediante la clase fpdf creo un fichero pdf al que posteriormente podré visualizarlo/descargarlo. Hasta aquí bien, lo creo y lo veo perfectamente.

El problema surge cuando quiero sobreescribir el pdf en el servidor porque la información de la cual se crea se modifica y se necesita crearlo de nuevo, para que cuando descargue el pdf sea coherente con esta información. Para resolver este problema, cambié en la función Output() de la clase FPDF la cabecera
Código PHP:
header('Cache-Control: private, max-age=0, must-revalidate'); 
por estas
Código PHP:
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: public'); 
El resultado fue exitoso para FF, descargándome la última versión del pdf, pero no para IE, donde sigo viendo el pdf anterior. Si limpio la caché a mano si que veo la última versión, con lo que internamente todo funciona bien.

¿Existe alguna solución para que funcione también para IE?

Gracias.

Saludos.
SOLUCIÓN:
Ya lo tengo solucionado y creo que el problema era el concepto (como en Airbag)

Los header los utilizaba sólo al crear o al guardar el PDF, pero no al visualizarlo, con lo que creo que los header pierden su sentido.

He creado un archivo php intermedio con algo más o menos así:
Código PHP:
//$filename contiene la url del pdf a mostrar
header('Content-Type: application/pdf');
if(
headers_sent())
    
$this->Error('Some data has already been output, can\'t send PDF file');
else
{
    
header('Content-Disposition: inline; filename="'.$filename.'"');

    
header('Cache-Control: no-store, no-cache, must-revalidate');
    
header('Pragma: public');

    
readfile($filename);

Y es aquí donde tenía que haber poner los header relacionados con la caché desde el principio. Así, cuando se visualiza el pdf, es cuando queda constancia la preferencia de no almacenar el archivo en cache con los header arriba indicados.

Espero que esto le sirva a alguien.

Gracias a samu22 y a karliky por su ayuda.

Saludos

Última edición por GatorV; 07/10/2009 a las 09:28
  #6 (permalink)  
Antiguo 07/10/2009, 05:50
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Problemas al visualizar un pdf sobreescrito con fpdf en IE

no hay por donde, me parecia raro porque yo muestro pdf dinamicos y no me pasaba con ie, pero no sabia que el header lo utilizabas al guardar o al crear el mismo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:08.