//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)) {
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);
$this->_contenidoToPdf($MARCO, $tam, $alto);
$alto = $MARCO->espacioDisponible;
}
+ //Seteo el espacio disponible en la pagina.
$MARCO->espacioDisponible = $alto - 2;
}
*/
function _contenidoToPdf(&$MARCO, $tam, $alto) {
$ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
- $orientacion = $MARCO->getOrientation();
-
+ //Obtengo las coordenadas del espacio disponible que se corresponde con
+ //el tamaño de la imagen.
switch ($this->_align) {
case 'left':
$coord['Xi'] = $tam['width'] + 2;
$coord['Yf'] = $alto + $tam['height'];
break;
}
-
+ //Por cada TEXTO agregado.
foreach ($this->_contenido as $TEXTO) {
$this->_textoToPdf($MARCO, $coord, $alto, $TEXTO);
}
* @access protected
*/
function _textoToPdf(&$MARCO, $coord, $alto, $TEXTO) {
- $cant_parrafos = $TEXTO->cantParrafos();
+ //Obtengo los parrafos y estilos del texto
$parrafos = $TEXTO->getParrafos();
- $estilos = $TEXTO->getEstilo();
- $estilo_defecto = $TEXTO->getEstiloDefecto();
+ $estilos = $TEXTO->getEstilo();
+ //Obtengo los limites escribibles al lado de la imagen
$ancho_texto = $coord['Xf'] - $coord['Xi'] - 2;
$alto_texto = $coord['Yf'];
+ //Obtengo el ancho total de la pagina
$ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
- $orientacion = $MARCO->getOrientation();
- for ($i=0; $i < $cant_parrafos; $i++) {
+ //Por cada parrafo
+ for ($i=0; $i < $TEXTO->cantParrafos(); $i++) {
+ //Veo si hay definido un estilo para el parrafo.
if (@!$estilos[$i]) {
- $estilos[$i] = $estilo_defecto;
+ $estilos[$i] = $TEXTO->getEstiloDefecto();
}
-
+ //Armo un array con el parrafo en donde cada componente es una linea
+ //que cumple con el ancho maximo permitido.
+ //Veo si el texto esta al lado de la imagen o por debajo de esta.
if ($alto_texto <= $coord['Yi'] - $estilos[$i]['height']) {
$txt = @$MARCO->wordWrap($parrafos[$i], $ancho_pagina - 2,
$estilos[$i]);
$txt = @$MARCO->wordWrap($parrafos[$i], $ancho_texto,
$estilos[$i]);
}
-
+ //Por cada linea
if (@$txt) {
while (count($txt)) {
$t = array_shift($txt);
$alto_texto -= $estilos[$i]['height'];
+ //Veo si el texto esta al lado de la imagen o por debajo de
+ //esta.
if ($alto_texto <= $coord['Yi'] - $estilos[$i]['height']) {
- //Tengo que escribir como si fuera texto normal
- //Junto los parrafos que me quedan y obtengo
+ //Veo si ya estaba escribiendo debajo de la imagen.
if (@!$tmp) {
$tmp = implode(' ', $txt);
-
$txt = @$MARCO->wordWrap($tmp, $ancho_pagina - 2,
$estilos[$i]);
$t = array_shift($txt);
-
$alto = $alto_texto;
}
else {
$alto -= $estilos[$i]['height'];
}
-
+ //Veo si hay que agragar una nueva pagina.
if ($alto <= 0) {
$this->_newPage($MARCO);
$alto = $MARCO->espacioDisponible;
}
-
+ //Calculo el X en donde debo comenzar a escribir segun
+ //la alineacion del texto.
if (@$estilos[$i]['align'] == 'center') {
$tam = @$MARCO->strlen($t, $estilos[$i]);
$init = ($ancho_pagina - $tam) / 2;
else {
$init = 0;
}
- $MARCO->addText($init, $alto + 2,
- $t, $estilos[$i], null, $orientacion);
+ $MARCO->addText($init, $alto + 2, $t, $estilos[$i],
+ null, $this->_orientacion);
}
else {
+ //Estoy escribiendo al lado de la imagen.
+ //Calculo el X en donde debo comenzar a escribir segun
+ //la alineacion del texto.
if (@$estilos[$i]['align'] == 'center') {
$tam = @$MARCO->strlen($t, $estilos[$i]);
$init = ($ancho_texto - $tam) / 2;
}
}
}
+ //Seteo el nuevo alto de la pagina.
$MARCO->espacioDisponible = $alto;
}