*/
var $_orientacion;
+ /**
+ * Indica si el encabezado debe ir en la nuevas paginas.
+ * @var bool $encabezado
+ * @access protected;
+ */
+ var $_encabezado;
+
/**
* Class Constructor
*
* @return void
* @access public
*/
- function MECON_PDF_Tabla($TABLA, $orientacion = null) {
+ function MECON_PDF_Tabla($TABLA, $orientacion = null, $encabezado = true) {
$this->_tabla = $TABLA;
$this->_orientacion = $orientacion;
$this->_config = include 'MECON/PDF/Tabla/medidas.php';
+ $this->_encabezado = $encabezado;
}
/**
for ($row = 0; $row<$this->_tabla->getRowCount(); $row++) {
for ($i=0; $i<$this->_tabla->getColCount(); $i++ ) {
$tmp = $this->_tabla->getCellAttributes($row,$i);
- if(intval($tmp['width']) != 0)
+ if(@intval($tmp['width']) != 0)
$attr[$i] = intval($tmp['width']);
- if(count($attr) == $this->_tabla->getColCount())
- break;
+ if(@count($attr) == $this->_tabla->getColCount())
+ break 2;
}
- if(count($attr) == $this->_tabla->getColCount())
- break;
}
+
+ if (!isset($attr))
+ trigger_error ('Todas las columnas tienen que tener un ancho asignado', E_USER_ERROR);
+
$tmp = array_sum($attr);
$attr2[0] = 0;
function _newPage() {
$tmp = ($this->_orientacion) ? $this->_orientacion :
$this->_marco->getOrientation();
- $this->_marco->newPage($this->_marco->tamanio, $tmp);
+ $this->_marco->newPage($this->_marco->tamanio, $tmp, $this->_encabezado);
}
/**
//Actuo por el colspan
if (@$estilo['colspan']) {
- if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
+ if ($estilo['colspan'] > $this->_tabla->getColCount()) {
$estilo['colspan'] =
- $this->_tabla->getColCount() - $j - 1;
+ $this->_tabla->getColCount() - $j;
}
$ancho_columna = $attr2[$j+$estilo['colspan']] -
$attr2[$j];
else {
$ancho_columna = $attr2[$j+1] - $attr2[$j];
}
- $txt = $this->_marco->wordWrap(
- @$this->_tabla->getCellContents($i,$j), $ancho_columna,
- $estilo);
+ if (@$this->_tabla->getCellContents($i,$j)) {
+ $txt = $this->_marco->wordWrap(
+ @$this->_tabla->getCellContents($i,$j), $ancho_columna,
+ $estilo
+ );
+ }
+ else {
+ $txt = array (' ');
+ }
$txtt[$j] = $txt; //Esto es para no hacer el wordWrap siempre
$max = max($estilo['alto_linea'] * count($txt), $max);
//Actuo por el colspan
if (@$estilo['colspan']) {
- if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
+ if ($estilo['colspan'] > $this->_tabla->getColCount()) {
$estilo['colspan'] =
- $this->_tabla->getColCount() - $j - 1;
+ $this->_tabla->getColCount() - $jj;
}
$der = $attr2[$jj+$estilo['colspan']];
$izq = $attr2[$jj];
$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'];
}
if (@$estilo['colspan']) {
- $jj++;
+ $jj += $estilo['colspan'] -1;
}
}
for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
$estilo = $this->_obtenerEstiloCelda($i, $j);
-
+
//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];
}
}
if (@$estilo['colspan']) {
- $j++;
+ $j += $estilo['colspan']-1;
}
}