]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/PDF/Marco.php
Agrego la posibilidad de poder cambiarle el nombre por defecto al pdf generado por...
[mecon/meconlib.git] / lib / MECON / PDF / Marco.php
index 610b98d41dbfedeeeb161c3ea2f8df79afe5cc20..42fc4cbe76f12a4ed85c39501106a2d3dbd9f90f 100644 (file)
@@ -25,6 +25,7 @@ $Id$
 -----------------------------------------------------------------------------*/
 
 require_once 'MECON/PDF.php';
 -----------------------------------------------------------------------------*/
 
 require_once 'MECON/PDF.php';
+require_once 'MECON/PDF/Separador.php';
 
 /**
  * Libreria que crea un marco estandar para los pdfs.
 
 /**
  * Libreria que crea un marco estandar para los pdfs.
@@ -32,22 +33,15 @@ require_once 'MECON/PDF.php';
 class MECON_PDF_Marco extends MECON_PDF {
 
     /**
 class MECON_PDF_Marco extends MECON_PDF {
 
     /**
-     * Tamanio de las paginas.
-     * @var string $tamanio
-     * @access public   
-     */
-    var $tamanio = "a4";
-
-    /**
-     * Orientacion (portrait o landscape).
-     * @var sting $orientacion
-     * @access public
+     * Objeto MECON_PDF_Separador que se utilizara por defecto.
+     * @var Object $separador
+     * @access protected
      */
      */
-    var $orientacion = "portrait";   
+    var $_separador_defecto;
 
     /**
      * Array de objetos MECON_PDF_Contenido
 
     /**
      * Array de objetos MECON_PDF_Contenido
-     @ @var array $contenido
+     * @var array $contenido
      * @access protected
      */
     var $_contenido = array();
      * @access protected
      */
     var $_contenido = array();
