3.283 cursos gratis
6.262.545 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Primeros pasos con XML y XSL > Descripción del proceso de generación de PDFs

Primeros pasos con XML y XSL

Autor: Ricardo Borillo
Curso:  4,25/5 4,25/5 (54 opiniones) |6828 alumnos|Fecha publicación: 10/09/2004

Capítulo 14:

 Descripción del proceso de generación de PDFs

El proceso que cubriremos en esta guía (descrito en el siguiente gráfico) con el fin de obtener un PDF será el siguiente:

-Creación de un fichero XML que contendrá la información a mostrar en el PDF.

-Creación de una hoja de estilos XSL que transformará el documento XML en un fichero XSL-FO. El fichero contendrá las definiciones necesarias en lenguaje FO que detallaremos en próximos apartados, con el fin de generar el documento final.

-Ejecutar la transformación con un parser XSL, obteniendo como resultado, el fichero XSL-FO descrito anteriormente.

-Procesamiento de dicho fichero XSL-FO, con el procesador Apache FOP, generándose finalmente el fichero PDF.

Descripción del proceso de generación de PDFs


Documento XML que contendrá la información a mostrar
<?xml version="1.0" encoding="ISO-8859-1"?>
<listado>
  <cabecera>Listado de ventas</cabecera>
  <articulos>
    <articulo id="96537">Toalla de baño</articulo>
    <articulo id="38734">Cortina de plástico</articulo>
    <articulo id="76383">Servilleta de punto</articulo>
    <articulo id="09278">Papel de cocina</articulo>
  </articulos>
</listado>
Estructura del documento XSL-FO resultado.- Antes de diseñar la hoja de estilos XSL, debemos saber que estructura tenemos que generar.

Un documento XSL-FO tiene una estructura que, a priori, parece muy complicada, pero no es así. La mayoria de los elementos que definimos en en documento XSL-FO son comunes a todos ellos, con lo que siempre podremos copiarlos de otro ya definido. Estos aspectos fijos son, por ejemplo, los margenes, estructura de las páginas y otros aspectos de configuración de la estructura.

Ejemplo de esqueleto de un documento XSL-FO, cuya estructura se repetirá en la mayoría de los casos:

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format ">
  <fo:layout-master-set>
    <fo:simple-page-master margin-right="1cm" margin-left="1cm"
                           margin-bottom="1cm" margin-top="1cm"
                           page-width="21cm" page-height="29.7cm"
                           master-name="first">
      <fo:region-body margin-top="1cm" margin-bottom="1cm"/>
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="first">
    <fo:flow flow-name="xsl-region-body">
      <!-- Aquí va el contenido del documento -->
    </fo:flow>
  </fo:page-sequence>
</fo:root>
Como podemos ver, no es tan complicado una vez sabemos que no hay necesidad de redefinirlo cada vez.

Entremos a ver con detalle cada elemento de la estructura con el fin de entenderlos mejor.

Descripción del proceso de generación de PDFs


Elemento <fo:root>
Elemento que marca el inicio y el fin del documento XSL-FO. Nos apoyamos en este elemento para definir el espacio de nombres para FO.

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format ">
  ...
</fo:root>
Elemento <fo:layout-master-set>

Engloba un conjunto de definiciones sobre la estructura o layout de las páginas, es decir, contiene uno o más <fo-simple-page-master>. Con esto conseguimos, por ejemplo, que en nuestro documento existan unas páginas con orientación vertical y otras apaisadas. También podemos así, definir distintos márgenes para las páginas del documento según si la página es par o impar.

En la mayoría de los casos, con una sóla definición de página sería suficiente.

<fo:layout-master-set>
  ...
</fo:layout-master-set>


Elemento <fo:simple-page-master>

Se encarga de especificar los márgenes, altura y anchura de un página en concreto (para conseguir una orientación vertical o apaisada).

<fo:simple-page-master margin-right="1cm" margin-left="1cm"
  margin-bottom="1cm" margin-top="1cm"
  page-width="21cm" page-height="29.7cm"
  master-name="first">
  ...
</fo:simple-page-master>
Descripción de cada uno de los elementos constituyentes de este elemento:

1.master-name

Como podemos crear múltitud de definiciones de páginas, posteriormente debemos ser capaces de asociar cada página real con su definición de estructura. Lo haremos siempre a través del "master-name".

2.margin-top, margin-bottom, margin-left y margin-right

Definen el tamaño de los márgenes superior, inferior, izquierdo y derecho según la siguiente tabla de unidades:

Table 1. Tabla de unidades de definición

Descripción del proceso de generación de PDFs

page-width y page-height

Tamaño físico de la página. En el ejemplo se utiliza 21x29.7, es decir, DIN-A4.

Elemento <fo:region-before>, <fo:region-body> y <fo:region-after>
-region-body: dimensión del área principal en el centro de la página.

-region-before: parte superior de la página, utilizada normalmente para la cabecera del documento.

-region-after: parte inferior de la página, utilizada normalmente para el pie del documento.

-region-start: parte izquierda del documento.

-region-end: parte derecha del documento.

Descripción del proceso de generación de PDFs


Elemento <fo:page-sequence>
Describe el conjunto de paginas con un formato o estructura determinado. Esta estructura de paginas viene referenciadas a traves del atributo "master-reference". Este atributo es una referencia a un tag de tipo fo:simple-page-master cuyo "master-name" corresponde con el indicado.

<fo:page-sequence master-reference="first">
   ...
</fo:page-sequence>

Elemento <fo:flow>
Define la region de la pagina en la que se insertara el contenido, como por ejemplo el "xsl-region-body".

<fo:flow flow-name="xsl-region-body">
   <!-- Aquí va el contenido del documento -->
</fo:flow>


Elementos de definicion de contenido.- Para terminar la definicion de nuestro ejemplo, vamos a ver dos de los elementos mas utilizados a la hora de definir contenido dentro de un documento FO:

Definicion de bloques con <fo:block>. Define una seccion o parrafo de contenido al estilo de la etiqueta <p> de HTML. Este elemento siempre causa una salto de linea despues de su renderizado. En la propia etiqueta "block" pueden definirse ciertos estilos del texto, como son por ejemplo el tamaño o tipo de fuente.

<fo:block font-size="12pt" font-weight="bold">
  ...
</fo:block>

Definicion de estilos para el texto contenido en un bloque <fo:inline>. Permite modificar el estilo del texto ya contenido dentro de un bloque, sobrescribiendo asi las definiciones que se habian hecho.

<fo:block font-size="12pt">
  Texto <fo:inline font-size="14pt" font-weight="bold">de</fo:inline> ejemplo.
</fo:block>

Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 54 opiniones. Opina sobre este curso.


Cursos similares a Primeros pasos con XML y XSL


Cursos Valoración Alumnos Vídeo
Internet. Tu negocio
Intenet fue un negocio que en algún momento parecía una idea "descabellada". Ahora el internet es una herramienta de uso indispensable en las e... [03/02/09]
5/5 716  
Instalación de un Servidor de Correo en Linux
Linux es un sistema operativo libre, con lo que no se tiene que pagar por ningún tipo de licencia. También se puede conseguir el código fuente y poderlo modificar libreme... [16/06/04]
 4,38/5 13.755  
Informática. Desarrollo científico del ordenador
Ordenador, ciencia e informática son las claves de este curso. Conoce el desarrollo científico que hay detrás de una computadora u ordenado... [10/07/09]
5/5 4.408  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail