viernes, 8 de mayo de 2015

EZPDF especificar color en RGB


EZPDF es una gran librería para crear proyectos sencillos, sin embargo, conforme se avanza, deseamos tener más personalizada la salida de datos.

Con ese objetivo me encontré con un problema, darle un color específico a las tablas, celdas, líneas, etc.

Al ver las especificaciones de las funciones leí en el manual que se usa RGB  para dar color a los elementos,  entonces lo primero que hice fue poner los colores en el formato 255,255,255. Desafortunadamente no funciono, me daba un color azul turquesa o un blanco. Cosa fatal cuando tiene uno prisa.  El manual en uno de los apartados menciona que los colores deben estar en un rango de -0,1. Así que comencé a experimentar con poner (0, 0.7, 0.8) y tenía los mismos resultados: color turquesa o blanco.

La solución

Resulta ser que tenemos que dividir el 1 entre 255 y multiplicar por el color deseado en rgb

Color deseado RGB : 0,157,255      

Color deseado EZPDF:  = (1/255) * 157 = 0.61

setStrokeColor(0, 0.61,1)

o  para las celdas de las tablas

'shadeCol2' => array(0.81,0.84,0.9)


Nota: en algunos sitios encontre valores mayores a uno en sus ejemplos. No se la razón por que tambien funciona con esos numeros :/

EZPDF Centrar datos en columnas de las tablas de documentos PDF

Hace poco estaba realizando un reporte en pdf, para lo cual necesitaba listar datos en una tabla. Sin embargo, todas las columnas tenian el mismo ancho. El manual  PHP Pdf Creation de R&OS esta algo incompleto, así que buscando en internet por horas, encontré por casualidad como resolverlo.

La solución

El manejo de datos en EZPDF se hace mediante array
Para ello hay que pasarle los parametros al objeto que construye la tabla en la variable de opciones poniendo como clave de referencia cols que refiere a las columnas, y después describir el comportamiento de cada una de ellas a través de otro array. Es decir, es un array de arrays de opciones.


Ejemplo

$options['showHeadings'] =1;
$opcions['showlines'] = 1;
$options['shaded'] =1;
$options['shadeCol'] =array(0.81,0.84,0.9);
$opcions['shadeCol2'] = array(0.91,0.93,0.95);
$options['xPos'] ='left';
$options['xOrientation'] ='right';
$options['textCol'] = array(0,0,0);
$options['width'] =500;
$options['cols'] = array('col_num'=>array('justification'=>'center', 'width'=>30),'col_datos'=>array('justification'=>'left'),'col_total'=>array('justification'=>'center', 'width'=>100) );
$pdf->ezTable($data, $titles, '', $options);

Salida (Claro será en su documento pdf, esto es solo ilustrativo)


num datos total


Saludos

PHP Evaluar una expresión matemática (fórmula) almacenada en un string

En ocasiones hay datos almacenados en algún string con fórmulas que deseamos ejecutar en php, por ejemplo 2+4*6.  Una solución es recorrer el string caracter por caracter para comparar operadores, variables y elementos, pero eso nos llevaría un buen rato de programar.

La solución

Usar la función eval()

<?php
//php 4.3
$formula = "2+4*6";
eval(" $var = $formula; ");
echo $var;
?>


<?php
// php 5,6 y 7
$formula = "2+4*6";
$var = eval("return ".$formula.";");
print $var;

?>


Nuestra salida es 26


Así de fácil