@@ -122,16 +116,31 @@ class MECON_PDF_Marco extends MECON_PDF {
      *
      * @param string $tam Tamanio de las hojas.
      * @param string $ori Orientacion de las hojaz (portrait o landscape).
      *
      * @param string $tam Tamanio de las hojas.
      * @param string $ori Orientacion de las hojaz (portrait o landscape).
+     * @param string $nom Nombre del archivo.
      *
      * @return void
      * @access public
      */
      *
      * @return void
      * @access public
      */
-    function MECON_PDF_Marco($tam = "a4", $ori = "portrait") {
-        $this->MECON_PDF($tam);
+    function MECON_PDF_Marco($tam = "a4", $ori = "portrait", $nom = 'Doc.pdf') {
+        $this->MECON_PDF($tam, $ori, $nom);
         $this->tamanio = $tam;
         $this->tamanio = $tam;
-        $this->orientacion = $ori;
+        $this->_resetConf();
+        $this->_separador_defecto =& new MECON_PDF_Separador();
+    }
+
+    /**
+     *  Funcion que setea los valores de conf para poder poner las cabeceras
+     *  @access private
+     *  @param int $pagina numero del la pagina de la que debe setear loa
+     *  valores
+     *  @return void
+     */
+    function _resetConf($pagina = null)
+    {
+        if(is_null($pagina));
+            $pagina = $this->numPage();
         $tmp = include 'MECON/PDF/Marco/medidas.php' ; 
         $tmp = include 'MECON/PDF/Marco/medidas.php' ; 
-        $tmp = $tmp[$tam][$ori];
+        $tmp = $tmp[$this->tamanio][$this->getOrientation($pagina)];
         $tmp['Xi'] = $this->_config['Xi'];
         $tmp['Yi'] = $this->_config['Yi'];
         $tmp['Xf'] = $this->_config['Xf'];
         $tmp['Xi'] = $this->_config['Xi'];
         $tmp['Yi'] = $this->_config['Yi'];
         $tmp['Xf'] = $this->_config['Xf'];
@@ -146,6 +155,7 @@ class MECON_PDF_Marco extends MECON_PDF {
      * Permite agregar nuevas paginas al pdf que se esta armando.
      *
      * @param string $pagina Tipo de pagina que se va a utilizar.
      * 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 hoja
      * @param bool $encabezado Indica si el encabezado debe ponerse en la
      * pagina.
      * @param string $seccion Seccion del encabezado para esta pagina nueva.
      * @param bool $encabezado Indica si el encabezado debe ponerse en la
      * pagina.
      * @param string $seccion Seccion del encabezado para esta pagina nueva.
@@ -155,10 +165,11 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @return void
      * @access public
      */
      * @return void
      * @access public
      */
-    function newPage($pagina = 'a4', $encabezado = true, $seccion = null, $subseccion =
+    function newPage($pagina = 'a4', $orientacion = null, $encabezado = true, $seccion = null, $subseccion =
             null)
     {   
             null)
     {   
-        parent::newPage($pagina);
+        parent::newPage($pagina, $orientacion);
+        $this->_resetConf();
         if ($encabezado) {
             $this->espacioDisponible = $this->_config['encabezado']['Yi'] - 27;
             if ($this->countPages() === 1) {
         if ($encabezado) {
             $this->espacioDisponible = $this->_config['encabezado']['Yi'] - 27;
             if ($this->countPages() === 1) {
@@ -167,15 +178,15 @@ class MECON_PDF_Marco extends MECON_PDF {
                 }
             }
             if (!is_null($seccion)) {
                 }
             }
             if (!is_null($seccion)) {
-                $this->excepciones[$this->countPages()]['seccion'] = $seccion;
+                $this->_excepciones[$this->numPage()]['seccion'] = $seccion;
             }
             if (!is_null($subseccion)) {
             }
             if (!is_null($subseccion)) {
-                $this->excepciones[$this->countPages()]['subseccion'] = $subseccion;
+                $this->_excepciones[$this->numPage()]['subseccion'] = $subseccion;
             }
         }
         else {
             $this->espacioDisponible = $this->_config['encabezado']['Yf'];
             }
         }
         else {
             $this->espacioDisponible = $this->_config['encabezado']['Yf'];
-            $this->excepciones[$this->countPages()]['nova'] = true;
+            $this->_excepciones[$this->countPages()]['nova'] = true;
             
         }
     }
             
         }
     }
@@ -187,10 +198,11 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addLogo() {
      * @access protected
      */
     function _addLogo() {
+        $this->_resetConf();
         $conf = $this->_config['encabezado'];
         if ($this->logo) {
             $this->addImage($this->logo, $conf['logo']['X'],
         $conf = $this->_config['encabezado'];
         if ($this->logo) {
             $this->addImage($this->logo, $conf['logo']['X'],
-                    $conf['logo']['Y'], null, 'jpg', $this->orientacion);
+                    $conf['logo']['Y'], null, 'jpg');
         }
     }
 
         }
     }
 
@@ -201,6 +213,7 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addSeccion() {
      * @access protected
      */
     function _addSeccion() {
+        $this->_resetConf();
         $conf = $this->_config['encabezado'];
         if ($this->seccion) {
             $tmp = $this->strlen($this->seccion, $conf['seccion']);
         $conf = $this->_config['encabezado'];
         if ($this->seccion) {
             $tmp = $this->strlen($this->seccion, $conf['seccion']);
@@ -213,7 +226,7 @@ class MECON_PDF_Marco extends MECON_PDF {
             $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] 
                     - $conf['linea1']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['seccion']['Y'], $this->seccion,
             $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] 
                     - $conf['linea1']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['seccion']['Y'], $this->seccion,
-                    $conf['seccion'], null, $this->orientacion);
+                    $conf['seccion']);
         }
     }
    
         }
     }
    
@@ -224,6 +237,7 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addSubSeccion() {
      * @access protected
      */
     function _addSubSeccion() {
+        $this->_resetConf();
         $conf = $this->_config['encabezado'];
         if ($this->subseccion) {
             $tmp = $this->strlen($this->subseccion, $conf['subseccion']);
         $conf = $this->_config['encabezado'];
         if ($this->subseccion) {
             $tmp = $this->strlen($this->subseccion, $conf['subseccion']);
@@ -236,7 +250,7 @@ class MECON_PDF_Marco extends MECON_PDF {
             $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] 
                     - $conf['linea1']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['subseccion']['Y'], $this->subseccion, 
             $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] 
                     - $conf['linea1']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['subseccion']['Y'], $this->subseccion, 
-                    $conf['subseccion'], null, $this->orientacion);
+                    $conf['subseccion']);
         }
     }
 
         }
     }
 
