Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Empezando a trabajar con FPDF y.. problema

Estas en el tema de Empezando a trabajar con FPDF y.. problema en el foro de PHP en Foros del Web. Hola a todos. He estado buscando una forma cómoda de generar un irnofme en pdf y me he encontrado con FPDF. Despues de leerme los ...
  #1 (permalink)  
Antiguo 23/01/2017, 03:05
 
Fecha de Ingreso: agosto-2013
Ubicación: Granada, Andalucía, España
Mensajes: 42
Antigüedad: 10 años, 8 meses
Puntos: 0
Empezando a trabajar con FPDF y.. problema

Hola a todos.
He estado buscando una forma cómoda de generar un irnofme en pdf y me he encontrado con FPDF.
Despues de leerme los manuales y articulos varios he decidido usarlo en mi página para generar un informe. El primer paso ha sido generar el ejemplo básico para comprobar que funciona, y funcionar parece que funciona pero.... no consigo que el navegador trate la información como fichero y la guarde como documento.
Os cuento lo que hago:
La información que quiero imprimir la tengo en el servidor por lo que, para no tener que recargar la página, he colocado un boton de impresión que activa la petición mediante XMLHttpRequest
Código HTML:
Ver original
  1. <button type='button' onclick='ImprimirOperacion();'>Imprimir </button>
Código Javascript:
Ver original
  1. function ImprimirOperacion()
  2.     {document.body.style.cursor ="wait";
  3.      dos_conexion=new XMLHttpRequest();  
  4.      dos_conexion.onreadystatechange = BDResponde;
  5.      dos_conexion.open('POST','x5_Imprimir.php', true);
  6.      dos_conexion.send();}
  7.  
  8. function BDResponde()
  9.     {if (dos_conexion.readyState == 4)
  10.         {var retorno = dos_conexion.responseText;
  11.          var ok=retorno.split(",");
  12.          document.body.style.cursor ="default";}
  13.     }

La llamada al servidor genera un documento Pdf de una linea, sólo a efectos de prueba:
x5_Imprimir.php
Código PHP:
Ver original
  1. <?php
  2. require('/fpdf/fpdf.php');
  3. //
  4. $pdf=new FPDF();        //Por defecto:  Portrait, mm, A4
  5. $pdf->AddPage();
  6. $pdf->SetFont('Arial','B',16);
  7. $pdf->Cell(40,10,'Mi primera pagina FPDF');
  8. $pdf->Output('I', 'Prueba.pdf', true);  //destino, nombre, utf8
  9. ?>

La función Output() con los destinos I y D devuelve en .responseText lo que parece el formato pdf de un documento; con las opciones F y S no devuelve nada (lo compruebo en la variable retorno de BDResponde() ).

Supongo que hacerlo mediante XMLHttpRequest() está provocando que el navegador no inteprete la respuesta como un fichero a descargar, pero no quisiera recargar la página entera para generar el informe.

¿Se os ocurre cuál puede ser el problema? ¿O cómo hacerlo sin recargar la página?

Gracias de antemano.
  #2 (permalink)  
Antiguo 23/01/2017, 04:11
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Empezando a trabajar con FPDF y.. problema

Ajax no trabaja con subidas de archivos tema seguridad quizas sea eso.
saludos.

Última edición por primary; 23/01/2017 a las 04:18
  #3 (permalink)  
Antiguo 23/01/2017, 07:19
 
Fecha de Ingreso: agosto-2013
Ubicación: Granada, Andalucía, España
Mensajes: 42
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Empezando a trabajar con FPDF y.. problema

Gracias por responder.
No uso Ajax, y ciertamente la gestión de ficheros tiene connotacione sde seguridad importantes, pero no es el caso; se trata de que se genere un informe pdf en el servidor y se descargue.
He visto funcionar ejemplos con esta librería así que no es un tema de seguridad, algo estoy haciendo mal....
  #4 (permalink)  
Antiguo 23/01/2017, 08:03
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Empezando a trabajar con FPDF y.. problema

Hola prueba a cambiar esta linea:
Código PHP:
Ver original
  1. $pdf->Output('F', 'Prueba.pdf');

avisa si da error?
el codigo esta bien solo faltaba cambiar para descarga sin mostrar en pantalla.

pero llamas a generar el pdf desde ajax y eso no se puede subir al servidor.
tambien añadir que tiene que tener permiso en tu directorio raiz en este caso.

pero insisto desde ajax no puedes manegar archivos con el servidor en este caso podrias hacerlo con un iframe oculto si lo que quieres es no recargar la paguina.

saludos

Última edición por primary; 23/01/2017 a las 08:34
  #5 (permalink)  
Antiguo 23/01/2017, 13:18
 
Fecha de Ingreso: agosto-2013
Ubicación: Granada, Andalucía, España
Mensajes: 42
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Empezando a trabajar con FPDF y.. problema

He cambiado el destino a F y en este caso no se recibe nada.
Ya comentaba antes que con los destinos F y S no recibo nada mientras que con I o F recibo una cadena de mas de 1600 caracteres que parece código pdf.

He estado buscando y hay comentarios de que fpdf no puede usarse con XMLHttpRequest porque la respuesta es HTML con datos pdf sin formato y javascript no puede interpretarlo, aunque la información esté disponible en el atributo responseText.
(si es que lo he traducido bien del inglés....)

Con respecto a ajax, insisto en que no lo utilizo , hasta que he asociado que XMLHttpRequest es una utilidad ajax. Mis disculpas.

Tendré que buscar otra forma de generar y descargar el pdf con el informe .
Gracias por tu interés, primary. Un saludo.
  #6 (permalink)  
Antiguo 23/01/2017, 14:48
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Empezando a trabajar con FPDF y.. problema

Hola Gelito,

Si abres el archivo que te genera el pdf en nueva ventana, al forzar la descarga, directamente te lo descargará, no te recargará la página.

Espero que te sirva...
  #7 (permalink)  
Antiguo 24/01/2017, 15:46
 
Fecha de Ingreso: agosto-2013
Ubicación: Granada, Andalucía, España
Mensajes: 42
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Empezando a trabajar con FPDF y.. problema

Gracias a los dos por vuestra ayuda.
Ya está solucionado, abriendo en nueva ventana.

Lo de usar XMLHttpRequest fue una elección poco documentada y menos afortunada, de hecho, en la página de FPDF se avisa con claridad: No uses a AJAX request para obtener el PDF. .

El único inconveniente es que no todos los navegadores actuan igual.
Mozilla directamente lo descarga y cierra la ventana, Explorer, Chrome y Opera lo muestran en la ventana abierta; en fin, qué se le va a hacer, en la variedad está el gusto.

Gracias de nuevo.
  #8 (permalink)  
Antiguo 24/01/2017, 16:41
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Empezando a trabajar con FPDF y.. problema

Hola Gelito,

De memoria no recuerdo cómo, pero sé que FPdf tenía una opción que obliga a la descarga en vez de mostrarlo en la página, sea nueva ventana o no.

Si revisas seguro que lo encuentras, y me alegro de haberte sido de utilidad.

Etiquetas: fpdf, informe
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 22:45.