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