*/
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 (is_null(@$tmp['width'])) {
- $attr[$i] = 0;
- }
- else {
+ if(@intval($tmp['width']) != 0)
$attr[$i] = intval($tmp['width']);
- }
+ if(@count($attr) == $this->_tabla->getColCount())
+ break 2;
}
}
+
+ if (!isset($attr))
+ trigger_error ('Todas las columnas tienen que tener un ancho asignado', E_USER_ERROR);
+
$tmp = array_sum($attr);
+
$attr2[0] = 0;
for ($i=1; $i<count($attr); $i++) {
$attr2[$i] = intval(($ancho_pagina * $attr[$i-1] / $tmp) +
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);
}
/**
$orientacion = $this->_marco->getOrientation();
$alto = $this->_marco->espacioDisponible;
}
-
$attr2 = $this->_obtenerAnchoColumnas();
-
for ($i = 0; $i < $this->_tabla->getRowCount(); $i++) {
$max = 0;
for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
//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);
$repetir[$i]['max'] = $max;
}
}
-
if ($alto <= 0)
{
$this->_newPage();
//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;
}
}