]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/PDF/Marco.php
8d7097613ec73adb7812b9390bb80a21fb87bd5d
[mecon/meconlib.git] / lib / MECON / PDF / Marco.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: Fri Oct 24 16:34:11 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'MECON/PDF.php';
28 require_once 'MECON/HTML/Tabla.php';
29
30 /**
31  * Libreria que crea un marco estandar para los pdfs.
32  */
33 class MECON_PDF_Marco extends MECON_HTML_Tabla {
34
35     /**
36      * Objeto MECON_PDF
37      * @var Object MECON_PDF
38      * @access protected
39      */
40     var $_pdf;
41     
42     /**
43      * Archivo de configuracion de medidas
44      * @var array $conf
45      * @access protected
46      */
47     var $_conf = array ();
48
49     /**
50      * Tamanio de las paginas.
51      * @var string $tamanio
52      * @access protected
53      */
54     var $_tamanio = "a4";
55
56     /**
57      * Orientacion (portrait o landscape).
58      * @var sting $orientacion
59      * @access protected
60      */
61     var $_orientacion = "portrait";   
62     
63     /**
64      * Logo.
65      * @var string $logo
66      * @access public
67      */
68     var $logo = '/home/mmarrese/public_html/meconlib/www/images/pdf_logo.jpg'; 
69     //@FIXME Ponener el path del logo por defecto
70
71     /**
72      * Paginador.
73      * @var bool $paginador
74      * @access public 
75      */
76     var $paginador = true;
77
78     /**
79      * Fecha. Si es true se pone la fecha del servidor, si es false no se pone
80      * nada, en caso contrario se pone lo que haya en esta variable.
81      * @var mixed $fecha
82      * @access public
83      */
84     var $fecha = true;
85     
86     /**
87      * Seccion.
88      * @var string $seccion
89      * @access public 
90      */
91     var $seccion = '';
92
93     /**
94      * SubSeccion.
95      * @var string $subseccion
96      * @access public 
97      */
98     var $subseccion = 'Ministerio de Economia';
99
100     /**
101      * Titulo.
102      * @var string $string
103      * @access public 
104      */
105     var $titulo = true;
106
107     /**
108      * SubTitulo.
109      * @var string $subtitulo
110      * @access public 
111      */
112     var $subtitulo = true;
113
114     /**
115      * Class constructor.
116      *
117      * @param string $tam Tamanio de las hojas.
118      * @param string $ori Orientacion de las hojaz (portrait o landscape).
119      *
120      * @return void
121      * @access public
122      */
123     function MECON_PDF_Marco($tam = "a4", $ori = "portrait") {
124         $this->_pdf =& new MECON_PDF;
125         $this->_tamanio = $tam;
126         $this->_orientacion = $ori;
127         $this->_conf = include 'MECON/PDF/Marco/medidas.php' ; 
128         $this->_conf = $this->_conf[$tam][$ori];
129     }
130
131     /**
132      * Funcion que agrega el logo al encabezado de una pagina.
133      *
134      * @return void
135      * @access protected
136      */
137     function _addLogo() {
138         $conf = $this->_conf['encabezado'];
139         if ($this->logo) {
140             $this->_pdf->addImage($this->logo, $conf['logo']['X'],
141                     $conf['logo']['Y'], null, 'jpg');
142         }
143     }
144
145     /**
146      * Funcion que agrega la seccion al encabezado de una pagina.
147      *
148      * @return void
149      * @access protected
150      */
151     function _addSeccion() {
152         $conf = $this->_conf['encabezado'];
153         if ($this->seccion) {
154             $tmp = $this->_pdf->strlen($this->seccion, $conf['seccion']);
155             $tmp2 = $conf['linea2']['Xi'] - $conf['linea1']['Xi'];
156             if ($tmp >= $tmp2) {
157                 $this->seccion = $this->_pdf->wrapLine ($this->seccion, $tmp2,
158                         $conf['seccion']);
159                 $tmp = $this->_pdf->strlen($this->seccion, $conf['seccion']);
160             }
161             $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] 
162                     - $conf['linea1']['Xi'] - $tmp) / 2; 
163             $this->_pdf->addText($init, $conf['seccion']['Y'], $this->seccion, $conf['seccion']);
164         }
165     }
166    
167     /**
168      * Funcion que agrega la subseccion al encabezado de una pagina.
169      *
170      * @return void
171      * @access protected
172      */
173     function _addSubSeccion() {
174         $conf = $this->_conf['encabezado'];
175         if ($this->subseccion) {
176             $tmp = $this->_pdf->strlen($this->subseccion, $conf['subseccion']);
177             $tmp2 = $conf['linea2']['Xi'] - $conf['linea1']['Xi'];
178             if ($tmp >= $tmp2) {
179                 $this->subseccion = $this->_pdf->wrapLine ($this->subseccion, $tmp2,
180                         $conf['subseccion']);
181                 $tmp = $this->_pdf->strlen($this->subseccion, $conf['subseccion']);
182             }
183             $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] 
184                     - $conf['linea1']['Xi'] - $tmp) / 2; 
185             $this->_pdf->addText($init, $conf['subseccion']['Y'], $this->subseccion, 
186                     $conf['subseccion']);
187         }
188     }
189
190     /**
191      * Funcion que agrega el paginador al encabezado de una pagina.
192      *
193      * @return void
194      * @access protected
195      */
196     function _addPager() {
197         $conf = $this->_conf['encabezado'];
198         if ($this->paginador) {
199             $txt = 'Pagina '.$this->_pdf->numPage().' de '.
200                 $this->_pdf->countPages();
201             $tmp = $this->_pdf->strlen($txt, $conf['paginador']);
202             $init = $conf['linea2']['Xi'] + ( $conf['Xf'] 
203                     - $conf['linea2']['Xi'] - $tmp) / 2; 
204             $this->_pdf->addText($init, $conf['paginador']['Y'], $txt, 
205                     $conf['paginador']);
206         }
207     }
208     
209     /**
210      * Funcion que permite agregar la fecha al encabezado de una pagina.
211      *
212      * @return void
213      * @access protected
214      */
215     function _addDate() {
216         $conf = $this->_conf['encabezado'];
217         if ($this->fecha) {
218             if ($this->fecha === true) {
219                 $this->fecha = date("d/m/Y");
220             }
221             $tmp = $this->_pdf->strlen($this->fecha, $conf['fecha']);
222             $init = $conf['linea2']['Xi'] + ( $conf['Xf'] 
223                     - $conf['linea2']['Xi'] - $tmp) / 2; 
224             $this->_pdf->addText($init, $conf['fecha']['Y'], $this->fecha,
225                     $conf['fecha']);
226         }
227     }
228     
229     /**
230      * Funcion que arma el recuadro del encabezado de las paginas.
231      * 
232      * @return void
233      * @access protected
234      */
235     function _addHeaderRectangle() {
236         $conf = $this->_conf['encabezado'];
237         //Armo el recuadro
238         $this->_pdf->addRectangle ($conf['Yi'], $conf['Xi'], $conf['Yf'], 
239                     $conf['Xf']);
240         $this->_pdf->addLine($conf['linea1']['Xi'], $conf['linea1']['Yi'], 
241                 $conf['linea1']['Xf'], $conf['linea1']['Yf']);
242         $this->_pdf->addLine($conf['linea2']['Xi'], $conf['linea2']['Yi'], 
243                 $conf['linea2']['Xf'], $conf['linea2']['Yf']);
244     }
245     
246     /**
247      * Funcion que permite agregar el titulo a una pagina.
248      *
249      * @return void
250      * @access protected
251      */
252     function _addTitle() {
253         $conf = $this->_conf['titulo'];
254         if ($this->titulo) {
255             $tmp = $this->_pdf->strlen($this->titulo, $conf);
256             $tmp2 = $this->_conf['Xf'] + abs($this->_conf['Xi']);
257             if ($tmp >= $tmp2) {
258                 $this->titulo = $this->_pdf->wrapLine ($this->titulo, $tmp2,
259                         $conf);
260                 $tmp = $this->_pdf->strlen($this->titulo, $conf);
261             }
262             $init = $this->_conf['Xi'] + ($tmp2 - $tmp) / 2; 
263             $this->_pdf->addText($init, $conf['Y'], $this->titulo, 
264                     $conf);
265         }
266     }
267
268     /**
269      * Funcion que permite agregar el subtitulo a una pagina.
270      *
271      * @return void
272      * @access protected
273      */
274     function _addSubTitle() {
275         $conf = $this->_conf['subtitulo'];
276         if ($this->subtitulo) {
277             $tmp = $this->_pdf->strlen($this->subtitulo, $conf);
278             $tmp2 = $this->_conf['Xf'] + abs($this->_conf['Xi']);
279             if ($tmp >= $tmp2) {
280                 $this->subtitulo = $this->_pdf->wrapLine ($this->subtitulo, $tmp2,
281                         $conf);
282                 $tmp = $this->_pdf->strlen($this->subtitulo, $conf);
283             }
284             $init = $this->_conf['Xi'] + ($tmp2 - $tmp) / 2; 
285             $this->_pdf->addText($init, $conf['Y'], $this->subtitulo, 
286                     $conf);
287         }
288     }
289     
290     /**
291      * Funcion que agrega la informacion del marco a la pagina actual.      
292      *
293      * @param bool $title Muetra o no el titulo.
294      * @param bool $subtitle Muestra o no el subtitulo.
295      *
296      * @return void
297      * @access public
298      */
299     function buildPage($title = true, $subtitle = true) {
300         $this->_addLogo();
301         $this->_addSeccion();
302         $this->_addSubseccion();
303         $this->_addPager();
304         $this->_addDate();
305         $this->_addHeaderRectangle();
306         if ($title) {
307             $this->_addTitle();
308         }
309         if ($subtitle) {
310             $this->_addSubTitle();
311         }
312     }
313 }
314 ?>