From f82ac09838f49891a683ca0cf345adf06b5e75f9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Wed, 5 Nov 2003 22:14:54 +0000 Subject: [PATCH] Primera version de MECON_PDF, MECON_PDF_Marco y MECON_PDF_Tabla terminadas --- lib/MECON/PDF.php | 191 +++++++++++++++++- lib/MECON/PDF/Marco.php | 53 ++--- lib/MECON/PDF/Marco/medidas.php | 147 ++++++++++++-- lib/MECON/PDF/Tabla.php | 53 ++--- lib/MECON/PDF/medidas.php | 41 ++++ test/PDF/downs/down2 | 2 + test/PDF/downs/prueba_pdf.pdf | Bin 16389 -> 0 bytes test/PDF/prueba_pdf.php | 2 +- test/PDF/prueba_pdf2.php | 44 ++++ www/images/pdf_logo.gif | Bin 3214 -> 0 bytes www/images/pdf_logo.png | Bin 2429 -> 0 bytes www/images/pdf_logo_landscape.jpg | Bin 0 -> 1311 bytes .../{pdf_logo.jpg => pdf_logo_portrait.jpg} | Bin 13 files changed, 452 insertions(+), 81 deletions(-) create mode 100644 lib/MECON/PDF/medidas.php create mode 100755 test/PDF/downs/down2 delete mode 100644 test/PDF/downs/prueba_pdf.pdf create mode 100755 test/PDF/prueba_pdf2.php delete mode 100644 www/images/pdf_logo.gif delete mode 100644 www/images/pdf_logo.png create mode 100644 www/images/pdf_logo_landscape.jpg rename www/images/{pdf_logo.jpg => pdf_logo_portrait.jpg} (100%) diff --git a/lib/MECON/PDF.php b/lib/MECON/PDF.php index bbd2ed8..b88e8a0 100644 --- a/lib/MECON/PDF.php +++ b/lib/MECON/PDF.php @@ -30,6 +30,13 @@ require_once 'MECON/PDF/external/phppdflib.class.php'; * Liberia base para el manejo de pdf's. */ class MECON_PDF { + + /** + * Configuracion + * @var arary $config + * @access protected + */ + var $config; /** * Libreria externa. @@ -55,12 +62,16 @@ class MECON_PDF { /** * Class constructor. * + * @param string $tam Tipo de hoja + * * @return void * @access public */ - function MECON_PDF() + function MECON_PDF($tam = "a4") { $this->_pdf = new pdffile; + $this->config = include 'MECON/PDF/medidas.php'; + $this->config = $this->config[$tam]; } /** @@ -110,12 +121,27 @@ class MECON_PDF { * @param string $texto $texto * @param int $estilo $estilo * @param int $pag Numero de pagina virtual. + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addText($X, $Y, $texto, $estilo = '', $pag = null) + function addText($X, $Y, $texto, $estilo = '', $pag = null, $transformacion = + '') { + $x = $X; + $y = $Y; + switch (strtolower($transformacion)) { + case 'portrait': + $X = $this->_portraitX($x,$y); + $Y = $this->_portraitY($x,$y); + break; + case 'landscape': + $X = $this->_landscapeX($x,$y); + $Y = $this->_landscapeY($x,$y); + $estilo['rotation'] = 90; + break; + } $this->_pdf->draw_text($X, $Y, $texto, $this->refPage($pag), $estilo); } @@ -128,13 +154,33 @@ class MECON_PDF { * @param int $Yf $Yf * @param long $estilo $estilo * @param int $pag Numero de pagina virtual. + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) + function addRectangle($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null, + $transformacion = 'portrait') { - $this->_pdf->draw_rectangle($Xi, $Yi, $Xf, $Yf, $this->refPage($pag), $estilo); + $xi = $Xi; + $yi = $Yi; + $xf = $Xf; + $yf = $Yf; + switch (strtolower($transformacion)) { + case 'portrait': + $Xi = $this->_portraitX($xi,$yi); + $Yi = $this->_portraitY($xi,$yi); + $Xf = $this->_portraitX($xf,$yf); + $Yf = $this->_portraitY($xf,$yf); + break; + case 'landscape': + $Xi = $this->_landscapeX($xi,$yi); + $Yi = $this->_landscapeY($xi,$yi); + $Xf = $this->_landscapeX($xf,$yf); + $Yf = $this->_landscapeY($xf,$yf); + break; + } + $this->_pdf->draw_rectangle($Yi, $Xi, $Yf, $Xf, $this->refPage($pag), $estilo); } /** @@ -146,13 +192,33 @@ class MECON_PDF { * @param int $Yf $Yf * @param int $estilo $estilo * @param int $pag Numero de pagina virtual. + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null) + function addLine($Xi, $Yi, $Xf, $Yf, $estilo = '', $pag = null, + $transformacion = 'portrait') { - $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), + $xi = $Xi; + $yi = $Yi; + $xf = $Xf; + $yf = $Yf; + switch (strtolower($transformacion)) { + case 'portrait': + $Xi = $this->_portraitX($xi,$yi); + $Yi = $this->_portraitY($xi,$yi); + $Xf = $this->_portraitX($xf,$yf); + $Yf = $this->_portraitY($xf,$yf); + break; + case 'landscape': + $Xi = $this->_landscapeX($xi,$yi); + $Yi = $this->_landscapeY($xi,$yi); + $Xf = $this->_landscapeX($xf,$yf); + $Yf = $this->_landscapeY($xf,$yf); + break; + } + $this->_pdf->draw_line(array($Xi,$Xf),array($Yi,$Yf), $this->refPage($pag),$estilo); } @@ -164,11 +230,25 @@ class MECON_PDF { * @param int $Y Posixion vertical. * @param int $pag Numero de pagina virtual. * @param string $formato Formato del archivo (Extension). + * @param string $transformacion Indica la orientacion de la pagina. * * @return void * @access public */ - function addImage($archivo, $X, $Y, $pag = null, $formato = null) { + function addImage($archivo, $X, $Y, $pag = null, $formato = null, + $transformacion = 'portrait') { + $x = $X; + $y = $Y; + switch (strtolower($transformacion)) { + case 'portrait': + $X = $this->_portraitX($x,$y); + $Y = $this->_portraitY($x,$y); + break; + case 'landscape': + $X = $this->_landscapeX($x,$y); + $Y = $this->_landscapeY($x,$y); + break; + } $formato = strtolower($formato); switch ($formato) { case 'jpg': @@ -270,5 +350,102 @@ class MECON_PDF { function getPages() { return $this->_paginas; } + + /** + * Funcion que devuelve el ancho de la pagina. + * + * @param string $orientacion Orientacion de la pagina. + * + * @return int + * @access public + */ + function getWidth($orientacion = 'portrait') + { + switch (strtolower($orientacion)) { + case 'landscape': + $width = $this->config['Yf'] - $this->config['Yi']; + break; + default: + $width = $this->config['Xf'] - $this->config['Xi']; + } + return $width; + + } + + /** + * Funcion que devuelve el alto de la pagina. + * + * @param string $orientacion Orientacion de la pagina. + * + * @return int + * @access public + */ + function getHeight($orientacion = 'portrait') + { + switch (strtolower($orientacion)) { + case 'landscape': + $height = $this->config['Xf'] - $this->config['Xi']; + break; + default: + $height = $this->config['Yf'] - $this->config['Yi']; + } + return $height; + } + + /** + * Funcion que devuelve la rotacion y traslacion para landscape. Variable X. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _landscapeX($x, $y) + { + return -$y + $this->config['Xf']; + } + + /** + * Funcion que devuelve la rotacion y traslacion para landscape. Variable Y. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _landscapeY($x, $y) + { + return $x + $this->config['Yi']; + } + + /** + * Funcion que devuelve la traslacion para portrait. Variable X. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _portraitX($x, $y) + { + return $x + $this->config['Xi']; + } + + /** + * Funcion que devuelve la traslacion para portrait. Variable Y. + * + * @param int $x X + * @param int $y Y + * + * @return int + * @access protected + */ + function _portraitY($x, $y) + { + return $y + $this->config['Yi']; + } } ?> \ No newline at end of file diff --git a/lib/MECON/PDF/Marco.php b/lib/MECON/PDF/Marco.php index 397a5ae..46d07e5 100644 --- a/lib/MECON/PDF/Marco.php +++ b/lib/MECON/PDF/Marco.php @@ -65,8 +65,7 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { * @var string $logo * @access public */ - var $logo = '/home/mmarrese/public_html/meconlib/www/images/pdf_logo.jpg'; - //@FIXME Ponener el path del logo por defecto + var $logo; /** * Paginador. @@ -102,14 +101,14 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { * @var string $string * @access public */ - var $titulo = true; + var $titulo; /** * SubTitulo. * @var string $subtitulo * @access public */ - var $subtitulo = true; + var $subtitulo; /** * Class constructor. @@ -121,11 +120,18 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { * @access public */ function MECON_PDF_Marco($tam = "a4", $ori = "portrait") { - $this->_pdf =& new MECON_PDF; + $this->_pdf =& new MECON_PDF($tam); $this->_tamanio = $tam; $this->_orientacion = $ori; $this->_config = include 'MECON/PDF/Marco/medidas.php' ; $this->_config = $this->_config[$tam][$ori]; + if (@$this->_config['encabezado']['logo']['path']) { + $this->logo = $this->_config['encabezado']['logo']['path']; + } + $this->_config['Xi'] = $this->_pdf->config['Xi']; + $this->_config['Yi'] = $this->_pdf->config['Yi']; + $this->_config['Xf'] = $this->_pdf->config['Xf']; + $this->_config['Yf'] = $this->_pdf->config['Yf']; $this->MECON_HTML_Tabla(); } @@ -139,7 +145,7 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { $conf = $this->_config['encabezado']; if ($this->logo) { $this->_pdf->addImage($this->logo, $conf['logo']['X'], - $conf['logo']['Y'], null, 'jpg'); + $conf['logo']['Y'], null, 'jpg', $this->_orientacion); } } @@ -161,7 +167,8 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { } $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] - $conf['linea1']['Xi'] - $tmp) / 2; - $this->_pdf->addText($init, $conf['seccion']['Y'], $this->seccion, $conf['seccion']); + $this->_pdf->addText($init, $conf['seccion']['Y'], $this->seccion, + $conf['seccion'], null, $this->_orientacion); } } @@ -184,7 +191,7 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { $init = $conf['linea1']['Xi'] + ( $conf['linea2']['Xi'] - $conf['linea1']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['subseccion']['Y'], $this->subseccion, - $conf['subseccion']); + $conf['subseccion'], null, $this->_orientacion); } } @@ -203,7 +210,7 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { $init = $conf['linea2']['Xi'] + ( $conf['Xf'] - $conf['linea2']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['paginador']['Y'], $txt, - $conf['paginador']); + $conf['paginador'], null, $this->_orientacion); } } @@ -223,7 +230,7 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { $init = $conf['linea2']['Xi'] + ( $conf['Xf'] - $conf['linea2']['Xi'] - $tmp) / 2; $this->_pdf->addText($init, $conf['fecha']['Y'], $this->fecha, - $conf['fecha']); + $conf['fecha'], null, $this->_orientacion); } } @@ -236,12 +243,14 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { function _addHeaderRectangle() { $conf = $this->_config['encabezado']; //Armo el recuadro - $this->_pdf->addRectangle ($conf['Yi'], $conf['Xi'], $conf['Yf'], - $conf['Xf']); + $this->_pdf->addRectangle ($conf['Xi'], $conf['Yi'], $conf['Xf'], + $conf['Yf'], '', null, $this->_orientacion); $this->_pdf->addLine($conf['linea1']['Xi'], $conf['linea1']['Yi'], - $conf['linea1']['Xf'], $conf['linea1']['Yf']); + $conf['linea1']['Xf'], $conf['linea1']['Yf'], '', null, + $this->_orientacion); $this->_pdf->addLine($conf['linea2']['Xi'], $conf['linea2']['Yi'], - $conf['linea2']['Xf'], $conf['linea2']['Yf']); + $conf['linea2']['Xf'], $conf['linea2']['Yf'], '', null, + $this->_orientacion); } /** @@ -254,15 +263,15 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { $conf = $this->_config['titulo']; if ($this->titulo) { $tmp = $this->_pdf->strlen($this->titulo, $conf); - $tmp2 = $this->_config['Xf'] + abs($this->_config['Xi']); + $tmp2 = $this->_pdf->getWidth($this->_orientacion); if ($tmp >= $tmp2) { $this->titulo = $this->_pdf->wrapLine ($this->titulo, $tmp2, $conf); $tmp = $this->_pdf->strlen($this->titulo, $conf); } - $init = $this->_config['Xi'] + ($tmp2 - $tmp) / 2; + $init = ($tmp2 - $tmp) / 2; $this->_pdf->addText($init, $conf['Y'], $this->titulo, - $conf); + $conf, null, $this->_orientacion); } } @@ -276,15 +285,15 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { $conf = $this->_config['subtitulo']; if ($this->subtitulo) { $tmp = $this->_pdf->strlen($this->subtitulo, $conf); - $tmp2 = $this->_config['Xf'] + abs($this->_config['Xi']); + $tmp2 = $this->_pdf->getWidth($this->_orientacion); if ($tmp >= $tmp2) { $this->subtitulo = $this->_pdf->wrapLine ($this->subtitulo, $tmp2, $conf); $tmp = $this->_pdf->strlen($this->subtitulo, $conf); } - $init = $this->_config['Xi'] + ($tmp2 - $tmp) / 2; + $init = ($tmp2 - $tmp) / 2; $this->_pdf->addText($init, $conf['Y'], $this->subtitulo, - $conf); + $conf, null, $this->_orientacion); } } @@ -310,8 +319,6 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { if ($subtitle) { $this->_addSubTitle(); } -// $this->_pdf->addLine($this->_config['Xi'], $this->_config['Yi'], -// $this->_config['Xf'], $this->_config['Yi']); } /** @@ -323,7 +330,7 @@ class MECON_PDF_Marco extends MECON_HTML_Tabla { * @access protected */ function _getAvailableSpace($pagina) { - if ($pagina === 1) { + if ($pagina === 1 && $this->titulo && $this->subtitulo) { return $this->_config['contenido']['Y']; } else { diff --git a/lib/MECON/PDF/Marco/medidas.php b/lib/MECON/PDF/Marco/medidas.php index ca4981a..c0b6ff6 100644 --- a/lib/MECON/PDF/Marco/medidas.php +++ b/lib/MECON/PDF/Marco/medidas.php @@ -32,38 +32,30 @@ return array ( 'a4' => array ( //Portrait {{{ 'portrait' => array ( - 'Xi' => -40, //Esquina inferior izquierda - 'Xf' => 490, //Esquina inferior derecha - 'Yi' => -50, //Esquina inferior izquierda - 'Yf' => 700, //Esquina superior izquierda //Encabezado {{{ 'encabezado' => array ( //Encabezado de cada pagina - 'Xi' => -40, - 'Xf' => 490, + 'Xi' => 0, + 'Xf' => 530, 'Yi' => 657, 'Yf' => 700, 'logo' => array ( - 'X' => -33, + 'X' => 7, 'Y' => 665, + 'path' => + '/home/mmarrese/public_html/meconlib/www/images/pdf_logo_portrait.jpg', ), 'linea1' => array ( - 'Xi' => 110, - 'Xf' => 110, + 'Xi' => 150, + 'Xf' => 150, 'Yi' => 657, 'Yf' => 700, ), 'linea2' => array ( - 'Xi' => 404, - 'Xf' => 404, + 'Xi' => 444, + 'Xf' => 444, 'Yi' => 657, 'Yf' => 700, ), - 'linea3' => array ( - 'Xi' => -40, - 'Xf' => 110, - 'Yi' => 657, - 'Yf' => 666, - ), 'seccion' => array ( 'Y' => 685, 'font' => 'Helvetica-Bold', @@ -163,7 +155,126 @@ return array ( //}}} //LandScape {{{ 'landscape' => array ( - ), + //Encabezado {{{ + 'encabezado' => array ( //Encabezado de cada pagina + 'Xi' => 0, + 'Yi' => 487, + 'Xf' => 700, + 'Yf' => 530, + 'logo' => array ( + 'X' => 7, + 'Y' => 521, + 'path' => + '/home/mmarrese/public_html/meconlib/www/images/pdf_logo_landscape.jpg', + ), + 'linea1' => array ( + 'Xi' => 150, + 'Xf' => 150, + 'Yi' => 487, + 'Yf' => 530, + ), + 'linea2' => array ( + 'Xi' => 614, + 'Xf' => 614, + 'Yi' => 487, + 'Yf' => 530, + ), + 'seccion' => array ( + 'Y' => 515, + 'font' => 'Helvetica-Bold', + 'height' => 12, + ), + 'subseccion' => array ( + 'Y' => 494, + 'font' => 'Helvetica', + 'height' => 12, + ), + 'paginador' => array ( + 'Y' => 515, + 'font' => 'Helvetica', + 'height' => 9, + ), + 'fecha' => array ( + 'Y' => 494, + 'font' => 'Helvetica', + 'height' => 9, + ), + ), + //}}} + //Titulos {{{ + 'titulo' => array ( + 'Y' => 460, + 'font' => 'Helvetica-Bold', + 'height' => 16, + ), + 'subtitulo' => array ( + 'Y' => 445, + 'font' => 'Helvetica', + 'height' => 13, + ), + //}}} + //Contenido {{{ + 'contenido' => array ( + 'Y' => 422, + ), + 'celda_cabecera' => array ( + 'alto_linea' => 13, + 'font' => 'Helvetica-Bold', + 'height' => 11, + 'fillcolor' => array ( + 'red' => '1', + 'blue' => '1', + 'green' => '1', + ), + 'fill' => array ( + 'mode' => 'fill+stroke', + 'fillcolor' => array ( + 'red' => '.3', + 'blue' => '.3', + 'green' => '.3', + ), + 'strokecolor' => array ( + 'red' => '0', + 'blue' => '0', + 'green' => '0' + ), + ), + ), + 'celda_titulo' => array ( + 'alto_linea' => 13, + 'font' => 'Helvetica-Bold', + 'height' => 11, + 'fillcolor' => array ( + 'red' => '0', + 'blue' => '0', + 'green' => '0', + ), + 'fill' => array ( + 'mode' => 'fill+stroke', + 'fillcolor' => array ( + 'red' => '.7', + 'blue' => '.7', + 'green' => '.7', + ), + 'strokecolor' => array ( + 'red' => '0', + 'blue' => '0', + 'green' => '0' + ), + ), + ), + 'celda_comun' => array ( + 'alto_linea' => 10, + 'font' => 'Helvetica-Bold', + 'height' => 8, + 'fillcolor' => array ( + 'red' => '0', + 'blue' => '0', + 'green' => '0', + ), + ), + //}}} + ), //}}} ), //}}} diff --git a/lib/MECON/PDF/Tabla.php b/lib/MECON/PDF/Tabla.php index db39cd7..37ecb7d 100644 --- a/lib/MECON/PDF/Tabla.php +++ b/lib/MECON/PDF/Tabla.php @@ -39,26 +39,16 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { * @access public */ function display() { - if ($this->getRowCount()) { - $this->_agregarContenido(); - - //Agrego los encabezados - $t = true; - foreach ($this->_pdf->getPages() as $page) { - $this->_pdf->_pagina_actual = $page; - $this->buildPage($t, $t); - $t = false; - } - //}}} - } - else { - $this->_pdf->newPage($this->_tamanio); - $this->_pdf->addText($this->_config['Xi'], - $this->_config['contenido']['Y'], - 'No hay contenido para mostrar.', - $this->_config['contenido']); - $this->buildPage(); + $this->_agregarContenido(); + + //Agrego los encabezados + $t = true; + foreach ($this->_pdf->getPages() as $page) { + $this->_pdf->_pagina_actual = $page; + $this->buildPage($t, $t); + $t = false; } + $this->_pdf->display(); } @@ -122,8 +112,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { * @access protected */ function _obtenerAnchoColumnas() { - $ancho_pagina = abs($this->_config['Xf'] - - $this->_config['Xi']) ; + $ancho_pagina = $this->_pdf->getWidth($this->_orientacion); for ($i=0; $i<$this->getColCount(); $i++ ) { $tmp = $this->getCellAttributes(0,$i); if (is_null(@$tmp['width'])) { @@ -132,12 +121,12 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { $attr[$i] = intval($tmp['width']); } $tmp = array_sum($attr); - $attr2[0] = $this->_config['Xi']; + $attr2[0] = 0; for ($i=1; $i_config['Xf']; + $attr2[$i] = $ancho_pagina; return $attr2; } @@ -168,7 +157,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { } } - if ($alto < $this->_config['Yi']) { + if ($alto < 0) { $this->_pdf->newPage($this->_tamanio); $alto = $this->_getAvailableSpace($this->_pdf->numPage()); @@ -176,9 +165,9 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { $alto -= $repetir[$ii]['max']; for ($jj = 0; $jj < $this->getColCount(); $jj++) { $estilo = $this->_obtenerEstiloCelda($ii, $jj); - $this->_pdf->addRectangle($alto, $attr2[$jj], - $alto+$repetir[$ii]['max'], - $attr2[$jj+1], @$estilo['fill']); + $this->_pdf->addRectangle($attr2[$jj], $alto, + $attr2[$jj+1], $alto+$repetir[$ii]['max'], + @$estilo['fill'], null, $this->_orientacion); $alto1 = $alto + $repetir[$ii]['max']; foreach ($repetir[$ii][$jj] as $t) { @@ -189,7 +178,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { $estilo); $this->_pdf->addText($init, $alto1 + 2, - $t, $estilo); + $t, $estilo, null, $this->_orientacion); } } } @@ -201,9 +190,9 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { $estilo = $this->_obtenerEstiloCelda($i, $j); - $this->_pdf->addRectangle($alto, $attr2[$j], - $alto+$max, - $attr2[$j+1], @$estilo['fill']); + $this->_pdf->addRectangle($attr2[$j], $alto, + $attr2[$j+1], $alto+$max, @$estilo['fill'], null, + $this->_orientacion); $alto1 = $alto + $max; foreach ($txtt[$j] as $t) { @@ -214,7 +203,7 @@ class MECON_PDF_Tabla extends MECON_PDF_Marco { $estilo); $this->_pdf->addText($init, $alto1 + 2, - $t, $estilo); + $t, $estilo, null, $this->_orientacion); } } } diff --git a/lib/MECON/PDF/medidas.php b/lib/MECON/PDF/medidas.php new file mode 100644 index 0000000..94ca9a3 --- /dev/null +++ b/lib/MECON/PDF/medidas.php @@ -0,0 +1,41 @@ + +------------------------------------------------------------------------------- +$Id$ +-----------------------------------------------------------------------------*/ + +/** + * Medidas para cada formato de pagina. + */ +return array ( + // A4 {{{ + 'a4' => array ( + 'Xi' => -40, //Esquina inferior izquierda + 'Xf' => 490, //Esquina inferior derecha + 'Yi' => 0, //Esquina inferior izquierda + 'Yf' => 700, //Esquina superior izquierda + ), + //}}} + ); + +?> diff --git a/test/PDF/downs/down2 b/test/PDF/downs/down2 new file mode 100755 index 0000000..5e4c81e --- /dev/null +++ b/test/PDF/downs/down2 @@ -0,0 +1,2 @@ +#!/bin/sh +wget http://bal747f.mecon.ar/~mmarrese/meconlib/test/PDF/prueba_pdf2.php; mv -f prueba_pdf2.php prueba_pdf2.pdf;gv prueba_pdf2.pdf diff --git a/test/PDF/downs/prueba_pdf.pdf b/test/PDF/downs/prueba_pdf.pdf deleted file mode 100644 index 56c5d45ffcf32d7d5d75ebee311e1ccc9bd7a808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16389 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 zj{)O)aahseccion = 'Prueba de la libreria de PDF\'s'; $pdf->titulo = 'Alberto Giordano'; diff --git a/test/PDF/prueba_pdf2.php b/test/PDF/prueba_pdf2.php new file mode 100755 index 0000000..b18fae0 --- /dev/null +++ b/test/PDF/prueba_pdf2.php @@ -0,0 +1,44 @@ +seccion = 'Prueba de la libreria de PDF\'s'; +//$pdf->titulo = 'Alberto Giordano'; +//$pdf->subtitulo = 'Filosofo Estilista, guacho pulenta si los hay'; +$pdf->addRow(array ('1erCabecera', '2daCabecera para que la corete', '3erCabecera'), 'cabecera'); +$pdf->addRow(array ('1erColumna', '2daColumna para que la corete', + '3erColumna'), 'clara'); + +for ($i=0; $i<20; $i++) { + + if ($i == 50) { + $pdf->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'); + } + elseif ($i == 30) { + $pdf->addRow(array ('Esto es para probar', 'como repite las celdas', + 'MECON_PDF_Tabla'), 'titulo'); + } + else { + $pdf->addRow(array ('Fila: '.$i.'Col: 1 ', 'Fila: '.$i.'Col: 2', 'Fila: '.$i.'Col: 3'), 'comun'); + } + +} + +$pdf->updateColAttributes(0,'width="50%"'); +$pdf->updateColAttributes(1,'width="25%"'); +$pdf->updateColAttributes(2,'width="35%"'); + +$pdf->updateCellAttributes(2,0, 'align="left"'); +$pdf->updateCellAttributes(2,1, 'align="center"'); +$pdf->updateCellAttributes(2,2, 'align="right"'); + + +$pdf->display(); + +?> diff --git a/www/images/pdf_logo.gif b/www/images/pdf_logo.gif deleted file mode 100644 index 52359f3e3495bf41896b8218dbe3880a16b69867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3214 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 A&Hw-a diff --git a/www/images/pdf_logo.png b/www/images/pdf_logo.png deleted file mode 100644 index 1251f85aedd51e5a081b0a8a00b7965564fc7473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2429 zcmV-@34->CP)2TUs00009a7bBm001r{ z001r{0eGc9b^rhX33NqRbVF}#ZDnqB004<9jRpV!2^vX6K~#90%~|Y=i0mu3(&A1Q1JL zawWEdXZ_shxUzzMS~p2&hVcwS#!=fjS5+0JH#wB`WPxNN>V2ymK%oM(5y z4Y5J|KM9LnUgTo1IbpFu&cloqaELHAaC9}UEK*=tjBMP=m_ry$H?AXt%0pen&%GiD z(Z;Pp1v=u)_g|kgw#0lDz#?Zj*GZAb?VI!&C>^R7!xL3xh%7Nyj3`bQV+$BY5n=OS z5KI(xg1qS>l{{0WfK*=5vrviC+pR*S%S)aN3g=Uh^`H%eN^%EPl%t5I68bZQ5ur-& z^S41S=L%z`ke`c{(J%i)mrMprA6&wDF5U;t`^U7p&);`n3!jec{r#BuLA=1YDr7(a zJgKRN3EC<~$3o#5(909&VrE*y@;@O7xA*VnMosl8VvLAV5YMj#(m zHN-{Opl}YrEg+OzONoVG;)EV^$(RBo``D<*RaJr=Tg%BbCY*-^%7$!^=i5qj5Ra9K zXcikFF7bTP;*uaT0b$3GUyer_^3x?(N^q}>1+2ZfqekWz3{3r(1s zF+kvw^QRjUW>o?Tz|!$r|P#y+izVfs@W z{TdxEWX!%Cl`o0JdfCMdX^;>Pl8`LO6f*xrx{XwvN+xf22VU8XKV2lqMU-3;OKb>} zc|$(|^YwCi z_=d(T1LYfl*!7RGYtPPlX=q;uS)!>&h{z_jo_cgDUm1g23^@ zW=){wPD}EHKwzw?A21~~W2VbLK4O2YfY0Ym0}-LsfsKC7?~9RAKBXl{4aA9m6Yq6% zEkcoQje9^KcnD#Kc({TIY!t#3bBzjfEpU{18E)jv;B0=_k3=)Ki`aDNE$P-acoarE1IoWO}mrPO3(ma1D9eEAp z)C5U=z&}?&o@I!xe%>#sZ0MC<`s6yiZ72vfe7x&N`@dX%K4at2z3xfsTgqJ z-9Y9ADvSssie7{&>iuYRgiVTP_HKWd(~wI%ek5XfZ=zp!snr)GgP;^vY;TDwQ}nIygSp0F#OML1pUinu2H8&p@5t+M@;%Gy%r*M?kcAI@#M|w>!v%R zqs+YqXAj&cSfrFHw;M?n)VuLDdzrhjXX?Xbm%CC^&Z}|PF{QFKus+pz*POn%p>KX| zqFLV5OWb&XdO`EmSr+E8VW|q5JeKu);~Qh+zvPds#xH(?6_h@@M9VV~vB%)gPzn;q zm-xzOiobx77gy}eiAT=nV4R+|SWOJ$`pf6tQ_3HbbOg>;@t%5ofiG-o=SJ@(q|}X# z@CC&ExRPFDzWpjI5nQwpS=)hjjYr?Cwry7EP|;@Y6TCT-2F=5>5II}SCj!b?3Z_M$ zCA5ghhE2_-Bt>E+cO+=RT-UO@^WgueBZc3HNA6|fQjYv!zaYP`@ghP+riY9pSS8gKG zZP_F0sF?VjJg@qVYjBgfUGZrvMfF{^#r z%4FGV9*INxmZ`Mp;1y{fr;OG9pF}FpU{AX~J8mKpvus8onTc%CIzL*Og#GhcYfb0z z$Ws3b@pZDzv}Kwf5jne;fe3DlG4?|u-B`2ot`X_FP6Xz0q3y4?)$8*1sebadZuWXk zA30&$I{VE;UgCkB8jf@#wde4)8Gn_A*;IBS_K_4EybxKz*)A_aji>O1Ld0%a0uo8B zQmX2DdzHq#zVFkMRwZ919-C$kPpj;ih_DxD*7R%ak&39Em+P_6cDUL$Z{=*))pBjQO$4Q(=iKrMi#KS_yx)dv$eA|8~HLzWEy{m#5#umsw7` z+*4}(>{R^zyKu+dtP}oAqI}fvBgvhi>nysftcGt|kP+hl?P$1$FVb&_-@~C`V7Rw$ v_}zMFCn5V%hudqR=q3E_@=HEv{|fmFQ$|mO)&fXq00000NkvXXu0mjfo8N{@ diff --git a/www/images/pdf_logo_landscape.jpg b/www/images/pdf_logo_landscape.jpg new file mode 100644 index 0000000000000000000000000000000000000000..804120e02d1bb39ab17162068dbffe9333cc3d85 GIT binary patch literal 1311 zcmZ9Kdo&Yz0LOpZ*d}kLGLy$VcgIC*((JC~<}x8#CFG)iy~FIqcTG=k!P4f4}GR{hseRU(I8U92n7j{e1!Ci|`OU z02&$a0Z2F;0oO(%5C|O|`n2rX?m4EojEY6KuK7!(Re z!XeuK`4A{f3uqgg*udRQ3DoG6W|WyNF(mnH%X*I;#dj94^u1i(m}UwfzXnpkSh8q@ zIm_Io<62YOT7#qw!X^>rQuP6KVEI~&dimBqDVpX!3uK>4cj*=etiTB}R+plPto+sGOOiYo@(~9In z?@L~=dbLBz#!Y_~JH#W;jF&yy-rp+62re0%tUWayB7kPprx&a$1+&3Zxc(8faoe$Y zaU6?5Hunkge&k2}2ci{&Zkjbd9Tq)YU}Hi$GZ!nw(o7f4Rkg_P=-FrS{M2&^9J`K} zv}oc~1wE6?MNoc!NKF-wNLplEp~oy;WKH}Or2%~e-&X~nOcg#);?zeqz=Sgv8h%rT z&Ks(Wv?G3=tqt)BghCBn-gT<#_Xni*>(Q;XC}^kXH&D%D!8E1t+%- zl8}hFNM>69)E;J3DsfMRKmg$FHL8IPJBV83VFjNr&vJWH}G_w{utuU%oe za`DLj{Do73F^WatlIrq+lz-4*3x_&PqUQ@$8!8W*Rb0EZaWIA*4TE6Yy+`jBHcIB% zS&Gj5q!!X(f$Y4(;)n7*cA0)OLQJ?zPvm$yEbXyff6(jrWt?uose zvsC#q=&x2~)EwF2p;rS^DidAb{pRm&eW&~`KDcL{YlK3otLGPHt1m9 zwvN#Oez?DQCs!ycwZEZa>lencKBN)?g7t)Jzkszlg@4g_&NH{1-uq?aa4&`#zbE{` zmVxzx*d^Y%w^lIvn5Z2UK!cXd2qr2sDZfQF_AeEL_q42UEm;Zc|MF^P5~v;3GotD{ z9;->|B(`e66-kMFHJT)-Qa0|Lv61i^5~K#}2t`$i`R>A}&n5Knt65oQrFsd=8HtBW NvW0d>L2r|0@?YteRtx|D literal 0 HcmV?d00001 diff --git a/www/images/pdf_logo.jpg b/www/images/pdf_logo_portrait.jpg similarity index 100% rename from www/images/pdf_logo.jpg rename to www/images/pdf_logo_portrait.jpg -- 2.43.0