*/
class MECON_PDF_Texto extends MECON_PDF_Contenido {
+ /**
+ * Parrafos que componen el texto.
+ * @var array $parafos
+ * @access protected
+ */
+ var $_parrafos = array();
+
+ /**
+ * Estilos PDF para cada parrafo. Entre los estilos pdf se debe encontrar
+ * aquel que defina la alineacion 'align' => center, left o right
+ * @var array $estilos
+ * @access protected
+ */
+ var $_estilos = array();
+
+ /**
+ * Estilo estandar.
+ * @var array $estilo_defecto
+ * @access protected
+ */
+ var $_estilo_defecto = array (
+ 'font' => 'Helvetica-Bold',
+ 'height' => 8,
+ 'align' => 'left'
+ );
+
+ /**
+ * 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;
+
+ /**
+ * Class Constructor.
+ *
+ * @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.
+ *
+ * @return void
+ * @access public
+ */
+ function MECON_PDF_Texto($orientacion = null, $encabezado = true) {
+ $this->_orientacion = $orientacion;
+ $this->_encabezado = $encabezado;
+ }
+
+ /**
+ * 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 del texto al PDF.
+ *
+ * @param &Object $MARCO MECON_PDF_Marco
+ *
+ * @return void
+ * @access public
+ */
+ function toPDF(&$MARCO) {
+ $alto = $MARCO->espacioDisponible;
+ if ($alto <= 0 ) {
+ $this->_newPage($MARCO);
+ $alto = $MARCO->espacioDisponible;
+ }
+
+ $ancho_pagina = $MARCO->getWidth($MARCO->refPage(),$MARCO->getOrientation());
+ $orientacion = $MARCO->getOrientation();
+
+ for ($i=0; $i < count($this->_parrafos); $i++) {
+ if (@!$this->_estilos[$i]) {
+ $this->_estilos[$i] = $this->_estilo_defecto;
+ }
+
+ $txt = @$MARCO->wordWrap($this->_parrafos[$i], $ancho_pagina - 2,
+ $this->_estilos[$i]);
+
+ foreach ($txt as $t) {
+ $alto -= $this->_estilos[$i]['height'];
+ if ($alto <= 0)
+ {
+ $this->_newPage($MARCO);
+ $alto = $MARCO->espacioDisponible;
+ }
+
+ if (@$this->_estilos[$i]['align'] == 'center') {
+ $tam = @$MARCO->strlen($t, $this->_estilos[$i]);
+ $init = ($ancho_pagina - $tam) / 2;
+ }
+ elseif (@$this->_estilos[$i]['align'] == 'right') {
+ $tam = @$MARCO->strlen($t, $this->_estilos[$i]);
+ $init = $ancho_pagina - $tam + 1;
+ }
+ else {
+ $init = 0;
+ }
+
+
+ $MARCO->addText($init, $alto + 2,
+ $t, $this->_estilos[$i], null, $orientacion);
+
+
+ }
+ }
+ $MARCO->espacioDisponible = $alto;
+ }
+
+
+ /**
+ * Funcion que permite agregar parrafos al texto. Puede recibir un string
+ * con parrafos separados por \\n o un array con las mismas caracteristicas.
+ * Los estilos deben ser pasados dentro de un array, en donde a cada clave
+ * del array de contenido que se forme con el contenido le correspondera una
+ * clave del array de estilos. Existe la posibilidad de pasar solo un estilo
+ * y que este sea utilizado por todos los parrafos que se genere.
+ *
+ * @param mixed $cont Parrafos a agregar
+ * @param array $estilo Estilos de los parrafos.
+ *
+ * @access public
+ * @return void
+ */
+ function addContent($cont) {
+ if (is_string($cont)) {
+ $cont = split ("\n", $cont);
+ }
+ foreach ($cont as $c) {
+ //Me aseguro que lo que me pasen dentro del array de parrafos
+ //sean parrafos.
+ $c = split ("\n", $c);
+ foreach ($c as $tmp) {
+ if ($tmp) {
+ $this->_parrafos[] = $tmp;
+ }
+ else {
+ $this->_parrafos[] = ' ';
+ }
+ }
+ }
+ }
+
+ /**
+ * Funcion que permite remover parrafos del texto. Recibe el id del parrafo
+ * (posicion dentro del array de parrafos). Elimina tambien el estilo que
+ * este tiene asociado en el array de parrafos.
+ *
+ * @param int $pos Posicion del parrafo a eliminar.
+ *
+ * @access public
+ * @return void
+ */
+ function removeContent($pos) {
+ array_splice($this->_parrafos, $pos, 1);
+ array_splice($this->_estilos, $pos, 1);
+ }
+
+ /**
+ * Funcion que permite setear los parrafos al texto. Recibe el texto (array
+ * o string) a agregar y una posicion en donde en donde ponerlo (posicion
+ * del array de parrafos). Si no recibe un identificador del parrafo, borra
+ * el contenido actual y agrega solamente lo que se paso por parametro.
+ * Los estilos deben ser pasados dentro de un array, en donde a cada clave
+ * del array de contenido que se forme con el contenido le correspondera una
+ * clave del array de estilos. Existe la posibilidad de pasar solo un estilo
+ * y que este sea utilizado por todos los parrafos que se genere.
+ *
+ * @param int $pos Posicion del/los parrafo/s
+ * @param mixed $cont Parrafos a agregar
+ *
+ * @access public
+ * @return void
+ */
+ function setContent($pos, $cont) {
+ if (is_string($cont)) {
+ $cont = split ("\n", $cont);
+ }
+ foreach ($cont as $c) {
+ //Me aseguro que lo que me pasen dentro del array de parrafos
+ //sean parrafos.
+ $c = split ("\n", $c);
+ foreach ($c as $tmp) {
+ $parrafos[] = $tmp;
+ }
+ }
+ $tmp = array_slice ($this->_parrafos, 0, $pos);
+ $tmp = array_merge ($tmp, $parrafos, array_slice ($this->_parrafos,
+ $pos));
+ $this->_parrafos = $tmp;
+ }
+
+ /**
+ * Funcion que permite modificar los estilos de uno o mas parrafos.
+ *
+ * @param mixed $pos Array o int que identifique la posicion de los parrafos.
+ * @param array $estilo Array de estilos.
+ *
+ * @access public
+ * @return void
+ */
+ function updateEstilo($pos, $estilo) {
+ if (@$this->_estilos[$pos]) {
+ $this->_estilos[$pos] = array_merge($this->_estilos[$pos], $estilo);
+ }
+ else {
+ $this->setEstilo($pos, array_merge($this->_estilo_defecto, $estilo));
+ }
+ }
+
+ /**
+ * Funcion que permite eliminar los estilos de uno o mas parrafos.
+ *
+ * @param mixed $pos Array o int que identifique la posicion de los parrafos.
+ *
+ * @access public
+ * @return void
+ */
+ function removeEstilo($pos) {
+ array_splice($this->_estilos, $pos, 1);
+ }
+
+ /**
+ * Funcion que permite setear los estilos de uno o mas parrafos.
+ *
+ * @param mixed $pos Array o int que identifique la posicion de los parrafos.
+ * @param array $estilo Array de estilos.
+ *
+ * @access public
+ * @return void
+ */
+ function setEstilo($pos, $estilo) {
+ $this->_estilos[$pos] = $estilo;
+ }
+
+ /**
+ * Funcion que devuelve el numero de parrafos que hay cargados.
+ *
+ * @access public
+ * @return int
+ */
+ function cantParrafos() {
+ return count($this->_parrafos);
+ }
}
?>
\ No newline at end of file