* Liberia base para el manejo de pdf's.
*/
class MECON_PDF {
+
+ /**
+ * Orientacion (portrait o landscape).
+ * @var sting $orientacion
+ * @access public
+ */
+ var $orientacion = "portrait";
+
+ /**
+ *
+ * Orientacion cambiada, indica la orientacion de la pagina cuando es
+ * distinto al comun
+ * @var array $orientacion_distinta
+ * @access protected
+ */
+ var $_orientacion_distinta = array();
+
+ /**
+ * Configuracion
+ * @var arary $config
+ * @access protected
+ */
+ var $_config = array ();
/**
* Libreria externa.
* @var int $pdf
- * @access private
+ * @access protected
*/
var $_pdf;
* @var array $paginas
* @access private
*/
- var $_paginas;
+ var $_paginas = array();
+
+ /**
+ * Nombre del archivo resultado para el display.
+ * @var sting $nombre
+ * @access private
+ */
+ var $_nombre;
/**
* Class constructor.
*
+ * @param string $tam Tipo de hoja
+ * @param string $ori Orientacion de las hojas (portrait o landscape).
+ * @param string $nombre Nombre del archivo PDF.
+ *
* @return void
* @access public
*/
- function MECON_PDF()
+ function MECON_PDF($tam = "a4", $ori = "portrait", $nombre = "Doc.pdf")
{
+ setlocale (LC_ALL, 'en_US');
+ $this->orientacion = $ori;
$this->_pdf = new pdffile;
+ $this->_config = include 'MECON/PDF/medidas.php';
+ $this->_config = $this->_config[$tam];
+ $this->_nombre = $nombre;
}
/**
* Permite agregar nuevas paginas al pdf que se esta armando.
*
* @param string $pagina Tipo de pagina que se va a utilizar.
+ * @param string $orientacion Orientacion de la pagina en particular.
*
* @return void
* @access public
*/
- function newPage($pagina = "a4")
+ function newPage($pagina = "a4", $orientacion = null)
{
$this->_pagina_actual = $this->_pdf->new_page($pagina);
$this->_paginas[] = $this->_pagina_actual;
+ if(!is_null($orientacion) && $orientacion != $this->orientacion)
+ $this->_orientacion_distinta[$this->numPage()] = $orientacion;
+ }
+
+ /**
+ * Funcion que retorna la orientacion de la pagina indicada.
+ * Si no se indica, toma la orientacion de la ultima pagina.
+ *
+ * @param int $pagina Numero de la pagina.
+ *
+ * @access public
+ * @return int
+ */
+ function getOrientation($pagina = null)
+ {
+ if(is_null($pagina))
+ $pagina = $this->numPage();
+
+ if(isset($this->_orientacion_distinta[$pagina]))
+ return $this->_orientacion_distinta[$pagina];
+ else
+ return $this->orientacion;
}
/**
*/
function display()
{
- header("Content-Disposition: filename=Doc.pdf");
+ header("Content-Disposition: filename=".$this->_nombre);
header("Content-Type: application/pdf");
$temp = $this->toPDF();
header('Content-Length: ' . strlen($temp));
* @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
+ = null) {
+ $x = $X;
+ $y = $Y;
+ if(is_null($transformacion))
+ $transformacion = $this->getOrientation($pag);
+ 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);
}
* @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 = null)
{
- $this->_pdf->draw_rectangle($Xi, $Yi, $Xf, $Yf, $this->refPage($pag), $estilo);
+ $xi = $Xi;
+ $yi = $Yi;
+ $xf = $Xf;
+ $yf = $Yf;
+ if(is_null($transformacion))
+ $transformacion = $this->getOrientation($pag);
+ 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);
}
/**
* @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 = null)
{
- $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf),
+ $xi = $Xi;
+ $yi = $Yi;
+ $xf = $Xf;
+ $yf = $Yf;
+ if(is_null($transformacion))
+ $transformacion = $this->getOrientation($pag);
+ 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);
}
/**
- * Funcion que permite agregar una imagen JPG a una pagina.
+ * Funcion que permite agregar una imagen JPG o PNG 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).
+ * @param string $transformacion Indica la orientacion de la pagina.
+ * @param array $param Parametros de la libreria.
*
* @return void
* @access public
*/
- function addImage($archivo, $X, $Y, $pag = null, $formato = null) {
+ function addImage($archivo, $X, $Y, $pag = null, $formato = null,
+ $transformacion = null, $param = array()) {
+ $x = $X;
+ $y = $Y;
+ if(is_null($transformacion))
+ $transformacion = $this->getOrientation($pag);
+ 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);
+ $param['rotation'] = 90;
+ break;
+ }
$formato = strtolower($formato);
+ $fh = fopen($archivo, "r");
+ $filedata = fread($fh, filesize($archivo));
+ fclose($fh);
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;
+ case 'png':
+ $image = $this->_pdf->png_embed($filedata);
break;
}
+ $this->_pdf->image_place($image, $Y, $X, $this->refPage($pag), $param);
}
/**
* @access public
*/
function wrapLine($texto, $l_max, $attr) {
- return $this->_pdf->wrap_line ($texto, $l_max, $attr);
+ //El if lo estoy haciendo porque en la funcion wordwrap de la libreria
+ //externa no tienen en cuenta que te pueden pasar un texto vacio a
+ //wrapear -> Amerita un mail a los autores.
+ if ($texto) {
+ return $this->_pdf->wrap_line ($texto, $l_max, $attr);
+ }
+ else {
+ return '';
+ }
}
/**
* @access public
*/
function wordWrap($texto, $l_max, $attr) {
- return $this->_pdf->word_wrap ($texto, $l_max, $attr);
+ //El if lo estoy haciendo porque en la funcion wordwrap de la libreria
+ //externa no tienen en cuenta que te pueden pasar un texto vacio a
+ //wrapear -> Amerita un mail a los autores.
+ if ($texto) {
+ return $this->_pdf->word_wrap ($texto, $l_max, $attr);
+ }
+ else {
+ return array();
+ }
}
/**
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($pagina = null, $orientacion = null)
+ {
+ if(is_null($orientacion))
+ $orientacion = $this->getOrientation($pagina);
+ 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($pagina = null, $orientacion = null)
+ {
+ if(is_null($orientacion))
+ $orientacion = $this->getOrientation($pagina);
+ 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'];
+ }
+
+ /**
+ * Funcion que devuelve el tamaƱo de una imagen.
+ *
+ * @param $oid Object id
+ */
+ function getImageSize($oid) {
+ return $this->get_image_size($oid);
+ }
}
?>
\ No newline at end of file