1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3 Ministerio de EconomÃa
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
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)
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.
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:12:31 2003
22 Autor: Gonzalo Merayo <gmeray@mecon.gov.ar>
23 -------------------------------------------------------------------------------
25 -----------------------------------------------------------------------------*/
27 require_once 'MECON/PDF/external/phppdflib.class.php';
30 * Liberia base para el manejo de pdf's.
42 * Identificacion de la pagina actual
43 * @var int $pagina_actual
63 $this->_pdf = new pdffile;
67 * Permite agregar nuevas paginas al pdf que se esta armando.
69 * @param string $pagina Tipo de pagina que se va a utilizar.
74 function newPage($pagina = "a4")
76 $this->_pagina_actual = $this->_pdf->new_page($pagina);
77 $this->_paginas[] = $this->_pagina_actual;
81 * Funcion que genera el archivo y prepara los headers para que se envie.
88 header("Content-Disposition: filename=Doc.pdf");
89 header("Content-Type: application/pdf");
90 $temp = $this->toPDF();
91 header('Content-Length: ' . strlen($temp));
96 * Funcion que devuelve el PDF.
102 return $this->_pdf->generate();
106 * Funcion que permite agregar texto a una pagina.
110 * @param string $texto $texto
111 * @param int $estilo $estilo
112 * @param int $pag Numero de pagina virtual.
117 function addText($X, $Y, $texto, $estilo = '', $pag = null)
119 $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo);
123 * Funcion que permite agregar un rectangulo a una pagina.
129 * @param long $estilo $estilo
130 * @param int $pag Numero de pagina virtual.
135 function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null)
137 $this->_pdf->draw_rectangle($Xi, $Yi, $Xf, $Yf, $this->refPage($pag), $estilo);
141 * Funcion que permite agregar una linea a una pagina.
147 * @param int $estilo $estilo
148 * @param int $pag Numero de pagina virtual.
153 function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null)
155 $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf),
156 $this->refPage($pag),$estilo);
160 * Funcion que permite agregar una imagen JPG a una pagina.
162 * @param string $archivo Path completo del archivo imagen.
163 * @param int $X Posicion Horizontal.
164 * @param int $Y Posixion vertical.
165 * @param int $pag Numero de pagina virtual.
166 * @param string $formato Formato del archivo (Extension).
171 function addImage($archivo, $X, $Y, $pag = null, $formato = null) {
172 $formato = strtolower($formato);
175 $fh = fopen($archivo, "r");
176 $filedata = fread($fh, filesize($archivo));
178 $image = $this->_pdf->jfif_embed($filedata);
179 $this->_pdf->image_place($image, $Y, $X,
180 $this->refPage($pag));
186 * Funcion que wrappea una linea.
188 * @param strgin $texto Texto que quiere wrappearse.
189 * @param int $l_max Largo maximo del texto.
190 * @param array $attr Atributos del texto.
195 function wrapLine($texto, $l_max, $attr) {
196 return $this->_pdf->wrap_line ($texto, $l_max, $attr);
200 * Funcion que wrappea una linea.
202 * @param strgin $texto Texto que quiere wrappearse.
203 * @param int $l_max Largo maximo del texto.
204 * @param array $attr Atributos del texto.
209 function wordWrap($texto, $l_max, $attr) {
210 return $this->_pdf->word_wrap ($texto, $l_max, $attr);
214 * Funcion que calcula cuanto va a ocupar cierto texto segun su formato en
217 * @param strgin $texto Texto que quiere medirse.
218 * @param array $attr Atributos del texto.
223 function strlen($texto, $attr = '') {
224 return $this->_pdf->strlen($texto, $attr);
228 * Funcion que devuelve la cantidad de paginas que contiene el documento.
233 function countPages() {
234 return count($this->_paginas);
238 * Funcion que devuelve el numero de la pagina actual.
240 * @param mixed $id Identificador de la pagina.
245 function numPage($id = null) {
246 $id = ($id) ? $id : $this->_pagina_actual;
247 return (array_search($id, $this->_paginas)) + 1;
251 * Funcion que devuelve la referencia de una pagina vitual. Si no se pasa
252 * nada utilizo la actual.
254 * @param int $pag Numero de pagina.
259 function refPage($pag = null) {
260 return $pag ? $this->_paginas[$pag - 1] :
261 $this->_pagina_actual;
265 * Funcion que devuelve el array de paginas
270 function getPages() {
271 return $this->_paginas;