X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/4d7f49287131b3b01e7f79b16b4b8bae49ef7c4c..c0cc0ddabd54d39b68079ef97f414b799211aa67:/lib/MECON/PDF/Imagen.php diff --git a/lib/MECON/PDF/Imagen.php b/lib/MECON/PDF/Imagen.php index 54f2e4d..c2a7879 100644 --- a/lib/MECON/PDF/Imagen.php +++ b/lib/MECON/PDF/Imagen.php @@ -133,21 +133,17 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { //Obtengo el tamaño de la imagen $tam['width'] = $this->_resource->getImageWidth(); $tam['height'] = $this->_resource->getImageHeight(); - //Obtengo el espacio disponible en la pagina $alto = $MARCO->espacioDisponible; - //Veo si tengo que crear una nueva pagina. if ($alto <= 0 ) { $this->_newPage($MARCO); $alto = $MARCO->espacioDisponible; } - //Obtengo los valores de la pagina $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation()); $alto_pagina = $MARCO->getHeight($MARCO->refPage(),$MARCO->getOrientation()); $orientacion = $MARCO->getOrientation(); - //Veo si me alcanza el tamaño para agregarlo en lo que me queda de la //pagina (chequeando que no sea una pagina nueva) if (($alto - $tam['height'] <= 0) && ($alto != $alto_pagina)) { @@ -162,19 +158,14 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { if ($ancho_pagina <= $tam['width']) { $this->_resource->scaleByX($anchoPagina); } - //Obtego el nombre temporal $tmp_path = tempnam('/tmp/', 'MECON_PDF_Images_'); - //Salvo la imagen temporalmente $this->_resource->save($tmp_path, 'png'); - //Obtengo la posicion Y $alto -= $tam['height']; - //Obtengo la posicion X $X = $this->_X($MARCO, $tam['width']); - //Agrego la imagen $MARCO->addImage($tmp_path, $X, $alto, null, 'png', $this->_orientacion, $this->_param); @@ -183,6 +174,7 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { $this->_contenidoToPdf($MARCO, $tam, $alto); $alto = $MARCO->espacioDisponible; } + //Seteo el espacio disponible en la pagina. $MARCO->espacioDisponible = $alto - 2; } @@ -198,8 +190,8 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { */ function _contenidoToPdf(&$MARCO, $tam, $alto) { $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation()); - $orientacion = $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; @@ -214,7 +206,7 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { $coord['Yf'] = $alto + $tam['height']; break; } - + //Por cada TEXTO agregado. foreach ($this->_contenido as $TEXTO) { $this->_textoToPdf($MARCO, $coord, $alto, $TEXTO); } @@ -232,19 +224,23 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { * @access protected */ function _textoToPdf(&$MARCO, $coord, $alto, $TEXTO) { - $cant_parrafos = $TEXTO->cantParrafos(); + //Obtengo los parrafos y estilos del texto $parrafos = $TEXTO->getParrafos(); - $estilos = $TEXTO->getEstilo(); - $estilo_defecto = $TEXTO->getEstiloDefecto(); + $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()); - $orientacion = $MARCO->getOrientation(); - for ($i=0; $i < $cant_parrafos; $i++) { + //Por cada parrafo + for ($i=0; $i < $TEXTO->cantParrafos(); $i++) { + //Veo si hay definido un estilo para el parrafo. if (@!$estilos[$i]) { - $estilos[$i] = $estilo_defecto; + $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]); @@ -253,32 +249,32 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { $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']) { - //Tengo que escribir como si fuera texto normal - //Junto los parrafos que me quedan y obtengo + //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; @@ -290,10 +286,13 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { else { $init = 0; } - $MARCO->addText($init, $alto + 2, - $t, $estilos[$i], null, $orientacion); + $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; @@ -314,6 +313,7 @@ class MECON_PDF_Imagen extends MECON_PDF_Contenido { } } } + //Seteo el nuevo alto de la pagina. $MARCO->espacioDisponible = $alto; }