*/
var $_param;
+ /**
+ * Array de MECON_PDF_Texto para agregar al lado de las imagenes.
+ * @var array $contenido
+ * @access protected
+ */
+ var $_contenido = array();
+
/**
* Class Constructor
*
$this->_encabezado = $encabezado;
$this->_param = $param;
}
+
+ /**
+ * Permite agregar texto contenido que sera puesto al lado de las imagenes.
+ *
+ * @param Object $TEXTO MECON_PDF_Texto.
+ *
+ * @return void
+ * @access public
+ */
+ function agregarContenido($TEXTO) {
+ $this->_contenido[] = $TEXTO;
+ }
/**
* Permite rotar la imagen n grados.
$this->_param['rotation'] = $grados;
}
- /**
- * Funcion que se encarga de crear las nuevas paginas.
- *
- * @param &Object $MARCO MECON_PDF_Marco
- *
- * @return void
- * @access protected
- */
- function _newPage(&$MARCO) {
- $tmp = ($this->_orientacion) ? $this->_orientacion :
- $MARCO->getOrientation();
- $MARCO->newPage($MARCO->tamanio, $tmp, $this->_encabezado);
- }
-
/**
* Funcion que agrega el contenido de la tabla que se este utilizando al
* PDF.
//Agrego la imagen
$MARCO->addImage($tmp_path, $X, $alto, null, 'png', $this->_orientacion,
$this->_param);
-
+ if ($this->_contenido && ($this->_align == 'left' ||
+ $this->_align == 'right')) {
+ $this->_contenidoToPdf($MARCO, $tam, $alto);
+ $alto = $MARCO->espacioDisponible;
+ }
$MARCO->espacioDisponible = $alto - 2;
}
+ /**
+ * Agrega al pdf el texto adjunto a la imagen.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco.
+ * @param array $tam Tamaño de la imagen.
+ * @param int $alto Alto disponible en la pagina.
+ *
+ * @return void
+ * @access protected
+ */
+ function _contenidoToPdf(&$MARCO, $tam, $alto) {
+ $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
+ $orientacion = $MARCO->getOrientation();
+
+ switch ($this->_align) {
+ case 'left':
+ $coord['Xi'] = $tam['width'] + 2;
+ $coord['Xf'] = $ancho_pagina;
+ $coord['Yi'] = $alto;
+ $coord['Yf'] = $alto + $tam['height'];
+ break;
+ case 'right':
+ $coord['Xi'] = 0;
+ $coord['Xf'] = $ancho_pagina - $tam['width'] - 2;
+ $coord['Yi'] = $alto;
+ $coord['Yf'] = $alto + $tam['height'];
+ break;
+ }
+
+ foreach ($this->_contenido as $TEXTO) {
+ $this->_textoToPdf($MARCO, $coord, $alto, $TEXTO);
+ }
+ }
+
+ /**
+ * Agrega objeto por objeto el contenido al pdf general.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco.
+ * @param array $coord Coordenadas para el texto.
+ * @param int $alto Alto disponible en la pagina.
+ * @param Object $TEXTO MECON_PDF_Texto.
+ *
+ * @return void
+ * @access protected
+ */
+ function _textoToPdf(&$MARCO, $coord, $alto, $TEXTO) {
+ $cant_parrafos = $TEXTO->cantParrafos();
+ $parrafos = $TEXTO->getParrafos();
+ $estilos = $TEXTO->getEstilo();
+ $estilo_defecto = $TEXTO->getEstiloDefecto();
+ $ancho_texto = $coord['Xf'] - $coord['Xi'] - 2;
+ $alto_texto = $coord['Yf'];
+ $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
+ $orientacion = $MARCO->getOrientation();
+ for ($i=0; $i < $cant_parrafos; $i++) {
+ if (@!$estilos[$i]) {
+ $estilos[$i] = $estilo_defecto;
+ }
+
+ if ($alto_texto <= $coord['Yi'] - $estilos[$i]['height']) {
+ $txt = @$MARCO->wordWrap($parrafos[$i], $ancho_pagina - 2,
+ $estilos[$i]);
+ }
+ else {
+ $txt = @$MARCO->wordWrap($parrafos[$i], $ancho_texto,
+ $estilos[$i]);
+ }
+
+ if (@$txt) {
+ while (count($txt)) {
+ $t = array_shift($txt);
+ $alto_texto -= $estilos[$i]['height'];
+ if ($alto_texto <= $coord['Yi'] - $estilos[$i]['height']) {
+ //Tengo que escribir como si fuera texto normal
+ //Junto los parrafos que me quedan y obtengo
+ if (@!$tmp) {
+ $tmp = implode(' ', $txt);
+
+ $txt = @$MARCO->wordWrap($tmp, $ancho_pagina - 2,
+ $estilos[$i]);
+ $t = array_shift($txt);
+
+ $alto = $alto_texto;
+ }
+ else {
+ $alto -= $estilos[$i]['height'];
+ }
+
+ if ($alto <= 0) {
+ $this->_newPage($MARCO);
+ $alto = $MARCO->espacioDisponible;
+ }
+
+ if (@$estilos[$i]['align'] == 'center') {
+ $tam = @$MARCO->strlen($t, $estilos[$i]);
+ $init = ($ancho_pagina - $tam) / 2;
+ }
+ elseif (@$estilos[$i]['align'] == 'right') {
+ $tam = @$MARCO->strlen($t, $estilos[$i]);
+ $init = $ancho_pagina - $tam + 1;
+ }
+ else {
+ $init = 0;
+ }
+ $MARCO->addText($init, $alto + 2,
+ $t, $estilos[$i], null, $orientacion);
+ }
+ else {
+ if (@$estilos[$i]['align'] == 'center') {
+ $tam = @$MARCO->strlen($t, $estilos[$i]);
+ $init = ($ancho_texto - $tam) / 2;
+ }
+ elseif (@$estilos[$i]['align'] == 'right') {
+ $tam = @$MARCO->strlen($t, $estilos[$i]);
+ $init = $ancho_texto - $tam + 3;
+ }
+ else {
+ $init = 2;
+ }
+
+ $init += $coord['Xi'];
+
+ $MARCO->addText($init, $alto_texto + 2, $t, $estilos[$i],
+ null, $this->_orientacion);
+ }
+ }
+ }
+ }
+ $MARCO->espacioDisponible = $alto;
+ }
+
/**
* Permite obtener el valor X segun la alineacion.
*
}
return $X;
}
+
+ /**
+ * Funcion que se encarga de crear las nuevas paginas.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco
+ *
+ * @return void
+ * @access protected
+ */
+ function _newPage(&$MARCO) {
+ $tmp = ($this->_orientacion) ? $this->_orientacion :
+ $MARCO->getOrientation();
+ $MARCO->newPage($MARCO->tamanio, $tmp, $this->_encabezado);
+ }
}
?>
\ No newline at end of file
/**
* Funcion que agrega el contenido del texto al PDF.
*
- * @param &Object $MARCO MECON_PDF_Marco
+ * @param &Object $MARCO MECON_PDF_Marco.
*
* @return void
* @access public
else {
$init = 0;
}
-
$MARCO->addText($init, $alto + 2,
$t, $this->_estilos[$i], null, $orientacion);
-
-
}
}
$MARCO->espacioDisponible = $alto;
$this->_estilos[$pos] = $estilo;
}
+ /**
+ * Devuelve el array de estilos o uno en particular.
+ *
+ * @param int $pos Número parrafo.
+ *
+ * @access public
+ * @return mixed
+ */
+ function getEstilo($pos = null) {
+ if ($pos) {
+ return $this->_estilos[$pos];
+ }
+ else {
+ return $this->_estilos;
+ }
+ }
+
+ /*
+ * Devuelve el estilo por defecto.
+ *
+ * @access public
+ * @return mixed
+ */
+ function getEstiloDefecto() {
+ return $this->_estilo_defecto;
+ }
+
/**
* Funcion que devuelve el numero de parrafos que hay cargados.
*
function cantParrafos() {
return count($this->_parrafos);
}
+
+ /**
+ * Devuelve el array de parrafos
+ *
+ * @access public
+ * @return array
+ */
+ function getParrafos() {
+ return $this->_parrafos;
+ }
}
?>
\ No newline at end of file