@@ -247,15 +261,16 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addPager() {
      * @access protected
      */
     function _addPager() {
+        $this->_resetConf();
         $conf = $this->_config['encabezado'];
         if ($this->paginador) {
         $conf = $this->_config['encabezado'];
         if ($this->paginador) {
-            $txt = 'Pagina '.$this->numPage().' de '.
+            $txt = 'Pรกgina '.$this->numPage().' de '.
                 $this->countPages();
             $tmp = $this->strlen($txt, $conf['paginador']);
             $init = $conf['linea2']['Xi'] + ( $conf['Xf'] 
                     - $conf['linea2']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['paginador']['Y'], $txt, 
                 $this->countPages();
             $tmp = $this->strlen($txt, $conf['paginador']);
             $init = $conf['linea2']['Xi'] + ( $conf['Xf'] 
                     - $conf['linea2']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['paginador']['Y'], $txt, 
-                    $conf['paginador'], null, $this->orientacion);
+                    $conf['paginador']);
         }
     }
     
         }
     }
     
@@ -266,6 +281,7 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addDate() {
      * @access protected
      */
     function _addDate() {
+        $this->_resetConf();
         $conf = $this->_config['encabezado'];
         if ($this->fecha) {
             if (is_a($this->fecha, 'Date')) {
         $conf = $this->_config['encabezado'];
         if ($this->fecha) {
             if (is_a($this->fecha, 'Date')) {
@@ -278,7 +294,7 @@ class MECON_PDF_Marco extends MECON_PDF {
             $init = $conf['linea2']['Xi'] + ( $conf['Xf'] 
                     - $conf['linea2']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['fecha']['Y'], $this->fecha,
             $init = $conf['linea2']['Xi'] + ( $conf['Xf'] 
                     - $conf['linea2']['Xi'] - $tmp) / 2; 
             $this->addText($init, $conf['fecha']['Y'], $this->fecha,
-                    $conf['fecha'], null, $this->orientacion);
+                    $conf['fecha']);
         }
     }
     
         }
     }
     
@@ -289,28 +305,17 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addHeaderRectangle() {
      * @access protected
      */
     function _addHeaderRectangle() {
+        $this->_resetConf();
         $conf = $this->_config['encabezado'];
         //Armo el recuadro
         $this->addRectangle ($conf['Xi'], $conf['Yi'], $conf['Xf'], 
         $conf = $this->_config['encabezado'];
         //Armo el recuadro
         $this->addRectangle ($conf['Xi'], $conf['Yi'], $conf['Xf'], 
-                    $conf['Yf'], '', null, $this->orientacion);
+                    $conf['Yf'], '');
         $this->addLine($conf['linea1']['Xi'], $conf['linea1']['Yi'], 
         $this->addLine($conf['linea1']['Xi'], $conf['linea1']['Yi'], 
-                $conf['linea1']['Xf'], $conf['linea1']['Yf'], '', null,
-                $this->orientacion);
+                $conf['linea1']['Xf'], $conf['linea1']['Yf'], '');
         $this->addLine($conf['linea2']['Xi'], $conf['linea2']['Yi'], 
         $this->addLine($conf['linea2']['Xi'], $conf['linea2']['Yi'], 
-                $conf['linea2']['Xf'], $conf['linea2']['Yf'], '', null,
-                $this->orientacion);
+                $conf['linea2']['Xf'], $conf['linea2']['Yf'], '');
     }
 
     }
 
-    /*
-     *  Funcion que obtiene el ancho de la pagina
-     *
-     *  @return ancho de la pagina
-     *  @access public
-     */
-     function getWidth() {
-       return parent::getWidth($this->orientacion);
-     }
-    
     /**
      * Funcion que permite agregar el titulo a una pagina.
      *
     /**
      * Funcion que permite agregar el titulo a una pagina.
      *
@@ -318,10 +323,11 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addTitle() {
      * @access protected
      */
     function _addTitle() {
+        $this->_resetConf();
         $conf = $this->_config['titulo'];
         if ($this->titulo) {
             $tmp = $this->strlen($this->titulo, $conf);
         $conf = $this->_config['titulo'];
         if ($this->titulo) {
             $tmp = $this->strlen($this->titulo, $conf);
-            $tmp2 = $this->getWidth($this->orientacion);
+            $tmp2 = $this->getWidth();
             if ($tmp >= $tmp2) {
                 $this->titulo = $this->wrapLine ($this->titulo, $tmp2,
                         $conf);
             if ($tmp >= $tmp2) {
                 $this->titulo = $this->wrapLine ($this->titulo, $tmp2,
                         $conf);
@@ -329,7 +335,7 @@ class MECON_PDF_Marco extends MECON_PDF {
             }
             $init = ($tmp2 - $tmp) / 2; 
             $this->addText($init, $conf['Y'], $this->titulo, 
             }
             $init = ($tmp2 - $tmp) / 2; 
             $this->addText($init, $conf['Y'], $this->titulo, 
-                    $conf, null, $this->orientacion);
+                    $conf);
         }
     }
 
         }
     }
 
@@ -340,10 +346,11 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _addSubTitle() {
      * @access protected
      */
     function _addSubTitle() {
+        $this->_resetConf();
         $conf = $this->_config['subtitulo'];
         if ($this->subtitulo) {
             $tmp = $this->strlen($this->subtitulo, $conf);
         $conf = $this->_config['subtitulo'];
         if ($this->subtitulo) {
             $tmp = $this->strlen($this->subtitulo, $conf);
-            $tmp2 = $this->getWidth($this->orientacion);
+            $tmp2 = $this->getWidth();
             if ($tmp >= $tmp2) {
                 $this->subtitulo = $this->wrapLine ($this->subtitulo, $tmp2,
                         $conf);
             if ($tmp >= $tmp2) {
                 $this->subtitulo = $this->wrapLine ($this->subtitulo, $tmp2,
                         $conf);
@@ -351,7 +358,7 @@ class MECON_PDF_Marco extends MECON_PDF {
             }
             $init = ($tmp2 - $tmp) / 2; 
             $this->addText($init, $conf['Y'], $this->subtitulo, 
             }
             $init = ($tmp2 - $tmp) / 2; 
             $this->addText($init, $conf['Y'], $this->subtitulo, 
-                    $conf, null, $this->orientacion);
+                    $conf);
         }
     }
     
         }
     }
     
@@ -365,6 +372,7 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _buildHeader($title = true, $subtitle = true) {
      * @access protected
      */
     function _buildHeader($title = true, $subtitle = true) {
+        $this->_resetConf();
         $this->_addLogo();
         $this->_addSeccion();
         $this->_addSubseccion();
         $this->_addLogo();
         $this->_addSeccion();
         $this->_addSubseccion();
@@ -386,6 +394,7 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access protected
      */
     function _buildContent() {
      * @access protected
      */
     function _buildContent() {
+        $this->_resetConf();
         if ($this->_contenido) {
             foreach ($this->_contenido as $cont) {
                 $cont->toPDF($this); 
         if ($this->_contenido) {
             foreach ($this->_contenido as $cont) {
                 $cont->toPDF($this); 
@@ -404,7 +413,6 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access public
      */
     function toPDF() {
      * @access public
      */
     function toPDF() {
-        $this->newPage($this->tamanio);
         $this->_buildContent();
         if ($this->getPages()) {
             $t = true;
         $this->_buildContent();
         if ($this->getPages()) {
             $t = true;
@@ -446,9 +454,10 @@ class MECON_PDF_Marco extends MECON_PDF {
      * @access public
      */
     function addContent($contenido, $separador = true) {
      * @access public
      */
     function addContent($contenido, $separador = true) {
-        if ($separador && $this->getPages()) {
-            //@TODO Agregar el separador por defecto.
-            //$this->contenido[] = $separador_defecto
+        //Me aseguro de poner el separador siempre y cuando no sea el primer
+        //objeto de la primer pagina.
+        if ($separador && $this->_contenido) {
+            $this->_contenido[] = $this->_separador_defecto;
         }
         $this->_contenido[] = $contenido;
     }
         }
         $this->_contenido[] = $contenido;
     }