]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/PDF.php
Se modifica el método acumular para que las secuencias se pinten automáticamente...
[mecon/meconlib.git] / lib / MECON / PDF.php
index dff59a21837215e6326ae634f731c0cfb57a0fc3..609e37e5085f54b013c824833ef7ac977732f54f 100644 (file)
@@ -31,6 +31,22 @@ require_once 'MECON/PDF/external/phppdflib.class.php';
  */
 class MECON_PDF {
 
+    /**
+     * Orientacion (portrait o landscape).
+     * @var sting $orientacion
+     * @access public
+     */
+    var $orientacion = "portrait";   
+
+    /**
+     *
+     *  Orientacion cambiada, indica la orientacion de la pagina cuando es
+     *  distinto al comun
+     *  @var array $orientacion_distinta
+     *  @access protected
+     */
+    var $_orientacion_distinta = array();
+    
     /**
      * Configuracion
      * @var arary $config
@@ -41,7 +57,7 @@ class MECON_PDF {
     /**
      * Libreria externa.
      * @var    int $pdf
-     * @access private
+     * @access protected
      */
     var $_pdf;
 
@@ -57,18 +73,21 @@ class MECON_PDF {
      * @var array $paginas
      * @access private
      */
-    var $_paginas;
+    var $_paginas = array();
 
     /**
      * Class constructor.
      *
      * @param string $tam Tipo de hoja
+     * @param string $ori Orientacion de las hojas (portrait o landscape).
      *
      * @return void
      * @access public
      */
-    function MECON_PDF($tam = "a4")
+    function MECON_PDF($tam = "a4", $ori = "portrait")
     {
+        setlocale (LC_ALL, 'en_US');
+        $this->orientacion = $ori;
         $this->_pdf = new pdffile;
         $this->_config = include 'MECON/PDF/medidas.php';
         $this->_config = $this->_config[$tam];
@@ -78,14 +97,37 @@ class MECON_PDF {
      * Permite agregar nuevas paginas al pdf que se esta armando.
      *
      * @param  string $pagina Tipo de pagina que se va a utilizar.
+     * @param  string $orientacion Orientacion de la pagina en particular.
      *
      * @return void
      * @access public
      */
-    function newPage($pagina = "a4")
+    function newPage($pagina = "a4", $orientacion = null)
     {
         $this->_pagina_actual = $this->_pdf->new_page($pagina);
         $this->_paginas[] = $this->_pagina_actual;
+        if(!is_null($orientacion) && $orientacion != $this->orientacion)
+            $this->_orientacion_distinta[$this->numPage()] = $orientacion;  
+    }
+
+    /**
+     * Funcion que retorna la orientacion de la pagina indicada.
+     * Si no se indica, toma la orientacion de la ultima pagina.
+     *
+     * @param int $pagina Numero de la pagina.
+     *
+     * @access public
+     * @return int
+     */
+    function getOrientation($pagina = null)
+    {
+        if(is_null($pagina))
+            $pagina = $this->numPage();
+        
+        if(isset($this->_orientacion_distinta[$pagina]))
+            return $this->_orientacion_distinta[$pagina];
+        else 
+            return $this->orientacion;
     }
 
     /**
@@ -126,11 +168,12 @@ class MECON_PDF {
      * @return void
      * @access public
      */
-    function addText($X, $Y, $texto, $estilo = '', $pag = null, $transformacion = '')    {
-        //@TODO Ver si $texto es un objeto
-        
+    function addText($X, $Y, $texto, $estilo = '', $pag = null, $transformacion
+    = null)    {
         $x = $X;
         $y = $Y;
+        if(is_null($transformacion))
+            $transformacion = $this->getOrientation($pag);
         switch (strtolower($transformacion)) {
             case 'portrait':
                 $X = $this->_portraitX($x,$y);
@@ -139,7 +182,7 @@ class MECON_PDF {
             case 'landscape':
                 $X = $this->_landscapeX($x,$y);
                 $Y = $this->_landscapeY($x,$y);
-                $estilo['rotation'] = 90;
+                @$estilo['rotation'] += 90;
                 break;
         }
         $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo);
@@ -160,12 +203,14 @@ class MECON_PDF {
      * @access public
      */
     function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null,
-            $transformacion = 'portrait'
+            $transformacion = null
     {
         $xi = $Xi;
         $yi = $Yi;
         $xf = $Xf;
         $yf = $Yf;
+        if(is_null($transformacion))
+            $transformacion = $this->getOrientation($pag);
         switch (strtolower($transformacion)) {
             case 'portrait':
                 $Xi = $this->_portraitX($xi,$yi);
@@ -198,12 +243,14 @@ class MECON_PDF {
      * @access public
      */
     function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null,
-            $transformacion = 'portrait')
+            $transformacion = null)
     {
         $xi = $Xi;
         $yi = $Yi;
         $xf = $Xf;
         $yf = $Yf;
+        if(is_null($transformacion))
+            $transformacion = $this->getOrientation($pag);
         switch (strtolower($transformacion)) {
             case 'portrait':
                 $Xi = $this->_portraitX($xi,$yi);
@@ -236,9 +283,11 @@ class MECON_PDF {
      * @access public
      */
     function addImage($archivo, $X, $Y, $pag = null, $formato = null,
-            $transformacion = 'portrait') {
+            $transformacion = null) {
         $x = $X;
         $y = $Y;
+        if(is_null($transformacion))
+            $transformacion = $this->getOrientation($pag);
         switch (strtolower($transformacion)) {
             case 'portrait':
                 $X = $this->_portraitX($x,$y);
@@ -273,7 +322,15 @@ class MECON_PDF {
      * @access public
      */
     function wrapLine($texto, $l_max, $attr) {
-        return $this->_pdf->wrap_line ($texto, $l_max, $attr);
+        //El if lo estoy haciendo porque en la funcion wordwrap de la libreria
+        //externa no tienen en cuenta que te pueden pasar un texto vacio a
+        //wrapear -> Amerita un mail a los autores.
+        if ($texto) {
+            return $this->_pdf->wrap_line ($texto, $l_max, $attr);
+        }
+        else {
+            return '';
+        }
     }
 
     /**
@@ -287,7 +344,15 @@ class MECON_PDF {
      * @access public
      */
     function wordWrap($texto, $l_max, $attr) {
-        return $this->_pdf->word_wrap ($texto, $l_max, $attr);
+        //El if lo estoy haciendo porque en la funcion wordwrap de la libreria
+        //externa no tienen en cuenta que te pueden pasar un texto vacio a
+        //wrapear -> Amerita un mail a los autores.
+        if ($texto) {
+            return $this->_pdf->word_wrap ($texto, $l_max, $attr);
+        }
+        else {
+            return array();
+        }
     }
     
     /**
@@ -359,9 +424,11 @@ class MECON_PDF {
      * @return int
      * @access public
      */
-    function getWidth($orientacion = 'portrait')
+    function getWidth($pagina = null, $orientacion = null)
     {
-         switch (strtolower($orientacion)) {
+        if(is_null($orientacion))
+            $orientacion = $this->getOrientation($pagina);
+        switch (strtolower($orientacion)) {
             case 'landscape':
                 $width = $this->_config['Yf'] - $this->_config['Yi'];
                 break;
@@ -380,9 +447,11 @@ class MECON_PDF {
      * @return int
      * @access public
      */
-    function getHeight($orientacion = 'portrait')
+    function getHeight($pagina = null, $orientacion = null)
     {
-         switch (strtolower($orientacion)) {
+        if(is_null($orientacion))
+            $orientacion = $this->getOrientation($pagina);
+        switch (strtolower($orientacion)) {
             case 'landscape':
                 $height = $this->_config['Xf'] - $this->_config['Xi'];
                 break;