]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/PDF/Tabla.php
Correccion xls
[mecon/meconlib.git] / lib / MECON / PDF / Tabla.php
index 94a278dc83aa6e60140c9292374d264f11d60840..776522011fdacd1f86716be7effd1d1fcda7f542 100644 (file)
@@ -177,15 +177,18 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
         for ($row = 0; $row<$this->_tabla->getRowCount(); $row++) {
             for ($i=0; $i<$this->_tabla->getColCount(); $i++ ) {
                 $tmp = $this->_tabla->getCellAttributes($row,$i);
         for ($row = 0; $row<$this->_tabla->getRowCount(); $row++) {
             for ($i=0; $i<$this->_tabla->getColCount(); $i++ ) {
                 $tmp = $this->_tabla->getCellAttributes($row,$i);
-                if (is_null(@$tmp['width'])) {
-                    $attr[$i] = 0;
-                }
-                else {
+                if(@intval($tmp['width']) != 0)
                     $attr[$i] = intval($tmp['width']);
                     $attr[$i] = intval($tmp['width']);
-                }
+                if(@count($attr) == $this->_tabla->getColCount())
+                  break 2;
             }
         }
             }
         }
+        
+        if (!isset($attr))
+            die ('Todas las columnas tienen que tener un ancho asignado');
+        
         $tmp = array_sum($attr);
         $tmp = array_sum($attr);
+        
         $attr2[0] = 0;
         for ($i=1; $i<count($attr); $i++) {
             $attr2[$i] = intval(($ancho_pagina * $attr[$i-1] / $tmp) +
         $attr2[0] = 0;
         for ($i=1; $i<count($attr); $i++) {
             $attr2[$i] = intval(($ancho_pagina * $attr[$i-1] / $tmp) +
@@ -221,9 +224,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
             $orientacion = $this->_marco->getOrientation();
             $alto = $this->_marco->espacioDisponible;
         }
             $orientacion = $this->_marco->getOrientation();
             $alto = $this->_marco->espacioDisponible;
         }
-
         $attr2 = $this->_obtenerAnchoColumnas();
         $attr2 = $this->_obtenerAnchoColumnas();
-
         for ($i = 0; $i < $this->_tabla->getRowCount(); $i++) {
             $max = 0;
             for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
         for ($i = 0; $i < $this->_tabla->getRowCount(); $i++) {
             $max = 0;
             for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
@@ -231,9 +232,9 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
 
                 //Actuo por el colspan
                 if (@$estilo['colspan']) {
 
                 //Actuo por el colspan
                 if (@$estilo['colspan']) {
-                    if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
+                    if ($estilo['colspan'] > $this->_tabla->getColCount()) {
                         $estilo['colspan'] = 
                         $estilo['colspan'] = 
-                            $this->_tabla->getColCount() - $j - 1;
+                            $this->_tabla->getColCount() - $j;
                     }
                     $ancho_columna = $attr2[$j+$estilo['colspan']] - 
                         $attr2[$j];
                     }
                     $ancho_columna = $attr2[$j+$estilo['colspan']] - 
                         $attr2[$j];
@@ -241,7 +242,6 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
                 else {
                    $ancho_columna = $attr2[$j+1] - $attr2[$j];
                 }
                 else {
                    $ancho_columna = $attr2[$j+1] - $attr2[$j];
                 }
-
                 $txt = $this->_marco->wordWrap(
                         @$this->_tabla->getCellContents($i,$j), $ancho_columna, 
                         $estilo);
                 $txt = $this->_marco->wordWrap(
                         @$this->_tabla->getCellContents($i,$j), $ancho_columna, 
                         $estilo);
@@ -256,7 +256,6 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
                     $repetir[$i]['max'] = $max;
                 }
             }
                     $repetir[$i]['max'] = $max;
                 }
             }
-            
             if ($alto <= 0) 
             {
                 $this->_newPage();               
             if ($alto <= 0) 
             {
                 $this->_newPage();               
@@ -269,9 +268,9 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
 
                         //Actuo por el colspan
                         if (@$estilo['colspan']) {
 
                         //Actuo por el colspan
                         if (@$estilo['colspan']) {
-                            if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
+                            if ($estilo['colspan'] > $this->_tabla->getColCount()) {
                                 $estilo['colspan'] =
                                 $estilo['colspan'] =
-                                    $this->_tabla->getColCount() - $j - 1;
+                                    $this->_tabla->getColCount() - $jj;
                             }
                             $der = $attr2[$jj+$estilo['colspan']];
                             $izq = $attr2[$jj];
                             }
                             $der = $attr2[$jj+$estilo['colspan']];
                             $izq = $attr2[$jj];
@@ -285,7 +284,6 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
                         $this->_marco->addRectangle($izq, $alto, $der, 
                                 $alto+$repetir[$ii]['max'], @$estilo['fill'], 
                                 null, $orientacion);
                         $this->_marco->addRectangle($izq, $alto, $der, 
                                 $alto+$repetir[$ii]['max'], @$estilo['fill'], 
                                 null, $orientacion);
-                        
                         $alto1 = $alto + $repetir[$ii]['max'];
                         foreach ($repetir[$ii][$jj] as $t) {
                             $alto1 -= $estilo['alto_linea'];
                         $alto1 = $alto + $repetir[$ii]['max'];
                         foreach ($repetir[$ii][$jj] as $t) {
                             $alto1 -= $estilo['alto_linea'];
@@ -299,7 +297,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
                         }
 
                         if (@$estilo['colspan']) {
                         }
 
                         if (@$estilo['colspan']) {
-                            $jj++;
+                            $jj += $estilo['colspan'];
                         }
                         
                     }
                         }
                         
                     }
@@ -311,11 +309,11 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
             for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
                 
                 $estilo = $this->_obtenerEstiloCelda($i, $j);
             for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
                 
                 $estilo = $this->_obtenerEstiloCelda($i, $j);
-                        
+                 
                 //Actuo por el colspan
                 if (@$estilo['colspan']) {
                 //Actuo por el colspan
                 if (@$estilo['colspan']) {
-                    if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
-                        $estilo['colspan'] = $this->_tabla->getColCount() - 1;
+                    if ($estilo['colspan'] > $this->_tabla->getColCount()) {
+                        $estilo['colspan'] = $this->_tabla->getColCount()  - 1;
                     }
                     $der = $attr2[$j+$estilo['colspan']];
                     $izq = $attr2[$j];
                     }
                     $der = $attr2[$j+$estilo['colspan']];
                     $izq = $attr2[$j];
@@ -343,7 +341,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Contenido {
                     }
                 }
                 if (@$estilo['colspan']) {
                     }
                 }
                 if (@$estilo['colspan']) {
-                    $j++;
+                    $j += $estilo['colspan'];
                 }
 
             }
                 }
 
             }