Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema al cargar FPDF con MVC

Estas en el tema de problema al cargar FPDF con MVC en el foro de PHP en Foros del Web. Hola a todos, acá tengo con una consulta es la sgte: resulta que estoy probando fpdf y cuando quiero crear el pdf desde el controlador ...
  #1 (permalink)  
Antiguo 08/12/2015, 21:18
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
problema al cargar FPDF con MVC

Hola a todos, acá tengo con una consulta es la sgte: resulta que estoy probando fpdf y cuando quiero crear el pdf desde el controlador no hay problemas y funciona, pero cuando quiero crear las variables desde el controlador y pasarlas a la vista no anda, mostrando un mensaje diciendo: "No se pudo cargar el documento PDF", pongo el código:

VehiculosController.php:

Código PHP:
Ver original
  1. require_once './Lib/fpdf/fpdf.php';
  2.  
  3. function __construct() {
  4. parent::__construct();
  5. $this->pdf= new FPDF();
  6. $this->mod_m= new ModeloModel();
  7. $this->mod_tv=new TipovehModel();
  8. $this->mod_v= new VehiculoModel();
  9. }
  10.  
  11. public function reporte(){
  12. if(Session::get("tipo") == "admin"){
  13. Session::set('pdf', $this->getPDF());
  14. Session::set('vehiculos', $this->mod_v->obtenerTodos());
  15. $this->redirect(array('reporte.php'));
  16. /*
  17. $this->getPDF()->AddPage();
  18. $this->getPDF()->SetFont('Arial','B',16);
  19. $this->getPDF()->Cell(40,10,utf8_decode('Reporte de Vehículos'));
  20. $this->getPDF()->Ln(15);
  21. $this->getPDF()->SetFont('Arial','B',12);
  22. $this->getPDF()->Cell(30,5,utf8_decode('Vehículo'),1);
  23. $this->getPDF()->Cell(30,5,utf8_decode('Matrícula'),1);
  24. $this->getPDF()->Cell(30,5,'Cantidad',1);
  25. $this->getPDF()->Cell(30,5,utf8_decode('Descripción'),1);
  26. $this->getPDF()->Cell(40,5,'Modelo',1);
  27. $this->getPDF()->Cell(30,5,'Tipo',1);
  28. $this->getPDF()->Ln(8);
  29. foreach ($this->mod_v->obtenerTodos() as $vehiculo){
  30. $this->getPDF()->Cell(30,5,$vehiculo['id'],1);
  31. $this->getPDF()->Cell(30,5,$vehiculo['mat'],1);
  32. $this->getPDF()->Cell(30,5,$vehiculo['cant'],1);
  33. $this->getPDF()->Cell(30,5,$vehiculo['des'],1);
  34. $this->getPDF()->Cell(40,5,$vehiculo['modelo'],1);
  35. $this->getPDF()->Cell(30,5,utf8_decode($vehiculo['tipov']),1);
  36. $this->getPDF()->Ln(5);
  37. }
  38. $this->getPDF()->Output();*/
  39. }
  40. else {
  41. Session::set("msg","Debe ser administrador para acceder.");
  42. $this->redirect(array('Main','index.php'));
  43. }
  44. }
  45. private function getPDF(){
  46. return $this->pdf;
  47. }

View/Vehiculos/reporte.php:

Código PHP:
Ver original
  1. <?php
  2. Session::get('pdf')->AddPage();
  3. Session::get('pdf')->SetFont('Arial','B',16);
  4. Session::get('pdf')->Cell(40,10,utf8_decode('Reporte de Vehículos'));
  5. Session::get('pdf')->Ln(15);
  6. Session::get('pdf')->SetFont('Arial','B',12);
  7. Session::get('pdf')->Cell(30,5,utf8_decode('Vehículo'),1);
  8. Session::get('pdf')->Cell(30,5,utf8_decode('Matrícula'),1);
  9. Session::get('pdf')->Cell(30,5,'Cantidad',1);
  10. Session::get('pdf')->Cell(30,5,utf8_decode('Descripción'),1);
  11. Session::get('pdf')->Cell(40,5,'Modelo',1);
  12. Session::get('pdf')->Cell(30,5,'Tipo',1);
  13. Session::get('pdf')->Ln(8);
  14. foreach (Session::get('vehiculos') as $vehiculo){
  15. Session::get('pdf')->Cell(30,5,$vehiculo['id'],1);
  16. Session::get('pdf')->Cell(30,5,$vehiculo['mat'],1);
  17. Session::get('pdf')->Cell(30,5,$vehiculo['cant'],1);
  18. Session::get('pdf')->Cell(30,5,$vehiculo['des'],1);
  19. Session::get('pdf')->Cell(40,5,$vehiculo['modelo'],1);
  20. Session::get('pdf')->Cell(30,5,utf8_decode($vehiculo['tipov']),1);
  21. Session::get('pdf')->Ln(5);
  22. }
  23. Session::get('pdf')->Output();

No entiendo porque no carga el pdf que creo, espero sus respuestas.

Saludos.
  #2 (permalink)  
Antiguo 09/12/2015, 09:28
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema al cargar FPDF con MVC

Saludos.
¿Y sí en la vista se intenta poner un header indicando que es un pdf?
Podría ser eso.

No se cual framework se esté usando, pero normalmente en la documentación
de las mismas comentan sobre como servir vistas que no sean
html, sino que tengan otros formatos, como pdf en este caso.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 09/12/2015, 18:07
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: problema al cargar FPDF con MVC

