X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/53dea79e14a592c07d0211cb7a7d93949c231fe1..1209440ef94cb8b357936a78c56b9872d4fb5ae5:/lib/MECON/PDF/Tabla.php diff --git a/lib/MECON/PDF/Tabla.php b/lib/MECON/PDF/Tabla.php index cd1d7d4..9a82158 100644 --- a/lib/MECON/PDF/Tabla.php +++ b/lib/MECON/PDF/Tabla.php @@ -39,10 +39,115 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { * @access public */ function display() { - $this->_pdf->newPage($this->_tamanio); - $this->buildPage(); + if ($this->getRowCount()) { + $this->_agregarContenido(); + } + else { + $this->_pdf->newPage($this->_tamanio); + $this->_pdf->addText($this->_config['Xi'], + $this->_config['contenido']['Y'], + 'No hay contenido para mostrar.', + $this->_config['contenido']); + $this->buildPage(); + } $this->_pdf->display(); } - + + /** + * Funcion que devuelve el estilo de la celda segun la configuracion. + * + * @param int $row Indicador de la fila + * @param int $col Indicador de la columna + * + * @return array + * @access protected + */ + function _obtenerEstiloCelda($row, $col) { + $clase = $this->getCellAttributes($row, $col); + switch ($clase['class']) { + case 'mecon_html_tabla_comun_cabecera': + $estilo = $this->_config['celda_cabecera']; + break; + case 'mecon_html_tabla_comun_titulo': + $estilo = $this->_config['celda_titulo']; + break; + default : + $estilo = $this->_config['celda_comun']; + break; + } + return $estilo; + } + + /** + * Funcion que agrega las filas y columnas a la pagina. + * + * @return void + * @access protected + */ + function _agregarContenido() { + //Calculo el ancho de la columnas basandome en el ancho que tienen las + //mismas en la primer fila {{{ + $ancho_pagina = abs($this->_config['Xf'] - + $this->_config['Xi']) ; + for ($i=0; $i<$this->getColCount(); $i++ ) { + $tmp = $this->getCellAttributes(0,$i); + if (is_null(@$tmp['width'])) { + die ('Todas las columnas deben tener asignado un ancho.'); + } + $attr[$i] = intval($tmp['width']); + } + $tmp = array_sum($attr); + $attr2[0] = $this->_config['Xi']; + for ($i=1; $i_config['Xf']; + ///}}} + + $this->_pdf->newPage($this->_tamanio); + + $alto = $this->_getAvailableSpace($this->_pdf->numPage()); + + for ($i = 0; $i < $this->getRowCount(); $i++) { + $max = 0; + for ($j = 0; $j < $this->getColCount(); $j++) { + $estilo = $this->_obtenerEstiloCelda($i, $j); + $txt = $this->_pdf->wordWrap($this->getCellContents($i,$j), + $attr2[$j+1] - $attr2[$j], $estilo); + $max = max($estilo['alto_linea'] * count($txt), $max); + + } + $alto -= $max; + + if ($alto < $this->_config['Yi']) { + $this->_pdf->newPage($this->_tamanio); + $alto = $this->_getAvailableSpace($this->_pdf->numPage()); + } + for ($j = 0; $j < $this->getColCount(); $j++) { + $estilo = $this->_obtenerEstiloCelda($i, $j); + + $this->_pdf->addRectangle($alto, $attr2[$j], + $alto+$max, + $attr2[$j+1], @$estilo['fill']); + + $txt = $this->_pdf->wordWrap($this->getCellContents($i,$j), + $attr2[$j+1] - $attr2[$j], $estilo); + $alto1 = $alto + $max; + foreach ($txt as $t) { + $alto1 -= $estilo['alto_linea']; + $this->_pdf->addText($attr2[$j] + 1, $alto1 + 1, + $t, $estilo); + } + } + } + $t = true; + foreach ($this->_pdf->getPages() as $page) { + $this->_pdf->_pagina_actual = $page; + $this->buildPage($t, $t); + $t = false; + } + } + } ?> \ No newline at end of file