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

Documentos relacionados