*/
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'
+ );
+
+ /**
+ * 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 ) {
+ $MARCO->newPage($MARCO->tamanio);
+ $alto = $MARCO->espacioDisponible;
+ }
+ $ancho_pagina = $MARCO->getWidth($MARCO->orientacion);
+
+ 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)
+ {
+ $MARCO->newPage($MARCO->tamanio);
+ $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, $MARCO->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) {
+ $this->_parrafos[] = $tmp;
+ }
+ }
+ }
+
+ /**
+ * 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) {
+ $this->_estilos[$pos] = array_merge($this->_estilos[$pos], $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;
+ }
}
?>
\ No newline at end of file
require_once 'MECON/HTML/Tabla.php';
require_once 'MECON/PDF/Marco.php';
require_once 'MECON/PDF/Tabla.php';
+require_once 'MECON/PDF/Texto.php';
$TABLA =& new MECON_HTML_Tabla();
'3erCabecera'), 'cabecera');
$TABLA->addRow(array ('1erColumna', '2daColumna para que la corete',
'3erColumna'), 'clara');
-for ($i=0; $i<60; $i++) {
+for ($i=0; $i<20; $i++) {
if ($i == 50) {
$TABLA->addRow(array ('1erColumna para gonzalo que lo mira por tv desde su casa en ayacucho 1593. Aunque ahora que lo pienso me estoy equivocando', '2daColumna 1erColumna para gonzalo que lo mira por tv desde su casa en ayacucho 1593. Aunque ahora que lo pienso me estoy equivocando FILA 50', '3erColumna1erColumna para gonzalo que lo mira por tv desde su casa en ayacucho 1593. Aunque ahora que lo pienso me estoy equivocando'), 'comun');
}
$TABLA->updateCellAttributes(2,1, 'align="center"');
$TABLA->updateCellAttributes(2,2, 'align="right"');
-$PDF_MARCO =& new MECON_PDF_Marco ('a4', 'portrait');
+
+$PDF_TEXTO =& new MECON_PDF_Texto;
+
+$PDF_TEXTO->addContent(array (
+ "Texto a la izquierda",
+ "Texto al centro", "Texto a la derecha"));
+
+$PDF_TEXTO->setEstilo(0, array ('font' => 'Helvetica-Bold', 'height' => 8,
+ 'align' => 'left'));
+$PDF_TEXTO->setEstilo(1, array ('font' => 'Helvetica-Bold', 'height' => 8,
+ 'align' => 'center'));
+$PDF_TEXTO->setEstilo(2, array ('font' => 'Helvetica-Bold', 'height' => 8,
+ 'align' => 'right'));
+
+$PDF_TEXTO->addContent("PARRAFO 1 -> Si se omite tamano, se suprime todo desde el desplazamiento hasta el final de la matriz. Si se especifica el tamano y es positivo, se suprimirán tantos elementos como se especifica. Si fuera negativo, el final de la porción eliminada estará a tantos elementos del final de la matriz. Truco: para eliminar todo desde el desplazamiento hasta el final de la matriz cuando también se especifica sustitucion,utilice como tamano.\nPARRAFO 2 ->Si se especifia la matriz de sustitucion, entonces los elementos suprimidos son reemplazados con los elementos de dicha matriz. Si los valores de desplazamiento y tamano son tales que nada es borrado, los elementos de la matriz sustitucion se insertarán en la posición indicada por el desplazamiento. Truco: si sólo se va a sustituir algo por un elemento nada más, no hace falta poner alrededor del mismo, salvo que dicho elemento sea una matriz en sí mismo.");
+
+
+$PDF_TEXTO2 =& new MECON_PDF_Texto;
+$PDF_TEXTO2->addContent("El jefe de Gobierno porteño, Aníbal Ibarra, advirtió que su gestión no otorgará beneficios a los piqueteros que durante el fin de semana último ocuparon un predio en el barrio de Palermo.\n Si uno privilegia la situación de irregularidad, es que ponemos patas para arriba a toda la sociedad, enfatizó Ibarra, quien advirtió que no avalará situaciones de fuerza por sobre lo que hacen cientos de miles de ciudadanos que pagan sus créditos y que se anotan (en planes) para viviendas, esperando a veces durante muchos años.\n En declaraciones periodísticas, Ibarra remarcó que no se puede obtener una vivienda ni autorización para construir viviendas sobre la presión y mucho menos sobre una situación de ilegalidad.");
+$PDF_TEXTO2->setEstilo(1, array ('font' => 'Helvetica-Bold', 'height' => 8,
+ 'align' => 'center'));
+$PDF_TEXTO2->setEstilo(0, array ('font' => 'Helvetica-Bold', 'height' => 8,
+ 'align' => 'right'));
+
+//print '<PRE>MARTIN FIN </PRE>';
+
+$PDF_MARCO =& new MECON_PDF_Marco ('a4', 'landscape');
$PDF_MARCO->seccion = 'Prueba de la libreria de PDF\'s';
$PDF_MARCO->titulo = 'Alberto Giordano';
$PDF_MARCO->subtitulo = 'Filosofo Estilista, guacho pulenta si los hay';
$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA), false);
+$PDF_MARCO->addContent($PDF_TEXTO, false);
+$PDF_MARCO->addContent($PDF_TEXTO2, true);
+$PDF_MARCO->addContent($PDF_TEXTO2, true);
+$PDF_MARCO->addContent($PDF_TEXTO2, true);
+$PDF_MARCO->addContent(new MECON_PDF_Tabla ($TABLA), true);
$PDF_MARCO->display();