X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/e382460ebf1cf0a427b00ff0fc8b8bf923c5e37f..7ef61f7eebf93525862fd9b362dfd4c8ecf1c36b:/lib/MECON/PDF/Marco.php?ds=sidebyside diff --git a/lib/MECON/PDF/Marco.php b/lib/MECON/PDF/Marco.php index c9c4d8a..42fc4cb 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(); @@ -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 $nom Nombre del archivo. * * @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->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 +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. + * @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 +165,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 +178,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 +198,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 +213,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 +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, - $conf['seccion'], null, $this->orientacion); + $conf['seccion']); } } @@ -224,6 +237,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 +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, - $conf['subseccion'], null, $this->orientacion); + $conf['subseccion']); } } @@ -247,15 +261,16 @@ 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 '. + $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, - $conf['paginador'], null, $this->orientacion); + $conf['paginador']); } } @@ -266,6 +281,7 @@ class MECON_PDF_Marco extends MECON_PDF { * @access protected */ function _addDate() { + $this->_resetConf(); $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, - $conf['fecha'], null, $this->orientacion); + $conf['fecha']); } } @@ -289,28 +305,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 obtiene el ancho de la pagina - * - * @return ancho de la pagina - * @access public - */ - function getWidth() { - return parent::getWith($this->orientacion); - } - /** * Funcion que permite agregar el titulo a una pagina. * @@ -318,10 +323,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); @@ -329,7 +335,7 @@ class MECON_PDF_Marco extends MECON_PDF { } $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() { + $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); @@ -351,7 +358,7 @@ class MECON_PDF_Marco extends MECON_PDF { } $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) { + $this->_resetConf(); $this->_addLogo(); $this->_addSeccion(); $this->_addSubseccion(); @@ -386,6 +394,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); @@ -404,7 +413,6 @@ class MECON_PDF_Marco extends MECON_PDF { * @access public */ function toPDF() { - $this->newPage($this->tamanio); $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) { - 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; }