Efectos y rotación de textos
Transcripción
Efectos y rotación de textos
Efectos y rotación de textos Efectos en el texto PHP permite incluir algunos efectos en los textos conteni- dos en los documentos PDF. Se utilizan estas funciones: pdf_set_parameter($g,ef,va) donde $g es -como siempre- el identificador del recurso y donde ef es una cadena (por lo tanto debe escribirse entre comillas) que puede contener uno de los siguientes valores: "underline" "overline" "strikeout" que indican: subrayado, línea por encima del texto y texto tachado respectivamente El tercer parámetro ha de ser 'true' o 'false' (escrito entre comillas). El valor true activa la opción, false la desactiva. ¡Cuidado! Esta función no respeta las situaciones excepcionales, es decir, que en el caso de ser insertada detrás de una función pdf_save, no retomará los valores previos por efecto de pdf_restore sino que será necesario hacer una nueva llamada a la propia función con el parámetro false. Otra función útil para generar efectos es la siguiente: pdf_set_value($g,"textrendering",x) en la que textrendering debe escribirse entre comillas y donde x es un valor numérico que, según el valor que se le asigne, produce los siguientes efectos: - 0 Se utiliza para poder desactivar cualquier otro valor de éste parámetro y poder regresar a la opción de texto normal. - 1 Permite contornear las letras, utilizando -por defecto- color negro «PHP en la Educación» Efectos en el texto <? $f = fopen("ejemplo143.pdf", "w"); $g = pdf_open($f); pdf_begin_page($g, 595, 842); $cadena="Un poco más"; $cadena1="Avanzando con PHP"; $cadena2="Los recursos del PDF"; pdf_set_font($g, "Helvetica-Bold", 18,"host", 0 ); # activamos el subrayado pdf_set_parameter($g,"underline","true"); $ancho=pdf_stringwidth($g, $cadena); pdf_show_xy($g,$cadena,(595-$ancho)/2,800); # desactivamos el subrayado pdf_set_parameter($g,"underline","false"); pdf_save($g); pdf_scale($g, 0.7, 1.4); # activamos el subrayado y la linea superior pdf_set_parameter($g,"underline","true"); pdf_set_parameter($g,"overline","true"); $ancho=pdf_stringwidth($g, $cadena1); pdf_show_xy($g,$cadena1,(595/0.7-$ancho)/2,750/1.4); # desactivamos el subrayado y la linea superior pdf_set_parameter($g,"underline","false"); pdf_set_parameter($g,"overline","false"); pdf_restore($g); pdf_save($g); pdf_scale($g, 0.75, 1.3); # activamos el texto "tachado" pdf_set_parameter($g,"strikeout","true"); pdf_set_font($g, "Times-Bold", 50,"host", 0 ); $ancho=pdf_stringwidth($g, $cadena2); pdf_show_xy($g,$cadena2,(595/0.75-$ancho)/2,650/1.3); pdf_restore($g); # pese al pdf_restore el tachado se mantiene # hasta que no lo desactivemos # al salir de la excepcionalidad no restaura los valores anteriores # de este parámetro pdf_save($g); pdf_setrgbcolor_fill($g, 0.7,0.7,0.7); pdf_scale($g, 0.75, -1.3); pdf_set_font($g, "Times-Bold", 50,"host", 0 ); $ancho=pdf_stringwidth($g, $cadena2); pdf_show_xy($g,$cadena2,(595/0.75-$ancho)/2,-620/1.3); pdf_restore($g); # desactivamos el texto "tachado" pdf_set_parameter($g,"strikeout","false"); pdf_set_font($g, "Times-Bold", 30,"host", 0 ); # asignamos colores de relleno y bordes # las lineas comentadas en magenta están las funciones # para modificar esos parámetros en versiones modernas #pdf_setcolor($g,"stroke","rgb", 1, 0, 0); #pdf_setcolor($g,"fill","rgb", 0, 1, 0); Efectos y rotación de textos Página 1 aunque, tal como veremos, este color puede ser modificado. - 2 Dibuja el contorno de la letra con un color y rellena el interior con otro color distinto - 3 Convierte el texto en salvo en los casos en estuvieran activadas la subrayado, tachado o línea que sí lo harían visible. invisible, los que opciones superior, Colores de relleno y contorno En la página anterior hemos hablado de la función: pdf_setcolor($g,"fill","rgb",x,y,z) que permite establecer el color del texto. Esa misma función -con los mismos parámetros que allí se indicabanestablece el color de relleno que utilizaría la función de renderizado descrita más arriba. Para establecer el color del contorno deberemos utilizar esta misma función pero cambiando el parámetro 'fill' por 'stroke' (también entre comillas) y -como es obvio- poniendo un color distinto al del relleno (fill) para visualizar el efecto con colores distintos. ¡Cuidado! En las versiones antiguas debemos sustituir -tal como ya hemos comentado- la función anterior por: pdf_setrgbcolor_fill cuando se trata de relleno. Para contornos usaríamos: pdf_setrgbcolor_stroke con los mismos parámetros que la anterior. Está aplicado en uno de los ejemplos Rotando textos PHP, también permite rotar textos en los ficheros PDF. La función es la siguiente: pdf_rotate($g,ang) donde de $g es ... ni lo comentamos... y ang es un número que indica el ángulo de giro expresado en grados sexagesimales medidos en sentido trigonométrico. «PHP en la Educación» # asignamos colores de relleno y bordes # utilizando las funciones válidas para versiones antiguas # que por el momento también funcionan en las más recientes pdf_setrgbcolor_stroke($g, 1,0,0); pdf_setrgbcolor_fill($g, 0,1,0); # las diferentes valores del parámetro textrendering pdf_set_value($g,"textrendering",0); pdf_show_xy($g,"textrendering=0",50,550); pdf_set_value($g,"textrendering",1); pdf_show_xy($g,"textrendering=1",50,525); pdf_set_value($g,"textrendering",2); pdf_show_xy($g,"textrendering=2",50,500); pdf_set_value($g,"textrendering",3); pdf_show_xy($g,"textrendering=3",50,475); # los mismos ensayos anteriores pero "tachando" el texto pdf_set_parameter($g,"strikeout","true"); pdf_set_value($g,"textrendering",0); pdf_show_xy($g,"textrendering=0",50,450); pdf_set_value($g,"textrendering",1); pdf_show_xy($g,"textrendering=1",50,425); pdf_set_value($g,"textrendering",2); pdf_show_xy($g,"textrendering=2",50,400); pdf_set_value($g,"textrendering",3); pdf_show_xy($g,"textrendering=3",50,375); pdf_set_parameter($g,"strikeout","false"); pdf_end_page($g); pdf_close($g); ?> <A Href="ejemplo143.pdf">Ver el pdf creado</a> Ejemplo143.php Rotación de textos Para rotar y posicionar textos el procedimiento más fácil y cómodo parece ser el siguiente: • Insertar un pdf_save($g) para crear una excepcionalidad • Situar el origen de coordenadas en el punto donde queremos que aparezca la esquina inferior izquierda de la caja de texto. • Con la función pdf_translate($g) se logra lo anterior • Escribir la función de giro pdf_rotate($g, ang) • Poner siempre coordenadas (0,0) en la función pdf_show:_xy • Si utilizamos pdf_show_boxed debemos poner también (0,0) como coordenadas de la esquina inferior izquierda de la caja de texto • Por último, ponemos pdf_restore($g) con lo cual se desactiva el giro y además el origen de coordenadas vuelve automáticamente al valor anterior al establecido por pdf_translate($g) <? $f = fopen("ejemplo144.pdf", "w"); $g = pdf_open($f); pdf_begin_page($g, 595, 842); $cadena="Un poco más..."; pdf_set_font($g, "Helvetica-Bold", 30,"host", 0 ); pdf_set_parameter($g,"underline","true"); $ancho=pdf_stringwidth($g, $cadena); pdf_show_xy($g,$cadena,(595-$ancho)/2,800); pdf_set_parameter($g,"underline","false"); # aquí comienza la situación "excepcional" pdf_save($g); Efectos y rotación de textos Página 2 Mediante esta función no se gira el elemento respecto a su centro, sino que combina una translación y un giro que pueden resultan complejas de manejar. Una solución práctica para simplificar el proceso es la que hemos aplicado en el ejemplo. Se trata de cambiar el origen de coordenadas –de forma temporal– antes de hacer el giro y restaurarlo a sus valores previos una vez concluido éste. # transladamos los ejes pdf_translate($g, 150, 600); # establecemos la rotacion pdf_rotate($g,45); # posicionamos el texto en las coordenadas 0,0 pdf_show_xy($g,$cadena,0,0); # acabamos "excepcionalidad" pdf_restore($g); # con este texto comprobamos que se ha restaurado # las condiciones anteriores, tanto en cuanto coordenadas como a giro pdf_show_xy($g,$cadena,(595-$ancho)/2,550); # repetimos con un angulo negativo pdf_save($g); pdf_translate($g, 350, 750); pdf_rotate($g,-45); pdf_show_xy($g,$cadena,0,0); pdf_restore($g); pdf_end_page($g); pdf_close($g); ?> <A Href="ejemplo144.pdf">Ver el pdf creado</a> Ejemplo144.php «PHP en la Educación» Efectos y rotación de textos Página 3