Hola mortiprogramador, gracias por responder. Verás en este caso, no estoy usando un framework sino que estoy haciendo MVC a mano, voy a intentar lo que me dijiste a ver q pasa.
  #4 (permalink)  
Antiguo 09/12/2015, 18:44
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: problema al cargar FPDF con MVC

Mira intenté lo que me dijiste pero no funcionó, pongo el código porque de repente me equivoqué en algo:

<?php
header("Content-type: application/pdf");
Session::get('pdf')->AddPage();
Session::get('pdf')->SetFont('Arial','B',16);
Session::get('pdf')->Cell(40,10,utf8_decode('Reporte de Vehículos'));
Session::get('pdf')->Ln(15);
Session::get('pdf')->SetFont('Arial','B',12);
Session::get('pdf')->Cell(30,5,utf8_decode('Vehículo'),1);
Session::get('pdf')->Cell(30,5,utf8_decode('Matrícula'),1);
Session::get('pdf')->Cell(30,5,'Cantidad',1);
Session::get('pdf')->Cell(30,5,utf8_decode('Descripción'),1);
Session::get('pdf')->Cell(40,5,'Modelo',1);
Session::get('pdf')->Cell(30,5,'Tipo',1);
Session::get('pdf')->Ln(8);
foreach (Session::get('vehiculos') as $vehiculo){
Session::get('pdf')->Cell(30,5,$vehiculo['id'],1);
Session::get('pdf')->Cell(30,5,$vehiculo['mat'],1);
Session::get('pdf')->Cell(30,5,$vehiculo['cant'],1);
Session::get('pdf')->Cell(30,5,$vehiculo['des'],1);
Session::get('pdf')->Cell(40,5,$vehiculo['modelo'],1);
Session::get('pdf')->Cell(30,5,utf8_decode($vehiculo['tipov']),1);
Session::get('pdf')->Ln(5);
}
Session::get('pdf')->Output();

Pero me sigue saliendo el mismo mensaje, que será?? mortiprogramador???

Espero respuestas y saludos.
  #5 (permalink)  
Antiguo 10/12/2015, 05:30
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema al cargar FPDF con MVC

Saludo.
Uhm, intenta dejar el header antes de la línea de Output.

Sí con eso no funciona, intenta generar un pdf solo
con los encabezados, sin la info de la db, prueba esas dos a ver.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 10/12/2015, 18:56
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: problema al cargar FPDF con MVC

mortiprogramador probé lo que me dijiste y tampoco funcionó...... comienzo a empezar que el problema está en la variable de sesion de pdf......

No lo sé. q piensas?? Espero respuestas y saludos.
  #7 (permalink)  
Antiguo 11/12/2015, 18:11
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: problema al cargar FPDF con MVC

Hola a todos, acabo de recordar la frase de: "si no puedes con tu enemigo, unitele" bueno si funciona en un controlador entonces creo un controlador sólo para pdf:

Código PHP:
Ver original
  1. <?php
  2. require_once './App/Controller.php';
  3. require_once './Model/VehiculoModel.php';
  4. require_once './Lib/fpdf/fpdf.php';
  5. class PdfController extends Controller
  6. {
  7.     private $pdf;
  8.     private $mod_v;
  9.     function __construct() {
  10.         parent::__construct();
  11.         $this->pdf = new FPDF();
  12.         $this->mod_v = new VehiculoModel();
  13.     }
  14.     private function getPDF(){
  15.         return $this->pdf;
  16.     }
  17.     public function rep_vehiculos(){
  18.         if(Session::get("tipo") == "admin"){
  19.             Session::set('pdf', $this->getPDF());
  20.             $this->getPDF()->AddPage();
  21.             $this->getPDF()->SetFont('Arial','B',16);
  22.             $this->getPDF()->Cell(40,10,utf8_decode('Reporte de Vehículos'));
  23.             $this->getPDF()->Ln(15);
  24.             $this->getPDF()->SetFont('Arial','B',12);
  25.             $this->getPDF()->Cell(30,5,utf8_decode('Vehículo'),1);
  26.             $this->getPDF()->Cell(30,5,utf8_decode('Matrícula'),1);
  27.             $this->getPDF()->Cell(30,5,'Cantidad',1);
  28.             $this->getPDF()->Cell(30,5,utf8_decode('Descripción'),1);
  29.             $this->getPDF()->Cell(40,5,'Modelo',1);
  30.             $this->getPDF()->Cell(30,5,'Tipo',1);
  31.             $this->getPDF()->Ln(8);
  32.             foreach ($this->mod_v->obtenerTodos() as $vehiculo){
  33.                 $this->getPDF()->Cell(30,5,$vehiculo['id'],1);
  34.                 $this->getPDF()->Cell(30,5,$vehiculo['mat'],1);
  35.                 $this->getPDF()->Cell(30,5,$vehiculo['cant'],1);
  36.                 $this->getPDF()->Cell(30,5,$vehiculo['des'],1);
  37.                 $this->getPDF()->Cell(40,5,$vehiculo['modelo'],1);
  38.                 $this->getPDF()->Cell(30,5,utf8_decode($vehiculo['tipov']),1);
  39.                 $this->getPDF()->Ln(5);
  40.             }
  41.             $this->getPDF()->Output();
  42.         }
  43.         else {
  44.             Session::set("msg","Debe ser administrador para acceder.");
  45.             $this->redirect(array('Main','index.php'));
  46.         }
  47.     }
  48. }

No era lo que quería que le vamos a hacer "es lo que hay", gracias a todos. Saludos

Etiquetas: fpdf, mvc, variable
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:51.