Foros del Web » Programando para Internet » PHP »

PDF se ve en cualkier Browser menos IE

Estas en el tema de PDF se ve en cualkier Browser menos IE en el foro de PHP en Foros del Web. Tengo un script que se conecta a una base de datos, recoge ciertos datos y los imprime en un pdf. en realidad hay 3 scripts ...
  #1 (permalink)  
Antiguo 29/07/2005, 15:08
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
PDF se ve en cualkier Browser menos IE

Tengo un script que se conecta a una base de datos, recoge ciertos datos y los imprime en un pdf.

en realidad hay 3 scripts que hacen lo mismo, pero 1 de ellos presenta la falla más extraña q me a tocado, Internet Explorer no abre el plugin del adobe para mostrar el pdf, y digo esto porque comprobe con mozilla y konqueror que el pdf si es enviado correctamente al navegador.

pensando q podia ser un problema particular con un equipo, comprobe que en varios equipos ocurre lo mismo. Eso no es todo, cuando quise aislar el error en el codigo PHP, descubri usando 5 lineas:
- cargar la clase
- instanciar la clase
- configurar la pagina
- escribir una linea en el pdf
- salida al navegador

que el pdf en ciertas circunstancias si aparece, luego copie esas mismas 5 lineas abajo de un IF q si se cumple, y es aqui cuando ya deja de aparecer el PDF.

Código PHP:
<?php
session_start
();
// PERMISO
if (!isset($_SESSION['nivel']) OR ($_SESSION['nivel'] != 0) AND ($_SESSION['nivel'] != 1) AND ($_SESSION['nivel'] != 3))    die('Sin permiso para acceder a este módulo');
// FIN PERMISO
require('./config.php');
require(
'./fecha.php');

$limite 300;

if(isset(
$_POST['FECHA']) AND isset($_POST['RANGO'])){

include(
'./pdfclass/class.ezpdf.php');
    
$pdf =& new Cezpdf();
    
$pdf->selectFont('./pdfclass/fonts/Helvetica.afm');
    
$pdf->ezSetCmMargins(2.5,2.5,3,3);
    
    
$titulo '<b>Listado</b>';
    
$pdf->addText(220,800,14,$titulo);
    
$pdf->ezText('ALGO');
    
$pdf->selectFont('./pdfclass/fonts/Courier.afm');
    
$pdf->ezStream();
}
?>
me gustarian algunas sugerencias, incluso intente reescribiendo el codigo denuevo, pero volvio a ocurrir y justo en el IF

estoy usando la clase R&OS para generar el PDF.
Apache/2.0.52
PHP 4.3.11
Fedora Core 3
  #2 (permalink)  
Antiguo 29/07/2005, 15:20
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Es raro....te propongo que pongas el link asi lo probamos (si es que abre), por que me suena bien al plugin del browser....

La clase r&os supuestamente deberia funcionar bien...por que otra es que no este generando bien el pdf o sus cabeceras, y el plugin del IE se ponga en exquisito.

Te muestra algun error?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 29/07/2005, 15:38
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Esta comprobado que el PDF es generado correctamente, y si fuera problema del plugin no pasaria con ninguna version, y me pasa con el 5, 6 y el 7.

lo unico q entiendo es q el IE no quiere llamar el plugin para mostrarlo, pk no manda ningun error ni el IE ni el plugin, es más ni si quiera se siente que el adobe se este iniciando (pk no muestra la panatalla de inicio).

ES lo más extraño q me ha pasado, si muevo esas 5 lineas arriba del if el pdf sale de inmedianto, bajo el if no pasa na, (y esas 2 variables post si se envian, lo comprobe con un echo y comentando las lineas del pdf)
  #4 (permalink)  
Antiguo 29/07/2005, 15:44
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
if(isset($_POST['FECHA']) AND isset($_POST['RANGO'])){
Esto pide que ambos POST esten, no se si es asi.
Sino usa && en vez del and, pero de todas maneras, yo probaria que este entrando bien....como?, hacinedo un simple:
Código PHP:
session_start(); 
// PERMISO 
if (!isset($_SESSION['nivel']) OR ($_SESSION['nivel'] != 0) AND ($_SESSION['nivel'] != 1) AND ($_SESSION['nivel'] != 3))    die('Sin permiso para acceder a este módulo'); 
// FIN PERMISO 
require('./config.php'); 
require(
'./fecha.php'); 

$limite 300

if(isset(
$_POST['FECHA']) AND isset($_POST['RANGO'])){ 
echo 
"Si entra";

Despues de casnarte de darle al F5 y ver que funciona, hiria agregando cosas, como el
include('./pdfclass/class.ezpdf.php');
y probando lo mismo con un echo y viendo donde se esta rompiendo.


PD: Por que, vale aclarar, que lo que decis no es normal:(
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 29/07/2005, 15:56
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Si en el equipo de mi casa
Windows XP SP2
PHP 4.3.10
IIS 5 o Apache2

no falla, pero en el servidor con Fedora ta tonteando.
y es lo más anormal que me ha pasado, eso del echo ya lo hice, y todas las lineas se cumplen, de hecho si le manda el pdf al IE pk a veces cuando hago algun cambio se ve en la pantalla el texto que va dentro del PDF (osea el codigo del binario).

Incluso estoy probando en vivo con un notebook con windows al lado del servidor y a cada cambio que hago el mozilla funciona de lujo, el IE se tranca
  #6 (permalink)  
Antiguo 29/07/2005, 15:58
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
ES MUY RARO!!!!

Intenta agregandole, despues del session_start, estos headers:

Código PHP:
<?php
header
("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
?>
Sinceramente no se que decirte...si algo anda mal es lo que envia a las cabeceras, ya que lo demas esta dependiendo del servidor, no deberia alterar en el browser.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 29/07/2005, 16:19
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
agregue las cabeceras,
pero = es contradictorio porque por un lado el codigo no esta malo, pero el error esta dependiendo de el.
  #8 (permalink)  
Antiguo 29/07/2005, 17:29
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Si, por supuesto que no es normal lo que te pasa....seguramente haya algun conflicto en no se donde...

Has intentado creandolo sin hacer ningun if, ni sessiones, con algun simple texto a ver si te hace lo mismo, he, de ahi, ir viendo de agregarle las funcionalidades que necesitas....(se que te estoy plantenado debugins basicos, pero yo que si, trato de ayudarte sin probar nada...y como dije, aparentemente esta todo bien lo que se ve)


PD: Los header esos es para que no te cahee, y si tira error, lo hara siempre, y no de vez en cuando.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 29/07/2005, 17:35
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola,
las variables que le pasas al archivo que crea el PDF tiene que ser mediante el método GET.

Prueba a cambia esto:

if(isset($_POST['FECHA']) AND isset($_POST['RANGO'])){

por

if(isset($_GET['FECHA']) AND isset($_GET['RANGO'])){

...

Debes cambiar el action del formulario que envia esos datos a get.

Prueba y nos cuentas.

Un saludo
  #10 (permalink)  
Antiguo 29/07/2005, 17:38
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Si es eso, quiero una explicacion logica!!! :D (hoy viernes, a esta hora, ya creo cualquier cosa!!!:p)


PD: Los campos se llaman 'FECHA' y no 'Fecha', o 'fecha', no?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
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 17:32.