]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/PDF/Imagen.php
Agrego la posibilidad de utilizar mecon_html_icon con cualquier imagen.
[mecon/meconlib.git] / lib / MECON / PDF / Imagen.php
index 54f2e4dc8499b189222975f40e388bdcc8f5a038..c2a78790938037a84e491c709ccdcb31e8aa369f 100644 (file)
@@ -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 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;
         //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;
         }
         //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();
         //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)) {
         //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);
         }
         if ($ancho_pagina <= $tam['width']) {
             $this->_resource->scaleByX($anchoPagina);
         }
-
         //Obtego el nombre temporal
         $tmp_path = tempnam('/tmp/', 'MECON_PDF_Images_');
         //Obtego el nombre temporal
         $tmp_path = tempnam('/tmp/', 'MECON_PDF_Images_');
-        
         //Salvo la imagen temporalmente
         $this->_resource->save($tmp_path, 'png');
         //Salvo la imagen temporalmente
         $this->_resource->save($tmp_path, 'png');
-        
         //Obtengo la posicion Y
         $alto -= $tam['height'];
         //Obtengo la posicion Y
         $alto -= $tam['height'];
-        
         //Obtengo la posicion X
         $X = $this->_X($MARCO, $tam['width']);
         //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);
         //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;
         }
             $this->_contenidoToPdf($MARCO, $tam, $alto);
             $alto = $MARCO->espacioDisponible;
         }
+        //Seteo el espacio disponible en la pagina.
         $MARCO->espacioDisponible = $alto - 2;
     }
 
         $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());
      */
     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;
         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;
         }
                 $coord['Yf'] = $alto + $tam['height'];
                 break;
         }
-        
+        //Por cada TEXTO agregado.
         foreach ($this->_contenido as $TEXTO) {
             $this->_textoToPdf($MARCO, $coord, $alto, $TEXTO);
         }
         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) {
      * @access protected
      */
     function _textoToPdf(&$MARCO, $coord, $alto, $TEXTO) {
-        $cant_parrafos = $TEXTO->cantParrafos();
+        //Obtengo los parrafos y estilos del texto
         $parrafos = $TEXTO->getParrafos();
         $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'];
         $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());
         $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]) {
             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]);
             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]);
             }
                 $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'];
             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']) {
                     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);
                         if (@!$tmp) {
                             $tmp = implode(' ', $txt);
-
                             $txt = @$MARCO->wordWrap($tmp, $ancho_pagina - 2,
                                     $estilos[$i]);
                             $t = array_shift($txt);
                             $txt = @$MARCO->wordWrap($tmp, $ancho_pagina - 2,
                                     $estilos[$i]);
                             $t = array_shift($txt);
-
                             $alto = $alto_texto;
                         }
                         else {
                             $alto -= $estilos[$i]['height'];
                         }
                             $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;
                         }
                         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;
                         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;
                         }
                         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 {
                     }
                     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;
                         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;
     }
 
         $MARCO->espacioDisponible = $alto;
     }