}
/**
- * 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 = null) {
+ $transformacion = null, $param = array()) {
$x = $X;
$y = $Y;
if(is_null($transformacion))
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);
}
/**
{
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
* Libreria de imagenes para PDF.
*/
class MECON_PDF_Imagen extends MECON_PDF_Contenido {
+
+ /**
+ * Imagen de Image_Transform.
+ * @var string $resource
+ * @access protected
+ */
+ var $_resource;
+ /**
+ * Alineacion de la imagen.
+ * @var string $align
+ * @access protected
+ */
+ var $_align;
+
+ /**
+ * Orientacion de las nuevas paginas
+ * @var string $orientacion
+ * @access protected
+ */
+ var $_orientacion;
+
+ /**
+ * Indica si el encabezado debe ir en la nuevas paginas.
+ * @var bool $encabezado
+ * @access protected
+ */
+ var $_encabezado;
+
+ /**
+ * Array de parametros que utiliza la libreria.
+ * @var array $param
+ * @access protected
+ */
+ var $_param;
+
+ /**
+ * Class Constructor
+ *
+ * @param string $resource Imagen de Image_Transform.
+ * @param string $align Alineacion de la imagen (left, center, right).
+ * @param string $orientacion Orientacion que tendran las nuevas paginas que
+ * esta clase genere.
+ * @param bool $encabezado Indica si las paginas nuevas que genere esta
+ * clase tendran el encabezado de MECON_PDF_Marco.
+ * @param array $param Parametros de la imagen.
+ *
+ * @return void
+ * @access public
+ */
+ function MECON_PDF_Imagen($resource = null, $align = "center", $orientacion =
+ null, $encabezado = true, $param = array()) {
+ $this->_resource = $resource;
+ $this->_align = $align;
+ $this->_orientacion = $orientacion;
+ $this->_encabezado = $encabezado;
+ $this->_param = $param;
+ }
+
+ /**
+ * Permite rotar la imagen n grados.
+ *
+ * @param int $grados Grados de rotación.
+ *
+ * @return mixed
+ * @access public
+ */
+ function rotar($grados) {
+ $this->_param['rotation'] = $grados;
+ }
+
+ /**
+ * Funcion que se encarga de crear las nuevas paginas.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco
+ *
+ * @return void
+ * @access protected
+ */
+ function _newPage(&$MARCO) {
+ $tmp = ($this->_orientacion) ? $this->_orientacion :
+ $MARCO->getOrientation();
+ $MARCO->newPage($MARCO->tamanio, $tmp, $this->_encabezado);
+ }
+
+ /**
+ * Funcion que agrega el contenido de la tabla que se este utilizando al
+ * PDF.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco
+ *
+ * @return void
+ * @access public
+ */
+ function toPDF(&$MARCO) {
+ //Obtengo el tamaño de la imagen
+ $tam['width'] = $this->_resource->getImageWidth();
+ $tam['height'] = $this->_resource->getImageHeight();
+
+ //Obtengo el espacio disponible en la pagina
+ $alto = $MARCO->espacioDisponible;
+
+ //Veo si tengo que crear una nueva pagina.
+ if ($alto <= 0 ) {
+ $this->_newPage($MARCO);
+ $alto = $MARCO->espacioDisponible;
+ }
+
+ //Obtengo los valores de la pagina
+ $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
+ $alto_pagina = $MARCO->getHeight($MARCO->refPage(),$MARCO->getOrientation());
+ $orientacion = $MARCO->getOrientation();
+
+ //Veo si me alcanza el tamaño para agregarlo en lo que me queda de la
+ //pagina (chequeando que no sea una pagina nueva)
+ if (($alto - $tam['height'] <= 0) && ($alto != $alto_pagina)) {
+ $this->_newPage($MARCO);
+ $alto = $MARCO->espacioDisponible;
+ }
+ //Veo si entra en el alto disponible
+ if ($alto - $tam['height'] <= 0) {
+ $this->_resource->scaleByY($alto);
+ }
+ //Veo si entra en el ancho disponible
+ if ($ancho_pagina <= $tam['width']) {
+ $this->_resource->scaleByX($anchoPagina);
+ }
+
+ //Obtego el nombre temporal
+ $tmp_path = tempnam('/tmp/', 'MECON_PDF_Images_');
+
+ //Salvo la imagen temporalmente
+ $this->_resource->save($tmp_path, 'png');
+
+ //Obtengo la posicion Y
+ $alto -= $tam['height'];
+
+ //Obtengo la posicion X
+ $X = $this->_X($MARCO, $tam['width']);
+
+ //Agrego la imagen
+ $MARCO->addImage($tmp_path, $X, $alto, null, 'png', $this->_orientacion,
+ $this->_param);
+
+ $MARCO->espacioDisponible = $alto - 2;
+ }
+
+ /**
+ * Permite obtener el valor X segun la alineacion.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco.
+ * @param int width Ancho de la imagen a agregar.
+ *
+ * @return int
+ * @access public
+ */
+ function _X(&$MARCO, $width) {
+ $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
+ switch ($this->_align) {
+ case 'left':
+ $X = 0;
+ break;
+ case 'center':
+ $X = ($ancho_pagina / 2) - ($width / 2);
+ break;
+ case 'right':
+ $X = $ancho_pagina - $width;
+ break;
+ }
+ return $X;
+ }
}
?>
\ No newline at end of file
--- /dev/null
+<?php
+require_once 'MECON/general.php';
+prepend_include_path('/home/mmarrese/public_html/meconlib/lib/');
+
+require_once 'MECON/PDF/Marco.php';
+require_once 'MECON/PDF/Texto.php';
+require_once 'MECON/PDF/Imagen.php';
+require_once 'Image/Transform.php';
+
+
+$img =& Image_Transform::factory('IM');
+
+$img->load('death.jpg');
+
+
+
+$orientacion = 'landscape';
+$encabezado = true;
+
+$param = array (
+// 'rotation' => '90'
+ );
+
+$PDF_MARCO =& new MECON_PDF_Marco ('a4', $orientacion);
+$PDF_IMAGEN =& new MECON_PDF_Imagen ($img, 'left', $orientacion, $encabezado,
+ $param);
+
+$PDF_TEXTO =& new MECON_PDF_TEXTO ($orientacion, $encabezado);
+$PDF_TEXTO->addContent (
+ 'TEXTO PRE IMAGEN asdddddddddddddddddddddddddddddddddddddddddddd asdddddddddddddddddddddd asddddddddddd'
+ );
+$PDF_MARCO->addContent($PDF_TEXTO, true);
+$PDF_MARCO->addContent($PDF_IMAGEN, true);
+$PDF_TEXTO =& new MECON_PDF_TEXTO ($orientacion, $encabezado);
+$PDF_TEXTO->addContent (
+ 'TEXTO POST IMAGEN asdddddddddddddddddddddddddddddddddddddddddddd asdddddddddddddddddddddd asddddddddddd'
+ );
+$PDF_MARCO->addContent($PDF_TEXTO, true);
+
+$PDF_MARCO->display();
+$img->free();
+exit;
+
+$img->rotate(90);
+
+?>