Modificando la cabecera de la vista_pdf de un cuadro en SIU Toba

Con frecuencia, cuando trabajamos con cuadros para realizar reportes o consultas a través de filtros, surge la necesidad de exportar esos datos a pdf o a una hoja de cálculo. Estas opciones se pueden habilitar en la pestaña de configuración básica del cuadro (ver Figura 1).

pdf_cuadro

Figura 1. Pestaña de configuración básica de un componente ei_cuadro

Luego de habilitar las opciones para exportar tanto a pdf como a una planilla de cálculo, aparecen don botones que esta funcionalidad sobre el cuadro con datos, en nuestra aplicación toba (ver Figura 2).

Opciones

Figura 2. Opciones de exportar a pdf y a planilla de cálculo en el cuadro.

Ahora bien, si pulsamos el botón para exportar a pdf, lo que obtendremos será un documento pdf con los datos actuales de la tabla pero sin cabecera, ni pie de página. En esto casos, es deseable por cliente, identificar el documento mediante un título, quizás un subtítulo, agregar una cabecera con el logo de la organización y un pie de página con otra información, tal como el número de página.
Para personalizar nuestro documento pdf resultante es necesario conocer información adicional sobre la clase toba_ei_cuadro de la cual se derivan los componentes ei_cuadro.
Uno de los métodos de que dispone esta clase, es el método:
vista_pdf() que se encarga de pasar los datos del ei_cuadro a un objeto $salida que instancia a la clase toba_vista_pdf. Este objeto es quién genera el pdf a partir de la librería ezPDF.
La solución consistirá en extender la clase toba_ei_cuadro y sobreescribir el método vista_pdf (ver Figura 3)

- See more at: http://pas.sistemas.unpa.edu.ar/blog_grupo/modificando-la-cabecera-de-la...

Figura 2. Opciones de exportar a pdf y a planilla de cálculo en el cuadro.

Ahora bien, si pulsamos el botón para exportar a pdf, lo que obtendremos será un documento pdf con los datos actuales de la tabla pero sin cabecera, ni pie de página. En esto casos, es deseable por cliente, identificar el documento mediante un título, quizás un subtítulo, agregar una cabecera con el logo de la organización y un pie de página con otra información, tal como el número de página.
Para personalizar nuestro documento pdf resultante es necesario conocer información adicional sobre la clase toba_ei_cuadro de la cual se derivan los componentes ei_cuadro.
Uno de los métodos de que dispone esta clase, es el método:
vista_pdf() que se encarga de pasar los datos del ei_cuadro a un objeto $salida que instancia a la clase toba_vista_pdf. Este objeto es quién genera el pdf a partir de la librería ezPDF.
La solución consistirá en extender la clase toba_ei_cuadro y sobreescribir el método vista_pdf (ver Figura 3)

Diagrama de clases

Figura 3. Diagrama de clases de la solución.

Un ejemplo de implementación de la subclase, y el método vista_pdf, se detalla a continuación.

  1.  
  2. class micontrolador_ei_cuadro extends toba_ei_cuadro {
  3. function vista_pdf(toba_vista_pdf $salida ){
  4. //configuramos el nombre que tendrá el archivo pdf
  5. $salida->set_nombre_archivo("postulantesConvocatoriaXXXX.pdf");
  6. //recuperamos el objteo ezPDF para agregar la cabecera y el pie de página
  7. $pdf = $salida->get_pdf();
  8. //modificamos los márgenes de la hoja top, bottom, left, right
  9. $pdf->ezSetMargins(80, 50, 30, 30);
  10. //Configuramos el pie de página. El mismo, tendra el número de página centrado en la página y la fecha ubicada a la derecha.
  11. //Primero definimos la plantilla para el número de página.
  12. $formato = 'Página {PAGENUM} de {TOTALPAGENUM}';
  13. //Determinamos la ubicación del número página en el pié de pagina definiendo las coordenadas x y, tamaño de letra, posición, texto, pagina inicio
  14. $pdf->ezStartPageNumbers(300, 20, 8, 'left', utf8_d_seguro($formato), 1);
  15. //Luego definimos la ubicación de la fecha en el pie de página.
  16. $pdf->addText(480,20,8,date('d/m/Y h:i:s a'));
  17. //Configuración de Título.
  18. $salida->titulo(utf8_d_seguro("Convocatoria XXXX - "));
  19. //Configuración de Subtítulo.
  20. $salida->subtitulo(utf8_d_seguro("Listado de Postulantes"));
  21. //Invoco la salida pdf original del cuadro
  22. parent::vista_pdf($salida);
  23. //Encabezado: Logo Organización - Nombre
  24. //Recorremos cada una de las hojas del documento para agregar el encabezado
  25. foreach ($pdf->ezPages as $pageNum=>$id){
  26. $pdf->reopenObject($id);
  27. //definimos el path a la imagen de logo de la organizacion
  28. $imagen = toba::proyecto()->get_path().'/www/img/logo.jpg';
  29. //agregamos al documento la imagen y definimos su posición a través de las coordenadas (x,y) y el ancho y el alto.
  30. $pdf->addJpegFromFile($imagen, 40, 780, 35, 50);
  31. //Agregamos el nombre de la organización a la cabecera junto al logo
  32. $pdf->addText(80,800,12,'Nombre completo de la organización');
  33. $pdf->closeObject();
  34. }
  35. }
  36. }
Etiquetas: 

Comentarios

Imagen de miriam

Lo que me parece mas bueno es la forma en que se visualiza el codigo dentro del contenido!!

Myriam D