* @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<count($attr); $i++) {
+ $attr2[$i] = intval(($ancho_pagina * $attr[$i-1] / $tmp) +
+ $attr2[$i-1]);
+ }
+ $attr2[$i] = $this->_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