+ /**
+ * 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());
+ //Obtengo las coordenadas del espacio disponible que se corresponde con
+ //el tamaño de la imagen.
+ 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;
+ }
+ //Por cada TEXTO agregado.
+ 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) {
+ //Obtengo los parrafos y estilos del texto
+ $parrafos = $TEXTO->getParrafos();
+ $estilos = $TEXTO->getEstilo();
+ //Obtengo los limites escribibles al lado de la imagen
+ $ancho_texto = $coord['Xf'] - $coord['Xi'] - 2;
+ $alto_texto = $coord['Yf'];
+ //Obtengo el ancho total de la pagina
+ $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
+ //Por cada parrafo
+ for ($i=0; $i < $TEXTO->cantParrafos(); $i++) {
+ //Veo si hay definido un estilo para el parrafo.
+ if (@!$estilos[$i]) {
+ $estilos[$i] = $TEXTO->getEstiloDefecto();
+ }
+ //Armo un array con el parrafo en donde cada componente es una linea
+ //que cumple con el ancho maximo permitido.
+ //Veo si el texto esta al lado de la imagen o por debajo de esta.
+ 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]);
+ }
+ //Por cada linea
+ if (@$txt) {
+ while (count($txt)) {
+ $t = array_shift($txt);
+ $alto_texto -= $estilos[$i]['height'];
+ //Veo si el texto esta al lado de la imagen o por debajo de
+ //esta.
+ if ($alto_texto <= $coord['Yi'] - $estilos[$i]['height']) {
+ //Veo si ya estaba escribiendo debajo de la imagen.
+ 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'];
+ }
+ //Veo si hay que agragar una nueva pagina.
+ if ($alto <= 0) {
+ $this->_newPage($MARCO);
+ $alto = $MARCO->espacioDisponible;
+ }
+ //Calculo el X en donde debo comenzar a escribir segun
+ //la alineacion del texto.
+ 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, $this->_orientacion);
+ }
+ else {
+ //Estoy escribiendo al lado de la imagen.
+ //Calculo el X en donde debo comenzar a escribir segun
+ //la alineacion del texto.
+ 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);
+ }
+ }
+ }
+ }
+ //Seteo el nuevo alto de la pagina.
+ $MARCO->espacioDisponible = $alto;
+ }
+