X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/53dea79e14a592c07d0211cb7a7d93949c231fe1..f82ac09838f49891a683ca0cf345adf06b5e75f9:/lib/MECON/PDF.php diff --git a/lib/MECON/PDF.php b/lib/MECON/PDF.php index 08250ec..b88e8a0 100644 --- a/lib/MECON/PDF.php +++ b/lib/MECON/PDF.php @@ -30,6 +30,13 @@ require_once 'MECON/PDF/external/phppdflib.class.php'; * Liberia base para el manejo de pdf's. */ class MECON_PDF { + + /** + * Configuracion + * @var arary $config + * @access protected + */ + var $config; /** * Libreria externa. @@ -55,12 +62,16 @@ class MECON_PDF { /** * Class constructor. * + * @param string $tam Tipo de hoja + * * @return void * @access public */ - function MECON_PDF() + function MECON_PDF($tam = "a4") { $this->_pdf = new pdffile; + $this->config = include 'MECON/PDF/medidas.php'; + $this->config = $this->config[$tam]; } /** @@ -110,12 +121,27 @@ class MECON_PDF { * @param string $texto $texto * @param int $estilo $estilo * @param int $pag Numero de pagina virtual. + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addText($X, $Y, $texto, $estilo = '', $pag = null) + function addText($X, $Y, $texto, $estilo = '', $pag = null, $transformacion = + '') { + $x = $X; + $y = $Y; + switch (strtolower($transformacion)) { + case 'portrait': + $X = $this->_portraitX($x,$y); + $Y = $this->_portraitY($x,$y); + break; + case 'landscape': + $X = $this->_landscapeX($x,$y); + $Y = $this->_landscapeY($x,$y); + $estilo['rotation'] = 90; + break; + } $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo); } @@ -128,13 +154,33 @@ class MECON_PDF { * @param int $Yf $Yf * @param long $estilo $estilo * @param int $pag Numero de pagina virtual. + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) + function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null, + $transformacion = 'portrait') { - $this->_pdf->draw_rectangle($Xi, $Yi, $Xf, $Yf, $this->refPage($pag), $estilo); + $xi = $Xi; + $yi = $Yi; + $xf = $Xf; + $yf = $Yf; + switch (strtolower($transformacion)) { + case 'portrait': + $Xi = $this->_portraitX($xi,$yi); + $Yi = $this->_portraitY($xi,$yi); + $Xf = $this->_portraitX($xf,$yf); + $Yf = $this->_portraitY($xf,$yf); + break; + case 'landscape': + $Xi = $this->_landscapeX($xi,$yi); + $Yi = $this->_landscapeY($xi,$yi); + $Xf = $this->_landscapeX($xf,$yf); + $Yf = $this->_landscapeY($xf,$yf); + break; + } + $this->_pdf->draw_rectangle($Yi, $Xi, $Yf, $Xf, $this->refPage($pag), $estilo); } /** @@ -146,13 +192,33 @@ class MECON_PDF { * @param int $Yf $Yf * @param int $estilo $estilo * @param int $pag Numero de pagina virtual. + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) + function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null, + $transformacion = 'portrait') { - $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), + $xi = $Xi; + $yi = $Yi; + $xf = $Xf; + $yf = $Yf; + switch (strtolower($transformacion)) { + case 'portrait': + $Xi = $this->_portraitX($xi,$yi); + $Yi = $this->_portraitY($xi,$yi); + $Xf = $this->_portraitX($xf,$yf); + $Yf = $this->_portraitY($xf,$yf); + break; + case 'landscape': + $Xi = $this->_landscapeX($xi,$yi); + $Yi = $this->_landscapeY($xi,$yi); + $Xf = $this->_landscapeX($xf,$yf); + $Yf = $this->_landscapeY($xf,$yf); + break; + } + $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), $this->refPage($pag),$estilo); } @@ -164,11 +230,25 @@ class MECON_PDF { * @param int $Y Posixion vertical. * @param int $pag Numero de pagina virtual. * @param string $formato Formato del archivo (Extension). + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addImage($archivo, $X, $Y, $pag = null, $formato = null) { + function addImage($archivo, $X, $Y, $pag = null, $formato = null, + $transformacion = 'portrait') { + $x = $X; + $y = $Y; + switch (strtolower($transformacion)) { + case 'portrait': + $X = $this->_portraitX($x,$y); + $Y = $this->_portraitY($x,$y); + break; + case 'landscape': + $X = $this->_landscapeX($x,$y); + $Y = $this->_landscapeY($x,$y); + break; + } $formato = strtolower($formato); switch ($formato) { case 'jpg': @@ -196,6 +276,20 @@ class MECON_PDF { 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. @@ -256,5 +350,102 @@ class MECON_PDF { function getPages() { return $this->_paginas; } + + /** + * Funcion que devuelve el ancho de la pagina. + * + * @param string $orientacion Orientacion de la pagina. + * + * @return int + * @access public + */ + function getWidth($orientacion = 'portrait') + { + switch (strtolower($orientacion)) { + case 'landscape': + $width = $this->config['Yf'] - $this->config['Yi']; + break; + default: + $width = $this->config['Xf'] - $this->config['Xi']; + } + return $width; + + } + + /** + * Funcion que devuelve el alto de la pagina. + * + * @param string $orientacion Orientacion de la pagina. + * + * @return int + * @access public + */ + function getHeight($orientacion = 'portrait') + { + switch (strtolower($orientacion)) { + case 'landscape': + $height = $this->config['Xf'] - $this->config['Xi']; + break; + default: + $height = $this->config['Yf'] - $this->config['Yi']; + } + return $height; + } + + /** + * Funcion que devuelve la rotacion y traslacion para landscape. Variable X. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _landscapeX($x, $y) + { + return -$y + $this->config['Xf']; + } + + /** + * Funcion que devuelve la rotacion y traslacion para landscape. Variable Y. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _landscapeY($x, $y) + { + return $x + $this->config['Yi']; + } + + /** + * Funcion que devuelve la traslacion para portrait. Variable X. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _portraitX($x, $y) + { + return $x + $this->config['Xi']; + } + + /** + * Funcion que devuelve la traslacion para portrait. Variable Y. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _portraitY($x, $y) + { + return $y + $this->config['Yi']; + } } ?> \ No newline at end of file