Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2017, 03:05
Gelito
 
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.