]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/PDF.php
BugFix
[mecon/meconlib.git] / lib / MECON / PDF.php
index 08250ecaa5637e28040f0112080b65ef4f779b5a..40fb3fe20d61ec91d55f44cbfad34b9949ef68ee 100644 (file)
@@ -30,6 +30,13 @@ require_once 'MECON/PDF/external/phppdflib.class.php';
  * Liberia base para el manejo de pdf's.  
  */
 class MECON_PDF {
  * Liberia base para el manejo de pdf's.  
  */
 class MECON_PDF {
+
+    /**
+     * Configuracion
+     * @var arary $config
+     * @access protected
+     */
+     var $_config = array ();
     
     /**
      * Libreria externa.
     
     /**
      * Libreria externa.
@@ -55,12 +62,16 @@ class MECON_PDF {
     /**
      * Class constructor.
      *
     /**
      * Class constructor.
      *
+     * @param string $tam Tipo de hoja
+     *
      * @return void
      * @access public
      */
      * @return void
      * @access public
      */
-    function MECON_PDF()
+    function MECON_PDF($tam = "a4")
     {
         $this->_pdf = new pdffile;
     {
         $this->_pdf = new pdffile;
+        $this->_config = include 'MECON/PDF/medidas.php';
+        $this->_config = $this->_config[$tam];
     }
 
     /**
     }
 
     /**
@@ -110,12 +121,27 @@ class MECON_PDF {
      * @param string $texto $texto
      * @param int $estilo $estilo
      * @param int $pag Numero de pagina virtual.
      * @param string $texto $texto
      * @param int $estilo $estilo
      * @param int $pag Numero de pagina virtual.
+     * @param string $transformacion Indica la orientacion de la pagina.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function addText($X, $Y, $texto, $estilo = '', $pag = null)
-    {
+    function addText($X, $Y, $texto, $estilo = '', $pag = null, $transformacion = '')    {
+        //@TODO Ver si $texto es un objeto
+        
+        $x = $X;
+        $y = $Y;
+        switch (strtolower($transformacion)) {
+            case 'portrait':
+                $X = $this->_portraitX($x,$y);
+                $Y = $this->_portraitY($x,$y);
+                break;
+            case 'landscape':
+                $X = $this->_landscapeX($x,$y);
+                $Y = $this->_landscapeY($x,$y);
+                @$estilo['rotation'] += 90;
+                break;
+        }
         $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo);
     }
 
         $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo);
     }
 
@@ -128,13 +154,33 @@ class MECON_PDF {
      * @param int $Yf $Yf
      * @param long $estilo $estilo
      * @param int $pag Numero de pagina virtual.
      * @param int $Yf $Yf
      * @param long $estilo $estilo
      * @param int $pag Numero de pagina virtual.
+     * @param string $transformacion Indica la orientacion de la pagina.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) 
+    function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null,
+            $transformacion = 'portrait') 
     {
     {
-        $this->_pdf->draw_rectangle($Xi, $Yi, $Xf, $Yf, $this->refPage($pag), $estilo);
+        $xi = $Xi;
+        $yi = $Yi;
+        $xf = $Xf;
+        $yf = $Yf;
+        switch (strtolower($transformacion)) {
+            case 'portrait':
+                $Xi = $this->_portraitX($xi,$yi);
+                $Yi = $this->_portraitY($xi,$yi);
+                $Xf = $this->_portraitX($xf,$yf);
+                $Yf = $this->_portraitY($xf,$yf);
+                break;
+            case 'landscape':
+                $Xi = $this->_landscapeX($xi,$yi);
+                $Yi = $this->_landscapeY($xi,$yi);
+                $Xf = $this->_landscapeX($xf,$yf);
+                $Yf = $this->_landscapeY($xf,$yf);
+                break;
+        }
+        $this->_pdf->draw_rectangle($Yi, $Xi, $Yf, $Xf, $this->refPage($pag), $estilo);
     }
 
     /**
     }
 
     /**
@@ -146,13 +192,33 @@ class MECON_PDF {
      * @param int $Yf $Yf
      * @param int $estilo $estilo
      * @param int $pag Numero de pagina virtual.
      * @param int $Yf $Yf
      * @param int $estilo $estilo
      * @param int $pag Numero de pagina virtual.
+     * @param string $transformacion Indica la orientacion de la pagina.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null)
+    function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null,
+            $transformacion = 'portrait')
     {
     {
-        $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), 
+        $xi = $Xi;
+        $yi = $Yi;
+        $xf = $Xf;
+        $yf = $Yf;
+        switch (strtolower($transformacion)) {
+            case 'portrait':
+                $Xi = $this->_portraitX($xi,$yi);
+                $Yi = $this->_portraitY($xi,$yi);
+                $Xf = $this->_portraitX($xf,$yf);
+                $Yf = $this->_portraitY($xf,$yf);
+                break;
+            case 'landscape':
+                $Xi = $this->_landscapeX($xi,$yi);
+                $Yi = $this->_landscapeY($xi,$yi);
+                $Xf = $this->_landscapeX($xf,$yf);
+                $Yf = $this->_landscapeY($xf,$yf);
+                break;
+        }
+       $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), 
                 $this->refPage($pag),$estilo);
     }
 
                 $this->refPage($pag),$estilo);
     }
 
@@ -164,11 +230,25 @@ class MECON_PDF {
      * @param int    $Y Posixion vertical.
      * @param int    $pag Numero de pagina virtual.
      * @param string $formato Formato del archivo (Extension).
      * @param int    $Y Posixion vertical.
      * @param int    $pag Numero de pagina virtual.
      * @param string $formato Formato del archivo (Extension).
+     * @param string $transformacion Indica la orientacion de la pagina.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function addImage($archivo, $X, $Y, $pag = null, $formato = null) {
+    function addImage($archivo, $X, $Y, $pag = null, $formato = null,
+            $transformacion = 'portrait') {
+        $x = $X;
+        $y = $Y;
+        switch (strtolower($transformacion)) {
+            case 'portrait':
+                $X = $this->_portraitX($x,$y);
+                $Y = $this->_portraitY($x,$y);
+                break;
+            case 'landscape':
+                $X = $this->_landscapeX($x,$y);
+                $Y = $this->_landscapeY($x,$y);
+                break;
+        }
         $formato = strtolower($formato);
         switch ($formato) {
             case 'jpg':
         $formato = strtolower($formato);
         switch ($formato) {
             case 'jpg':
@@ -196,6 +276,20 @@ class MECON_PDF {
         return $this->_pdf->wrap_line ($texto, $l_max, $attr);
     }
 
         return $this->_pdf->wrap_line ($texto, $l_max, $attr);
     }
 
+    /**
+     * Funcion que wrappea una linea.                                       
+     *
+     * @param strgin $texto Texto que quiere wrappearse.
+     * @param int    $l_max Largo maximo del texto.
+     * @param array  $attr  Atributos del texto.
+     *
+     * @return string
+     * @access public
+     */
+    function wordWrap($texto, $l_max, $attr) {
+        return $this->_pdf->word_wrap ($texto, $l_max, $attr);
+    }
+    
     /**
      * Funcion que calcula cuanto va a ocupar cierto texto segun su formato en
      * una pagina.
     /**
      * Funcion que calcula cuanto va a ocupar cierto texto segun su formato en
      * una pagina.
@@ -256,5 +350,102 @@ class MECON_PDF {
     function getPages() {
         return $this->_paginas;
     }
     function getPages() {
         return $this->_paginas;
     }
+
+    /**
+     * Funcion que devuelve el ancho de la pagina.
+     *
+     * @param  string $orientacion Orientacion de la pagina.
+     *
+     * @return int
+     * @access public
+     */
+    function getWidth($orientacion = 'portrait')
+    {
+         switch (strtolower($orientacion)) {
+            case 'landscape':
+                $width = $this->_config['Yf'] - $this->_config['Yi'];
+                break;
+            default:
+                $width = $this->_config['Xf'] - $this->_config['Xi'];
+        }
+        return $width;
+
+    }
+
+    /**
+     * Funcion que devuelve el alto de la pagina.
+     *
+     * @param  string $orientacion Orientacion de la pagina.
+     *
+     * @return int
+     * @access public
+     */
+    function getHeight($orientacion = 'portrait')
+    {
+         switch (strtolower($orientacion)) {
+            case 'landscape':
+                $height = $this->_config['Xf'] - $this->_config['Xi'];
+                break;
+            default:
+                $height = $this->_config['Yf'] - $this->_config['Yi'];
+        }
+        return $height;
+    }
+
+    /**
+     * Funcion que devuelve la rotacion y traslacion para landscape. Variable X.
+     *
+     * @param int $x X
+     * @param int $y Y
+     *
+     * @return int
+     * @access protected
+     */
+    function _landscapeX($x, $y)
+    {
+        return -$y + $this->_config['Xf'];
+    }
+
+    /**
+     * Funcion que devuelve la rotacion y traslacion para landscape. Variable Y.
+     *
+     * @param int $x X
+     * @param int $y Y
+     *
+     * @return int
+     * @access protected
+     */
+    function _landscapeY($x, $y)
+    {
+        return $x + $this->_config['Yi'];
+    }
+
+    /**
+     * Funcion que devuelve la traslacion para portrait. Variable X.
+     *
+     * @param int $x X
+     * @param int $y Y
+     *
+     * @return int
+     * @access protected
+     */
+    function _portraitX($x, $y)
+    {
+        return $x + $this->_config['Xi'];
+    }
+
+    /**
+     * Funcion que devuelve la traslacion para portrait. Variable Y.
+     *
+     * @param int $x X
+     * @param int $y Y
+     *
+     * @return int
+     * @access protected
+     */
+    function _portraitY($x, $y)
+    {
+        return $y + $this->_config['Yi'];
+    }
 }
 ?>
\ No newline at end of file
 }
 ?>
\ No newline at end of file