*/
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;
+ 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($tam = "a4")
+ 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->_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));
* @return void
* @access public
*/
- function addText($X, $Y, $texto, $estilo = '', $pag = null, $transformacion =
- '')
- {
+ 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);
case 'landscape':
$X = $this->_landscapeX($x,$y);
$Y = $this->_landscapeY($x,$y);
- $estilo['rotation'] = 90;
+ @$estilo['rotation'] += 90;
break;
}
$this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo);
* @access public
*/
function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null,
- $transformacion = 'portrait')
+ $transformacion = null)
{
$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);
* @access public
*/
function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null,
- $transformacion = 'portrait')
+ $transformacion = null)
{
$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);
}
/**
- * 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 $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,
- $transformacion = 'portrait') {
+ $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);
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();
+ }
}
/**
* @return int
* @access public
*/
- function getWidth($orientacion = 'portrait')
+ function getWidth($pagina = null, $orientacion = null)
{
- switch (strtolower($orientacion)) {
+ if(is_null($orientacion))
+ $orientacion = $this->getOrientation($pagina);
+ switch (strtolower($orientacion)) {
case 'landscape':
- $width = $this->config['Yf'] - $this->config['Yi'];
+ $width = $this->_config['Yf'] - $this->_config['Yi'];
break;
default:
- $width = $this->config['Xf'] - $this->config['Xi'];
+ $width = $this->_config['Xf'] - $this->_config['Xi'];
}
return $width;
* @return int
* @access public
*/
- function getHeight($orientacion = 'portrait')
+ function getHeight($pagina = null, $orientacion = null)
{
- switch (strtolower($orientacion)) {
+ if(is_null($orientacion))
+ $orientacion = $this->getOrientation($pagina);
+ switch (strtolower($orientacion)) {
case 'landscape':
- $height = $this->config['Xf'] - $this->config['Xi'];
+ $height = $this->_config['Xf'] - $this->_config['Xi'];
break;
default:
- $height = $this->config['Yf'] - $this->config['Yi'];
+ $height = $this->_config['Yf'] - $this->_config['Yi'];
}
return $height;
}
*/
function _landscapeX($x, $y)
{
- return -$y + $this->config['Xf'];
+ return -$y + $this->_config['Xf'];
}
/**
*/
function _landscapeY($x, $y)
{
- return $x + $this->config['Yi'];
+ return $x + $this->_config['Yi'];
}
/**
*/
function _portraitX($x, $y)
{
- return $x + $this->config['Xi'];
+ return $x + $this->_config['Xi'];
}
/**
*/
function _portraitY($x, $y)
{
- return $y + $this->config['Yi'];
+ 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