X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/67d328b236b5531e94572af215772303e022bcfd..257f6d7dbd82d87a8c311211559bc637785f7b5c:/lib/MECON/PDF/Marco.php diff --git a/lib/MECON/PDF/Marco.php b/lib/MECON/PDF/Marco.php index 79705ee..5f9ae55 100644 --- a/lib/MECON/PDF/Marco.php +++ b/lib/MECON/PDF/Marco.php @@ -25,6 +25,7 @@ $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/PDF.php'; +require_once 'MECON/PDF/Separador.php'; /** * 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 { /** - * 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 - @ @var array $contenido + * @var array $contenido * @access protected */ var $_contenido = array(); @@ -127,11 +121,25 @@ class MECON_PDF_Marco extends MECON_PDF { * @access public */ function MECON_PDF_Marco($tam = "a4", $ori = "portrait") { - $this->MECON_PDF($tam); + $this->MECON_PDF($tam, $ori); $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 = $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']; @@ -146,6 +154,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. + * @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. @@ -155,10 +164,11 @@ class MECON_PDF_Marco extends MECON_PDF { * @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) { - parent::newPage($pagina); + parent::newPage($pagina, $orientacion); + $this->_resetConf(); if ($encabezado) { $this->espacioDisponible = $this->_config['encabezado']['Yi'] - 27; if ($this->countPages() === 1) { @@ -167,15 +177,15 @@ class MECON_PDF_Marco extends MECON_PDF { } } if (!is_null($seccion)) { - $this->excepciones[$this->countPages()]['seccion'] = $seccion; + $this->_excepciones[$this->numPage()]['seccion'] = $seccion; } if (!is_null($subseccion)) { - $this->excepciones[$this->countPages()]['subseccion'] = $subseccion; + $this->_excepciones[$this->numPage()]['subseccion'] = $subseccion; } } else { $this->espacioDisponible = $this->_config['encabezado']['Yf']; - $this->excepciones[$this->countPages()]['nova'] = true; + $this->_excepciones[$this->countPages()]['nova'] = true; } } @@ -187,10 +197,11 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addLogo() { + $this->_resetConf(); $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 +212,7 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addSeccion() { + $this->_resetConf(); $conf = $this->_config['encabezado']; if ($this->seccion) { $tmp = $this->strlen($this->seccion, $conf['seccion']); @@ -213,7 +225,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, - $conf['seccion'], null, $this->orientacion); + $conf['seccion']); } } @@ -224,6 +236,7 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addSubSeccion() { + $this->_resetConf(); $conf = $this->_config['encabezado']; if ($this->subseccion) { $tmp = $this->strlen($this->subseccion, $conf['subseccion']); @@ -236,7 +249,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, - $conf['subseccion'], null, $this->orientacion); + $conf['subseccion']); } } @@ -247,6 +260,7 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addPager() { + $this->_resetConf(); $conf = $this->_config['encabezado']; if ($this->paginador) { $txt = 'Pagina '.$this->numPage().' de '. @@ -255,7 +269,7 @@ class MECON_PDF_Marco extends MECON_PDF { $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,17 +280,20 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addDate() { + $this->_resetConf(); $conf = $this->_config['encabezado']; if ($this->fecha) { - //@TODO Ver si es un objeto DATE - if ($this->fecha === true) { + if (is_a($this->fecha, 'Date')) { + $this->fecha = $this->fecha->format("%d/%m/%Y"); + } + elseif ($this->fecha === true) { $this->fecha = date("d/m/Y"); } $tmp = $this->strlen($this->fecha, $conf['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']); } } @@ -287,18 +304,17 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addHeaderRectangle() { + $this->_resetConf(); $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'], - $conf['linea1']['Xf'], $conf['linea1']['Yf'], '', null, - $this->orientacion); + $conf['linea1']['Xf'], $conf['linea1']['Yf'], ''); $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 permite agregar el titulo a una pagina. * @@ -306,10 +322,11 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addTitle() { + $this->_resetConf(); $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); @@ -317,7 +334,7 @@ class MECON_PDF_Marco extends MECON_PDF { } $init = ($tmp2 - $tmp) / 2; $this->addText($init, $conf['Y'], $this->titulo, - $conf, null, $this->orientacion); + $conf); } } @@ -328,10 +345,11 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addSubTitle() { + $this->_resetConf(); $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); @@ -339,7 +357,7 @@ class MECON_PDF_Marco extends MECON_PDF { } $init = ($tmp2 - $tmp) / 2; $this->addText($init, $conf['Y'], $this->subtitulo, - $conf, null, $this->orientacion); + $conf); } } @@ -353,6 +371,7 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _buildHeader($title = true, $subtitle = true) { + $this->_resetConf(); $this->_addLogo(); $this->_addSeccion(); $this->_addSubseccion(); @@ -374,6 +393,7 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _buildContent() { + $this->_resetConf(); if ($this->_contenido) { foreach ($this->_contenido as $cont) { $cont->toPDF($this); @@ -392,7 +412,6 @@ class MECON_PDF_Marco extends MECON_PDF { * @access public */ function toPDF() { - $this->newPage($this->tamanio); $this->_buildContent(); if ($this->getPages()) { $t = true; @@ -434,11 +453,12 @@ class MECON_PDF_Marco extends MECON_PDF { * @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; } } -?> \ No newline at end of file +?>