]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/PDF/HeaderDefecto.php
BugFix.
[mecon/meconlib.git] / lib / MECON / PDF / HeaderDefecto.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: mar abr 27 12:25:05 ART 2004
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'MECON/PDF/Header.php';
28
29 /**
30  * Libreria de header por defecto en PDF.
31  */
32 class MECON_PDF_HeaderDefecto extends MECON_PDF_Header {
33     /**
34      * Configuración del encabezado. Solamente lo que hace al tamaño y
35      * orientación pasados por parametro en el constructor.
36      * @var array $config
37      * @access protected
38      */
39     var $_config = null;
40
41     /**
42      * Logo.
43      * @var string $logo
44      * @access public
45      */
46     var $logo; 
47
48     /**
49      * Paginador.
50      * @var bool $paginador
51      * @access public 
52      */
53     var $paginador = true;
54
55     /**
56      * Fecha. Si es true se pone la fecha del servidor, si es false no se pone
57      * nada, en caso contrario se pone lo que haya en esta variable.
58      * @var mixed $fecha
59      * @access public
60      */
61     var $fecha = true;
62     
63     /**
64      * Seccion.
65      * @var string $seccion
66      * @access public 
67      */
68     var $seccion = '';
69
70     /**
71      * SubSeccion.
72      * @var string $subseccion
73      * @access public 
74      */
75     var $subseccion = 'Ministerio de Economia';
76         
77     /**
78      * Class Constructor.
79      *
80      * @param string $tam Tamaño de las hojas.
81      * @param string $ori Orientacion de las hojaz (portrait o landscape).
82      *
83      * @return void           
84      * @access public         
85      */
86     function MECON_PDF_HeaderDefecto($tam = "a4", $ori = "portrait") {
87         $tmp = include 'MECON/PDF/HeaderDefecto/medidas.php' ; 
88         $this->_config = $tmp[$tam][$ori]['encabezado'];
89
90         //Ver en donde poner esto
91         if (@$this->_config['logo']['path']) {
92             $this->logo = $this->_config['logo']['path'];
93         }
94     }
95
96     /**
97      * Funcion que agrega el contenido del encabezado al PDF.
98      *
99      * @param &Object $MARCO MECON_PDF_Marco.
100      *
101      * @return void
102      * @access public
103      */
104     function toPdf(&$MARCO) {
105         $this->_addLogo($MARCO);
106         $this->_addSeccion($MARCO);
107         $this->_addSubseccion($MARCO);
108         $this->_addPager($MARCO);
109         $this->_addDate($MARCO);
110         $this->_addHeaderRectangle($MARCO);
111     }
112
113     /**
114      * Devuelve el espacio (altura) que ocupa el encabezado.
115      *
116      * @return int
117      * @access public
118      */
119     function getAltura() {
120         return $this->_config['Yi'];
121     }
122
123     /**
124      * Funcion que agrega el logo al encabezado de una pagina.
125      *
126      * @param &Object $MARCO MECON_PDF_Marco.
127      *
128      * @return void
129      * @access protected
130      */
131     function _addLogo(&$MARCO) {
132         if ($this->logo) {
133             $MARCO->addImage($this->logo, $this->_config['logo']['X'],
134                     $this->_config['logo']['Y'], null, 'jpg');
135         }
136     }
137
138     /**
139      * Funcion que agrega la seccion al encabezado de una pagina.
140      *
141      * @return void
142      * @param &Object $MARCO MECON_PDF_Marco.
143      *
144      * @access protected
145      */
146     function _addSeccion(&$MARCO) {
147         if ($this->seccion) {
148             $tmp = $MARCO->strlen($this->seccion, $this->_config['seccion']);
149             $tmp2 = $this->_config['linea2']['Xi'] - $this->_config['linea1']['Xi'];
150             if ($tmp >= $tmp2) {
151                 $this->seccion = $MARCO->wrapLine ($this->seccion, $tmp2,
152                         $this->_config['seccion']);
153                 $tmp = $MARCO->strlen($this->seccion, $this->_config['seccion']);
154             }
155             $init = $this->_config['linea1']['Xi'] + ( $this->_config['linea2']['Xi'] 
156                     - $this->_config['linea1']['Xi'] - $tmp) / 2; 
157             $MARCO->addText($init, $this->_config['seccion']['Y'], $this->seccion,
158                     $this->_config['seccion']);
159         }
160     }
161    
162     /**
163      * Funcion que agrega la subseccion al encabezado de una pagina.
164      *
165      * @return void
166      * @param &Object $MARCO MECON_PDF_Marco.
167      *
168      * @access protected
169      */
170     function _addSubSeccion(&$MARCO) {
171         if ($this->subseccion) {
172             $tmp = $MARCO->strlen($this->subseccion, $this->_config['subseccion']);
173             $tmp2 = $this->_config['linea2']['Xi'] - $this->_config['linea1']['Xi'];
174             if ($tmp >= $tmp2) {
175                 $this->subseccion = $MARCO->wrapLine ($this->subseccion, $tmp2,
176                         $this->_config['subseccion']);
177                 $tmp = $MARCO->strlen($this->subseccion, $this->_config['subseccion']);
178             }
179             $init = $this->_config['linea1']['Xi'] + ( $this->_config['linea2']['Xi'] 
180                     - $this->_config['linea1']['Xi'] - $tmp) / 2; 
181             $MARCO->addText($init, $this->_config['subseccion']['Y'], $this->subseccion, 
182                     $this->_config['subseccion']);
183         }
184     }
185
186     /**
187      * Funcion que agrega el paginador al encabezado de una pagina.
188      *
189      * @return void
190      * @param &Object $MARCO MECON_PDF_Marco.
191      *
192      * @access protected
193      */
194     function _addPager(&$MARCO) {
195         if ($this->paginador) {
196             $txt = 'Página '.$MARCO->numPage().' de '.
197                 $MARCO->countPages();
198             $tmp = $MARCO->strlen($txt, $this->_config['paginador']);
199             $init = $this->_config['linea2']['Xi'] + ( $this->_config['Xf'] 
200                     - $this->_config['linea2']['Xi'] - $tmp) / 2; 
201             $MARCO->addText($init, $this->_config['paginador']['Y'], $txt, 
202                     $this->_config['paginador']);
203         }
204     }
205     
206     /**
207      * Funcion que permite agregar la fecha al encabezado de una pagina.
208      *
209      * @return void
210      * @param &Object $MARCO MECON_PDF_Marco.
211      *
212      * @access protected
213      */
214     function _addDate(&$MARCO) {
215         if ($this->fecha) {
216             if (is_a($this->fecha, 'Date')) {
217                 $this->fecha = $this->fecha->format("%d/%m/%Y");
218             }
219             elseif ($this->fecha === true) {
220                 $this->fecha = date("d/m/Y");
221             }
222             $tmp = $MARCO->strlen($this->fecha, $this->_config['fecha']);
223             $init = $this->_config['linea2']['Xi'] + ( $this->_config['Xf'] 
224                     - $this->_config['linea2']['Xi'] - $tmp) / 2; 
225             $MARCO->addText($init, $this->_config['fecha']['Y'], $this->fecha,
226                     $this->_config['fecha']);
227         }
228     }
229     
230     /**
231      * Funcion que arma el recuadro del encabezado de las paginas.
232      * 
233      * @return void
234      * @param &Object $MARCO MECON_PDF_Marco.
235      *
236      * @access protected
237      */
238     function _addHeaderRectangle(&$MARCO) {
239         //Armo el recuadro
240         $MARCO->addRectangle ($this->_config['Xi'], $this->_config['Yi'], 
241                 $this->_config['Xf'], $this->_config['Yf'], '');
242         $MARCO->addLine($this->_config['linea1']['Xi'], 
243                 $this->_config['linea1']['Yi'], $this->_config['linea1']['Xf'], 
244                 $this->_config['linea1']['Yf'], '');
245         $MARCO->addLine($this->_config['linea2']['Xi'], 
246                 $this->_config['linea2']['Yi'], $this->_config['linea2']['Xf'], 
247                 $this->_config['linea2']['Yf'], '');
248     }
249 }
250 ?>