Página do XSL-FO

O XSL-FO utiliza modelos de página chamados "Mestres de Página" para definir o layout da página.

Modelo de página do XSL-FO

O XSL-FO utiliza modelos de página chamados "Mestres de Página" para definir o layout da página. Cada modelo deve ter um nome único:

<fo:simple-page-master master-name="intro">
  <fo:region-body margin="5in" />
</fo:simple-page-master>
<fo:simple-page-master master-name="left">
  <fo:region-body margin-left="2in" margin-right="3in" />
</fo:simple-page-master>
<fo:simple-page-master master-name="right">
  <fo:region-body margin-left="3in" margin-right="2in" />
</fo:simple-page-master>

No exemplo acima, três elementos <fo:simple-page-master> definem três modelos diferentes. Cada modelo (page-master) tem um nome diferente.

O primeiro modelo é chamado "intro" e pode ser usado como modelo de página de introdução.

Os segundos e terceiros modelos são chamados "left" e "right" e podem ser usados para páginas de números de página pares e ímpares.

Tamanho de página do XSL-FO

O XSL-FO usa os seguintes atributos para definir o tamanho da página:

page-width
Definição da largura da página
page-height
Definição da altura da página

Margens de página do XSL-FO

O XSL-FO usa os seguintes atributos para definir as margens da página:

margin-top
Definição da margem superior
margin-bottom
Definição da margem inferior
margin-left
Definição da margem esquerda
margin-right
Definição da margem direita
margin
Definição das margens de todos os lados

Áreas de página do XSL-FO (Page Regions)

O XSL-FO usa os seguintes elementos para definir as áreas da página:

region-body
Definição da área principal
region-before
Definição da área superior (cabeçalho)
region-after
Definição da área inferior (rodapé)
region-start
Definição da área esquerda (coluna esquerda)
region-end
Definição da área direita (coluna direita)

Notas:region-before、region-after、region-start e region-end são parte da área principal. Para evitar que o texto da área principal cobre essas áreas, as margens da área principal devem ser pelo menos iguais ao tamanho dessas áreas.

Ilustração:

Exemplo XSL-FO

Esta é uma parte extraída de algum documento XSL-FO:

<fo:simple-page-master master-name="A4">
 page-width="297mm" page-height="210mm"
 margin-top="1cm"   margin-bottom="1cm"
 margin-left="1cm"  margin-right="1cm">
  <fo:region-body   margin="3cm"/>
  <fo:region-before extent="2cm"/>
  <fo:region-after  extent="2cm"/>
  <fo:region-start  extent="2cm"/>
  <fo:region-end    extent="2cm"/>
</fo:simple-page-master>

O código acima define um "Simple Page Master Template" com o nome "A4".

A largura da página é de 297 mm e a altura é de 210 mm.

As margens de todas as quatro laterais da página são de 1 cm.

As margens do corpo principal são de 3 cm (todos os quatro lados).

As regiões before, after, start e end são de 2 cm.

O exemplo acima calcula a largura do corpo principal subtraindo a largura da página, os margens laterais e as margens da region-body:

297mm - (2 x 1cm) - (2 x 3cm) = 297mm - 20mm - 60mm = 217mm.

Notas:A região (region-start e region-end) não foi calculada. Como explicado anteriormente, essas regiões (region) são parte do corpo principal.