BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Apache Foundation lança o Apache FOP 1.0

Apache Foundation lança o Apache FOP 1.0

Favoritos

Na última quarta-feira, a Apache Foundation anunciou o lançamento do Apache FOP 1.0, um projeto que demorou cerca de uma década para ser feito. O Apache FOP, ou Formatting Objects Processor, teve o seu início com o XML project na Apache antes de mudar (junto com o Batik, um renderizador SVG baseado em Java) para o projeto XMLGraphics em 2004.

O Apache FOP tem o intuito de tornar documentos XML em uma variedade de formatos prontos para impressão, como por exemplo o PDF, PNG ou até mesmo para HTML. A sua história volta para o primeiro lançamento do XSL do W3C. Embora muitos confundam o XSL com a XSL Transformation language, o XSL foi criado primeiramente em benefício da indústria editorial. Como resultado, a especificação da XSL engloba tanto a linguagem em si (eXtensible Stylesheet Language) quanto a XSL Formatting Objects. A partir do resumo do XSL:

Esta especificação define as características e sintaxe para o Extensible Stylesheet Language (XSL), uma linguagem para expressar estilo. Ela consiste em duas partes:
  1. uma linguagem para transformar documentos XML (XSLT).
  2. um vocabulário XML para especificar semântica de formatação.

O que a maioria imagina do XSL, na verdade é o XSLT, a primeira parte da especificação. A especificação do XSL também define uma mini linguagem para definir como o texto deverá ser impresso no formato XSL Formatting Objects, ou apenas FO, na mesma especificação. (Este é o nome que deu início ao Apache FO Processor, e também ao nome do próprio projeto.)

Embora o CSS 1 tenha sido lançado em 1996, e o CSS2 em 1998, nenhum deles possuem a habilidade para alguns requisitos como notas de rodapé, referências de número de páginas, separar o texto por fluxo de colunas (i.e. o texto fluir de acordo com um certo número de colunas, no lugar de pré dividí-los em DIVs separados). Quando o XSL FO foi lançado em 2001 como parte da especificação XSL, havia poucos processadores disponíveis para processá-lo. O Apache FOP foi um dos primeiros, porém ficou parado na versão 0.20 (lançado em 2003), até o seu reínico na versão FOP 0.93 (lançado em 2007). Na verdade, esta lacuna foi utilizada para demonstrar a capacidade de OSGi em carregar diferentes versões de JARs em um evento OSGi JSIG na Sun alguns anos atrás.

Um exemplo de documento FO parece muito com o XML tradicional, com um namespace fo e delimitador para http://www.w3.org/1999/XSL/Format. Aqui está um exemplo do http://www.renderx.com/tutorial.html (um processador FO comercial):

<?xml version="1.0" encoding="iso-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="my-page">
      <fo:region-body margin="1in"/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="my-page">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Hello, world!</fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

O conteúdo em fo:layout contém o estilo (por exemplo quais são as margens do documento, o local onde a numeração das páginas deverão ser mostradas; ele suporta diversos estilos, logo você pode ter estilos separados para a 'página principal' e para 'página index'), seguido do fo:page-sequence, que corresponde a um conjunto de páginas (e.g. um capítulo). O flow e o block são semelhantes ao div e ao p do HTML.

Embora possa parecer muito detalhado, ele é um formato intermediário de formatos como o MediaWiki ou o WikiText. (o Eclipse WikiText pode ser traduzido para DocBook ou XSL-FO; na verdade, alguns processadores DocBook geram XSL-FO, o que pode ser compilado em PDF através de ferramentas como o Apache FOP). O site do Maven utilizou o Apache FOP para viabilizar a geração de versões em PDF do site através do plugin pdf.

O Apache FOP 1.0 ainda não está completamente compatível com a especificação do XSL FO; uma página de compatibilidade lista maiores informações a respeito do que é suportado atualmente.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT