------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/PDF.php'; require_once 'MECON/HTML/Tabla.php'; /** * Libreria que crea un marco estandar para los pdfs. */ class MECON_PDF_Marco extends MECON_HTML_Tabla { /** * Objeto MECON_PDF * @var Object MECON_PDF * @access protected */ var $_pdf; /** * Archivo de configuracion de medidas * @var array $conf * @access protected */ var $_conf = array (); /** * Tamanio de las paginas. * @var string $tamanio * @access protected */ var $_tamanio = "a4"; /** * Orientacion (portrait o landscape). * @var sting $orientacion * @access protected */ var $_orientacion = "portrait"; /** * Logo. * @var string $logo * @access public */ var $logo = '/home/mmarrese/public_html/meconlib/www/images/pdf_logo.jpg'; //@FIXME Ponener el path del logo por defecto /** * Paginador. * @var bool $paginador * @access public */ var $paginador = true; /** * Fecha. Si es true se pone la fecha del servidor, si es false no se pone * nada, en caso contrario se pone lo que haya en esta variable. * @var mixed $fecha * @access public */ var $fecha = true; /** * Seccion. * @var string $seccion * @access public */ var $seccion = ''; /** * SubSeccion. * @var string $subseccion * @access public */ var $subseccion = 'Ministerio de Economia'; /** * Titulo. * @var string $string * @access public */ var $titulo = true; /** * SubTitulo. * @var string $subtitulo * @access public */ var $subtitulo = true; /** * Class constructor. * * @param string $tam Tamanio de las hojas. * @param string $ori Orientacion de las hojaz (portrait o landscape). * * @return void * @access public */ function MECON_PDF_Marco($tam = "a4", $ori = "portrait") { $this->_pdf =& new MECON_PDF; $this->_tamanio = $tam; $this->_orientacion = $ori; $this->_conf = include 'MECON/PDF/Marco/medidas.php' ; $this->_conf = $this->_conf[$tam][$ori]; } /** * Funcion que agrega el logo al encabezado de una pagina. * * @return void * @access protected */ function _addLogo() { $conf = $this->_conf['encabezado']; if ($this->logo) { $this->_pdf->addImage($this->logo, $conf['logo']['X'], $conf['logo']['Y'], null, 'jpg'); } } /** * Funcion que agrega la seccion al encabezado de una pagina. * * @return void * @access protected */ function _addSeccion() { $conf = $this->_conf['encabezado']; if ($this->seccion) { $tmp = $this->_pdf->strlen($this->seccion, $conf['seccion']); $tmp2 = $conf['linea2']['Xi'] - $conf['linea1']['Xi']; if ($tmp >= $tmp2) { $this->seccion = $this->_pdf->wrapLine ($this->seccion, $tmp2, $conf['seccion']); $tmp = $this->_pdf->strlen($this->seccion, $conf['seccion']); } $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] - $conf['linea1']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['seccion']['Y'], $this->seccion, $conf['seccion']); } } /** * Funcion que agrega la subseccion al encabezado de una pagina. * * @return void * @access protected */ function _addSubSeccion() { $conf = $this->_conf['encabezado']; if ($this->subseccion) { $tmp = $this->_pdf->strlen($this->subseccion, $conf['subseccion']); $tmp2 = $conf['linea2']['Xi'] - $conf['linea1']['Xi']; if ($tmp >= $tmp2) { $this->subseccion = $this->_pdf->wrapLine ($this->subseccion, $tmp2, $conf['subseccion']); $tmp = $this->_pdf->strlen($this->subseccion, $conf['subseccion']); } $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] - $conf['linea1']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['subseccion']['Y'], $this->subseccion, $conf['subseccion']); } } /** * Funcion que agrega el paginador al encabezado de una pagina. * * @return void * @access protected */ function _addPager() { $conf = $this->_conf['encabezado']; if ($this->paginador) { $txt = 'Pagina '.$this->_pdf->numPage().' de '. $this->_pdf->countPages(); $tmp = $this->_pdf->strlen($txt, $conf['paginador']); $init = $conf['linea2']['Xi'] + ( $conf['Xf'] - $conf['linea2']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['paginador']['Y'], $txt, $conf['paginador']); } } /** * Funcion que permite agregar la fecha al encabezado de una pagina. * * @return void * @access protected */ function _addDate() { $conf = $this->_conf['encabezado']; if ($this->fecha) { if ($this->fecha === true) { $this->fecha = date("d/m/Y"); } $tmp = $this->_pdf->strlen($this->fecha, $conf['fecha']); $init = $conf['linea2']['Xi'] + ( $conf['Xf'] - $conf['linea2']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['fecha']['Y'], $this->fecha, $conf['fecha']); } } /** * Funcion que arma el recuadro del encabezado de las paginas. * * @return void * @access protected */ function _addHeaderRectangle() { $conf = $this->_conf['encabezado']; //Armo el recuadro $this->_pdf->addRectangle ($conf['Yi'], $conf['Xi'], $conf['Yf'], $conf['Xf']); $this->_pdf->addLine($conf['linea1']['Xi'], $conf['linea1']['Yi'], $conf['linea1']['Xf'], $conf['linea1']['Yf']); $this->_pdf->addLine($conf['linea2']['Xi'], $conf['linea2']['Yi'], $conf['linea2']['Xf'], $conf['linea2']['Yf']); } /** * Funcion que permite agregar el titulo a una pagina. * * @return void * @access protected */ function _addTitle() { $conf = $this->_conf['titulo']; if ($this->titulo) { $tmp = $this->_pdf->strlen($this->titulo, $conf); $tmp2 = $this->_conf['Xf'] + abs($this->_conf['Xi']); if ($tmp >= $tmp2) { $this->titulo = $this->_pdf->wrapLine ($this->titulo, $tmp2, $conf); $tmp = $this->_pdf->strlen($this->titulo, $conf); } $init = $this->_conf['Xi'] + ($tmp2 - $tmp) / 2; $this->_pdf->addText($init, $conf['Y'], $this->titulo, $conf); } } /** * Funcion que permite agregar el subtitulo a una pagina. * * @return void * @access protected */ function _addSubTitle() { $conf = $this->_conf['subtitulo']; if ($this->subtitulo) { $tmp = $this->_pdf->strlen($this->subtitulo, $conf); $tmp2 = $this->_conf['Xf'] + abs($this->_conf['Xi']); if ($tmp >= $tmp2) { $this->subtitulo = $this->_pdf->wrapLine ($this->subtitulo, $tmp2, $conf); $tmp = $this->_pdf->strlen($this->subtitulo, $conf); } $init = $this->_conf['Xi'] + ($tmp2 - $tmp) / 2; $this->_pdf->addText($init, $conf['Y'], $this->subtitulo, $conf); } } /** * Funcion que agrega la informacion del marco a la pagina actual. * * @param bool $title Muetra o no el titulo. * @param bool $subtitle Muestra o no el subtitulo. * * @return void * @access public */ function buildPage($title = true, $subtitle = true) { $this->_addLogo(); $this->_addSeccion(); $this->_addSubseccion(); $this->_addPager(); $this->_addDate(); $this->_addHeaderRectangle(); if ($title) { $this->_addTitle(); } if ($subtitle) { $this->_addSubTitle(); } } } ?>