Developer's Diary

25 mayo, 2013

Creando PDF en C# (Apache Fop III)

Filed under: .net, API, Awesome, BBDD, Curso C#, Programación, Uncategorized, Web — Etiquetas: , , , , , , , — jnavero @ 4:56 PM

Continuando la serie, en esta tercera entrega explico un poco las plantillas como la que vimos en el segundo post de FOP (Creando PDF en C# (Apache Fop II)).  Antes de comenzar mencionar que las plantillas XSL, los XML cumplen el standart W3C además hay mucha información al respecto, así que intentaré dar las mejores explicaciones posibles basándome en los ejemplos e intentándolo hacer este post lo mas practico posible

Explicando la plantilla:

en la línea 4 podemos ver  <xsl:template match=”/”>

Esta línea es la que indica la ruta del XML donde vamos a buscar los datos en este caso es el root. Se usa XPATH para componer los datos y plasmarlos en la plantilla,  así que tenemos toda la potencia que este ofrece.

Tenemos también las llaves “fo:” este tipo de llaves son específicos de este sistema. Podemos configurar la pagina, dar estilos párrafos y formatear los forma similar a css (inline) esto es lo que veo mas coñazo pero bueno, iremos poco a poco.

En la siguiente línea vemos esto:

Esto es la configuración de la página, márgenes, alto, ancho ect, creo que estas líneas son sencillas de entender.

continuamos con las siguientes:

--- Cabecera ---

--- Pie de pagina ---

Page-Sequence, es usado como contenedor del resto de los elementos, en las siguientes líneas definimos la cabecera y el pie de la pagina (región-before y región-after). Además podemos ver los bloques que son equivalentes a los párrafos, estos bloques pueden llevar estilos css para dar formato al texto.

Si continuamos mas abajo tenemos el flow (región-body) o el flujo donde irán todos los datos del cuerpo (el cuerpo del documento).

Podemos ver en la línea <xsl:value−of select =”Agenda/LstPersonas/persona/Nombre” /> 

lo que hace es seleccionar un valor del XML, en nuestro caso, si vimos el PDF anterior (el del ejemplo anterior) podemos ver que solo se imprime una persona, sin embargo metimos 3 personas. Esto es por que no estamos recorriendo el XML solamente estamos mostrando el primer resultado.

Complicando la plantilla.

Como indique anteriormente la plantilla es XSL y se basa en el standart W3C por lo que podemos crear sentencias de control y bucles, con ello podemos recorrer nuestro XML o poner condiciones de “dibujado”. Para nuestro ejemplo recorreremos todos los nombres de la agenda pero, si encontramos a alguien que su mote sea “Choco” haré una marca. Además voy a escribir un texto plano con un formato diferente (en negrilla) para indicar que es cada cosa Por lo que la plantilla queda de la siguiente forma: 

Nombre:

Apellidos:

***

Mote:

 En este trozo de la plantilla, podemos ver el bucle For Each recorriendo el XML con los nombres que introducimos inicialmente. Además, podemos ver los bloques “fo:block” con un estilo concreto, un block contiene un salto de línea mientras que la clausula “inline”, podemos cambiar el estilo sin hacer dicho salto de línea. 

Podemos ver mas información sobre XPATH (Funciones y uso) en la siguiente web: http://www.sidar.org/recur/desdi/traduc/es/xml/xpath.HTML

Además de esa web en el proyecto principal de Apache hay otras web y material donde hablan sobre las XSL.

El siguiente post será el ultimo, seguiré hablando un poco mas de las plantillas y subiré las ultimas plantillas modificadas. Si se quiere profundizar en el tema, creo que ya hay mucho material en estos otros escritos que he echo.

Saludos!

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: