function _obtenerAlineacionTexto($row, $col, $texto, $attr, $estilo) {
$at = $this->_tabla->getCellAttributes($row, $col);
+
+ if (@$at['colspan']) {
+ $offset = $at['colspan'];
+ }
+ else {
+ $offset = 1;
+ }
+
if (@$at['align'] == 'center') {
$tam = $this->_marco->strlen($texto, $estilo);
- $init = $attr[$col] + ($attr[$col+1] - $attr[$col] - $tam) / 2;
+ $init = $attr[$col] + ($attr[$col+$offset] - $attr[$col] - $tam) / 2;
}
elseif (@$at['align'] == 'right') {
$tam = $this->_marco->strlen($texto, $estilo);
- $init = $attr[$col+1] - $tam + 1;
+ $init = $attr[$col+$offset] - $tam + 1;
}
else {
$init = $attr[$col];
else {
$estilo = $this->_config['celda_comun'];
}
+ if (@$clase['colspan']) {
+ $estilo['colspan'] = $clase['colspan'];
+ }
return $estilo;
}
function _obtenerAnchoColumnas() {
$ancho_pagina = $this->_marco->getWidth($this->_marco->refPage(),
$this->_marco->getOrientation());
- for ($i=0; $i<$this->_tabla->getColCount(); $i++ ) {
- $tmp = $this->_tabla->getCellAttributes(0,$i);
- if (is_null(@$tmp['width'])) {
- die ('Todas las columnas deben tener asignado un ancho.');
+ 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 {
+ $attr[$i] = intval($tmp['width']);
+ }
}
- $attr[$i] = intval($tmp['width']);
}
$tmp = array_sum($attr);
$attr2[0] = 0;
}
$attr2 = $this->_obtenerAnchoColumnas();
+
for ($i = 0; $i < $this->_tabla->getRowCount(); $i++) {
$max = 0;
for ($j = 0; $j < $this->_tabla->getColCount(); $j++) {
$estilo = $this->_obtenerEstiloCelda($i, $j);
- $txt = $this->_marco->wordWrap($this->_tabla->getCellContents($i,$j),
- $attr2[$j+1] - $attr2[$j], $estilo);
+
+ //Actuo por el colspan
+ if (@$estilo['colspan']) {
+ if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
+ $estilo['colspan'] =
+ $this->_tabla->getColCount() - $j - 1;
+ }
+ $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);
+
$txtt[$j] = $txt; //Esto es para no hacer el wordWrap siempre
$max = max($estilo['alto_linea'] * count($txt), $max);
$alto -= $repetir[$ii]['max'];
for ($jj = 0; $jj < $this->_tabla->getColCount(); $jj++) {
$estilo = $this->_obtenerEstiloCelda($ii, $jj);
- $this->_marco->addRectangle($attr2[$jj], $alto,
- $attr2[$jj+1], $alto+$repetir[$ii]['max'],
- @$estilo['fill'], null, $orientacion);
+
+ //Actuo por el colspan
+ if (@$estilo['colspan']) {
+ if ($estilo['colspan'] >= $this->_tabla->getColCount()) {
+ $estilo['colspan'] =
+ $this->_tabla->getColCount() - $j - 1;
+ }
+ $der = $attr2[$jj+$estilo['colspan']];
+ $izq = $attr2[$jj];
+ }
+ else {
+ $der = $attr2[$jj+1];
+ $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) {
$this->_marco->addText($init, $alto1 + 2,
$t, $estilo, null, $orientacion);
}
+
+ if (@$estilo['colspan']) {
+ $jj++;
+ }
+
}
}
$alto -= $max;
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;
+ }
+ $der = $attr2[$j+$estilo['colspan']];
+ $izq = $attr2[$j];
+ }
+ else {
+ $der = $attr2[$j+1];
+ $izq = $attr2[$j];
+ }
+
- $this->_marco->addRectangle($attr2[$j], $alto,
- $attr2[$j+1], $alto+$max, @$estilo['fill'], null,
- $orientacion);
+ $this->_marco->addRectangle($izq, $alto, $der, $alto+$max,
+ @$estilo['fill'], null, $orientacion);
$alto1 = $alto + $max;
if (@$txtt[$j]) {
$t, $estilo, null, $orientacion);
}
}
+ if (@$estilo['colspan']) {
+ $j++;
+ }
+
}
}
$this->_marco->espacioDisponible = $alto;
<?php
-ini_set('max_execution_time', 200);
+//ini_set('max_execution_time', 200);
require_once 'MECON/general.php';
'3erCabecera'), 'cabecera');
$TABLA->addRow(array ('1erColumna', '2daColumna para que la corete',
'3erColumna'), 'clara');
-for ($i=0; $i<30; $i++) {
+for ($i=0; $i<10; $i++) {
if ($i == 50) {
$TABLA->addRow(array ('1erColumna para gonzalo que lo mira por tv desde su casa en ayacucho 1593. Aunque ahora que lo pienso me estoy equivocando', '2daColumna 1erColumna para gonzalo que lo mira por tv desde su casa en ayacucho 1593. Aunque ahora que lo pienso me estoy equivocando FILA 50', '3erColumna1erColumna para gonzalo que lo mira por tv desde su casa en ayacucho 1593. Aunque ahora que lo pienso me estoy equivocando'), 'comun');
}
$TABLA->addRow(array ('Fila: '.$i.'Col: 1 ', 'Fila: '.$i.'Col: 2', 'Fila: '.$i.'Col: 3'), 'comun');
}
}
+$TABLA->updateCellAttributes(0,0, 'colspan="2"');
+$TABLA->updateCellAttributes(5,1, 'colspan="2"');
$TABLA->updateColAttributes(0, 'width="50%"');
$TABLA->updateColAttributes(1, 'width="25%"');
$TABLA->updateColAttributes(2, 'width="35%"');
//print '<PRE>MARTIN FIN </PRE>';
-$PDF_MARCO =& new MECON_PDF_Marco ('a4', 'landscape');
+$PDF_MARCO =& new MECON_PDF_Marco ('a4', 'portrait');
$PDF_MARCO->seccion = 'Prueba de la libreria de PDF\'s';
$PDF_MARCO->titulo = 'Alberto Giordano';
$PDF_MARCO->subtitulo = 'Filosofo Estilista, guacho pulenta si los hay';
-$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA, 'landscape'), false);
-$PDF_MARCO->addContent($PDF_TEXTO, false);
-$PDF_MARCO->addContent($PDF_TEXTO2, true);
-$PDF_MARCO->addContent(new MECON_PDF_SaltoPagina(), false);
-$PDF_MARCO->addContent($PDF_TEXTO2, true);
-$PDF_MARCO->addContent($PDF_TEXTO2, true);
-$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA), true);
-$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA, 'landscape'), false);
+$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA, 'portrait'), false);
+//$PDF_MARCO->addContent($PDF_TEXTO, false);
+//$PDF_MARCO->addContent($PDF_TEXTO2, true);
+//$PDF_MARCO->addContent(new MECON_PDF_SaltoPagina(), false);
+//$PDF_MARCO->addContent($PDF_TEXTO2, true);
+//$PDF_MARCO->addContent($PDF_TEXTO2, true);
+//$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA), true);
+//$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA, 'landscape'), false);
-$PDF_MARCO->display();
+
+$TABLA->display();
+//$PDF_MARCO->display();
?>