Pular para o conteúdo principal

Do Browser para Impressora - Parte 2

Ao invés de utilizar o browser para enviar um documento HTML para a impressora, podemos fazer uso de técnicas mais indiretas. Para isso, devemos utilizar um padrão que facilite manipulação de seu conteúdo. O padrão apropriado é o XHTML. Antes de explicar como o XHTML pode ser usado para transformação de um documentos em comandos de impressão, consideremos outros benefícios de se utilizar o XHTML no lugar do HTML.

XHTML

Uma das interessantes convergências tecnológicas é o padrão XML. O XML é uma especificação de texto com marcações derivado do SGML, que utiliza uma gramática mais restrita.

Por uma especificação de texto com marcações eu quero dizer que o XML possui marcadores que definem uma certa propriedade do texto: por exemplo que um certo fragmento é um paragrafo (

Isso é um parágrafo

), ou o nome de diretor de cinema(Tim Burton, etc. Por uma gramática mais restrita eu quero dizer que a definição do que pode e o que não pode no XML é mais simples. Para maiores informações veja: diferenças entre o HTML e o XML.

Essas características tornam mais fácil a construção de analisadores sintáticos. Por esse motivo, o XML é utilizado como base para uma gama de atividades relacionadas com troca de informações por arquivo texto. O XHTML foi criado para agregar, ao HTML, esses valores.

O XHTML é basicamente o padrão HTML como algumas adaptações para contemplar as restrições do XML. Nada muito complicado. E esse rigor trouxe algumas vantagens adicionais:
Adaptabilidade – o conteúdo é facilmente convertido para outros formatos;
Previsibilidade – enquanto existe um padrão definido para renderizar um documento HTML o mesmo não acontece para um documento mal-formatado. Um navegador ao renderizar um documento desse tipo entra no modo chamado quirks. Não existe um padrão para o modo quirks de tal sorte que o resultado pode variar em cada navegador. A fácil verificação que um documento é aderente a especificação do XHTML torna supérfluo a renderização por modo quirks. Também, os criadores de parser são guiados por uma especificação mais simples o que os leva a cometer menos erros;
Legibilidade – o documento é mais legível para máquinas e seres humanos devido a simplicidade da gramática;

Vejamos esse primeiro quesito. O XHTML permite o uso de uma família de linguagens de transformação chamado XSL (Extensible Stylesheet Language). O XSL é a definição da W3C que trata transformações no XML. Essa tecnologia define como um XML pode ser transformado para um XHTML, um arquivo texto qualquer ou num XSL-FO. É possível inclusive delegar aos navegadores essa tarefa de transformação. Muitos navegadores modernos, inclusive o Internet Explorer 5.0 suportam o uso do XSL para realizar transformações nos documentos.

XML-FO

XML-FO é um padrão de descrição para impressão. O XML-FO não possui todos os detalhes da impressão, mas é suficientemente rico para conter grande parte das descrições utilizadas na impressão. Note que o XML-FO é também um documento que segue a especificação XML. Basicamente, seu uso consiste de uma transformação subseqüente em que o documento é finalmente convertido para um de impressão: tipicamente o PDF.

No site da Antenna House é possível encontrar scripts de transformação do XHTML para fo ( xhtml2fo.xsl). Agora, com o uso de bibliotecas de manipulação do XML como o Xalan, é possível com um comando converter o XHTML para XSL-FO.

java -classpath $CLASSPATH org.apache.xalan.xslt.Process -IN -XSL xhtml2fo.xsl -OUT -tt

Docbook

Para exemplificar o mecanismo de transformação de um XML para PDF, vou utilizar um script Ant que utilizo para converter meus arquivos docbook para PDF. Para o XHTML o mecanismo é o mesmo, o que muda é o arquivo XSL responsável pela transformação.

Docbook que é uma linguagem própria para documentação cujo enfoque é a semântica. A filosofia básica por trás do Docbook é discriminar o valor semântico de cada parte de um texto. Por exemplo: para um computador o fragmento

título

não significa necessariamente o começo de uma seção ou capítulo; No Docbook é possível especificar exatamente esse tipo de informação (começo ou fim de uma seção, capítulos, ênfase, etc)... mas o padrão não fala nada sobre a formatação. Fica a cargo de outros mecanismos cuidarem para que elementos sejam corretamente formatados.

Um projeto para converter o docbook poderia conter os seguintes elementos:

Ambiente de desenvolvimento com Java 1.4, Apache Ant e Apache Fop (já inclui o Xalan e o Xerces) instalados.
Diretório src incluindo os fontes em docbook.
Diretório output onde serão gerados os arquivos em pdf.

Na raiz do projeto, poderia ser criado o script do Ant (build.xml) responsável por invocar as classes responsáveis pelo processamento. O Ant dispõe de mecanismos para invocar a máquina virtual do Java para executar um comando específico. Felizmente, nem mesmo isso é necessário, porque essas bibliotecas já dispõe de tags para que realizam a transformação do documentos:


xslt classpathref="xalan.classpath" style="${fo.stylesheet}" extension=".fo" basedir="${source.dir}" destdir="${fo.dir}"
include name="${target.name}.xml" /
/xslt

fop format="application/pdf" fofile="${fo.dir}/${target.name}.fo" outfile="${fo.dir}/${target.name}.pdf" /



Comentários

Postagens mais visitadas deste blog

Um texto pós-moderno - better man

Espere olhando para as horas... são 4 horas. Tem que parar. Nesse tom melancólico, começa a modesta música "better man", uma balada pop composta por Eddie Vedder ainda na adolescência. A música é a ilustração perfeita da ironia. O próprio título é irônico, uma vez que em momento algum na música aparece um better man. She lies and says she's in love with him, can't find a better man... Irônico, não!? Para começar, com a personagem central da história, a mulher que aguarda tarde da noite seu esposo... Ela chega a treinar com o espelho o fim do relacionamento. E o que faz? Diz a negação do que queria dizer. Vedder escreve músicas sobre sentimentos fortes. Sua relação com a mãe foi bastante complicada pelo o que descreve em suas canções. Na trilogia Mommy, Vedder descreve um homem perturbado com o relacionamento materno; a mãe mente para o filho sobre a identidade do pai, revela a verdade para o garoto na puberdade dizendo a ele como se parece com o verdadeiro pai e o

Pequeno manual do ócio em terras alemãs

  Pequeno manual do ócio em terras alemãs Como Lei alemã favorece aproveitadoras (e alguns aproveitadores que nunca tive o desprazer de conhecer)   Há algumas vias pelas quais pessoas de países em desenvolvimento migram para países como a Alemanha.   Por exemplo, é sabido que países desenvolvidos sofrem de escassez de mão-de-obra qualificada. Por esse motivo, países como a Alemanha dispõe vistos "especiais" para profissionais em demanda. Esse é o conceito do Blaukart (Blue Card) que na Alemanha se destina a profissionais salário anual seja superior a 55 mil euros ou 43 mil no caso de profissionais de áreas em alta demanda. Não há como recrutar essa mão-de-obra sem que a família desses profissionais também possa ser relocada. Então esses profissionais e seus familiares são relocados.   Além de se qualificar para essas vagas em demanda, ou ser parte direta da família qualificada, outra via possível para a imigração para o território alemão é através do matrimôni

O argumento anti-álcool

A lógica contra a produção do álcool é mais ou menos a seguinte: Os produtores capitalistas, produtores do combustível de humanos e máquinas irão preferir vender combustível mais caro para os mais ricos do que comida barata para os mais pobres. Máquinas e homens irão competir por combustível... Mas enquanto os ricos terão dinheiro para comprar comida e combustível o que sobrará aos pobres!? Vale lembrar que não importa se a produção é de cana ou de milho, a competição é pela terra e não pelo grão. Ainda, mesmo que o país agrícola taxe o produtor de combustível de maneira diferenciada ao produtor de comida, o governo teria maiores dificuldades em repartir o "bolo", haja vista que os governos que temos não são as instituições mais eficientes e, além do que, a comida estará mais cara. Ora, esquecem os "amigos" comunistas que a venda de biocombustível dará aos países agrícolas uma oportunidade ímpar de participar da economia mundial como protagonistas, e não meros fi