------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/PDF/external/phppdflib.class.php'; /** * Liberia base para el manejo de pdf's. */ class MECON_PDF { /** * Libreria externa. * @var int $pdf * @access private */ var $_pdf; /** * Identificacion de la pagina actual * @var int $pagina_actual * @access private */ var $_pagina_actual; /** * Array de paginas. * @var array $paginas * @access private */ var $_paginas; /** * Class constructor. * * @return void * @access public */ function MECON_PDF() { $this->_pdf = new pdffile; } /** * Permite agregar nuevas paginas al pdf que se esta armando. * * @param string $pagina Tipo de pagina que se va a utilizar. * * @return void * @access public */ function newPage($pagina = "a4") { $this->_pagina_actual = $this->_pdf->new_page($pagina); $this->_paginas[] = $this->_pagina_actual; } /** * Funcion que genera el archivo y prepara los headers para que se envie. * * @return void * @access public */ function display() { header("Content-Disposition: filename=Doc.pdf"); header("Content-Type: application/pdf"); $temp = $this->toPDF(); header('Content-Length: ' . strlen($temp)); echo $temp; } /** * Funcion que devuelve el PDF. * * @return string * @access public */ function toPDF() { return $this->_pdf->generate(); } /** * Funcion que permite agregar texto a una pagina. * * @param int $X $X * @param int $Y $Y * @param string $texto $texto * @param int $estilo $estilo * @param int $pag Numero de pagina virtual. * * @return void * @access public */ function addText($X, $Y, $texto, $estilo = '', $pag = null) { $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo); } /** * Funcion que permite agregar un rectangulo a una pagina. * * @param int $Xi $Xi * @param int $Yi $Yi * @param int $Xf $Xf * @param int $Yf $Yf * @param long $estilo $estilo * @param int $pag Numero de pagina virtual. * * @return void * @access public */ function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) { $this->_pdf->draw_rectangle($Xi, $Yi, $Xf, $Yf, $this->refPage($pag), $estilo); } /** * Funcion que permite agregar una linea a una pagina. * * @param int $Xi $Xi * @param int $Yi $Yi * @param int $Xf $Xf * @param int $Yf $Yf * @param int $estilo $estilo * @param int $pag Numero de pagina virtual. * * @return void * @access public */ function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) { $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), $this->refPage($pag),$estilo); } /** * Funcion que permite agregar una imagen JPG a una pagina. * * @param string $archivo Path completo del archivo imagen. * @param int $X Posicion Horizontal. * @param int $Y Posixion vertical. * @param int $pag Numero de pagina virtual. * @param string $formato Formato del archivo (Extension). * * @return void * @access public */ function addImage($archivo, $X, $Y, $pag = null, $formato = null) { $formato = strtolower($formato); switch ($formato) { case 'jpg': $fh = fopen($archivo, "r"); $filedata = fread($fh, filesize($archivo)); fclose($fh); $image = $this->_pdf->jfif_embed($filedata); $this->_pdf->image_place($image, $Y, $X, $this->refPage($pag)); break; } } /** * Funcion que wrappea una linea. * * @param strgin $texto Texto que quiere wrappearse. * @param int $l_max Largo maximo del texto. * @param array $attr Atributos del texto. * * @return string * @access public */ function wrapLine($texto, $l_max, $attr) { return $this->_pdf->wrap_line ($texto, $l_max, $attr); } /** * Funcion que wrappea una linea. * * @param strgin $texto Texto que quiere wrappearse. * @param int $l_max Largo maximo del texto. * @param array $attr Atributos del texto. * * @return string * @access public */ function wordWrap($texto, $l_max, $attr) { return $this->_pdf->word_wrap ($texto, $l_max, $attr); } /** * Funcion que calcula cuanto va a ocupar cierto texto segun su formato en * una pagina. * * @param strgin $texto Texto que quiere medirse. * @param array $attr Atributos del texto. * * @return int * @access public */ function strlen($texto, $attr = '') { return $this->_pdf->strlen($texto, $attr); } /** * Funcion que devuelve la cantidad de paginas que contiene el documento. * * @return int * @access public */ function countPages() { return count($this->_paginas); } /** * Funcion que devuelve el numero de la pagina actual. * * @param mixed $id Identificador de la pagina. * * @return int * @access public */ function numPage($id = null) { $id = ($id) ? $id : $this->_pagina_actual; return (array_search($id, $this->_paginas)) + 1; } /** * Funcion que devuelve la referencia de una pagina vitual. Si no se pasa * nada utilizo la actual. * * @param int $pag Numero de pagina. * * @return int * @access public */ function refPage($pag = null) { return $pag ? $this->_paginas[$pag - 1] : $this->_pagina_actual; } /** * Funcion que devuelve el array de paginas * * @return array * @access public */ function getPages() { return $this->_paginas; } } ?>