Desenvolvimento - Java

Geração de arquivos PDF com Java – Parte IV (Outros Formatos)

Esse artigo é complementar aos artigos já publicados aqui no Linha de Código sob o titulo “Geração de arquivos PDF com Java”.

por Eric C M Oliveira



A API iText, além de permitir a geração e manipulação de arquivos no formato PDF, tem outras funcionalidades também relacionadas a outros formatos, como HTML, Rtf e XML.

Esse artigo é complementar aos artigos já publicados aqui no Linha de Código sob o titulo “Geração de arquivos PDF com Java” (ver abaixo em “Outros Artigos do Colunista”). Os exemplos abaixo tem como base o tutorial disponível na página web do próprio iText (ver referências).

No caso da geração de documentos HTML, temos a classe HtmlWriter. Ela foi desenvolvida pelos criadores do iText apenas por motivos de debug na elaboração da API como forma de ajudar no entendimento de gração de documentos no formato PDF. Bruno Lowagie and Paulo Soares, os idealizadores do iText, deixam isso claro no tutorial web da API, e ressaltam que há outras APIs de geração HTML muito mais elaborados, mas que essa funcionalidade o iText pode ser um diferencial na geração de documentos em múltiplos formatos.

A geração de um documento HTML é extremamente simples. Basta utilizar a classe HtmlWriter, que esta no pacote com.lowagie.text.html . A criação do documento em si segue os mesmos procedimentos já vistos nas sequencias anteriores dos artigos relacionados ao iText:

HtmlWriter.getInstance(document, new FileOutputStream("C://JAVALC.html"));

Como já visto anteriormente, é possivel adicionar metadados a sua página HTML, com uso dos métodos addTitle, addAuthor, addSubject e addKeywords. Além disso há metadados específicos para o formato, como addHeader e addCreator.

Quanto a criação
    de documentos Rtf, esse formato também segue a mesma linha de arquivos PDF e HTML,
    com uso, preferencialmente da classe RtfWriter2. Importante notar que a classe RtfWriter2
    subsititui a classe RtfWriter. Não há pontos comuns
    de share code entre ambas as classes. 
    A classe RtfWriter tem o status de depreciada e deve ser eliminada
        da API em 2007. Todo desenvolvimento futuro de novas funcionalidades serão implementadas
        tendo a classe RtfWriter2 como seu unico ponto de partida.

Finalizando, abaixo à titulo de demosntração, uma classe Java que gera um documento HTML:

package pdfLinhaCodigo;

import java.io.FileOutputStream;

import java.io.IOException;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Paragraph;

import com.lowagie.text.html.HtmlWriter;

public class PDF_LinhaCodigo4 {

public static void main(String[] args) {

Document document = new Document();

try {

HtmlWriter.getInstance(document,

new FileOutputStream("C://JAVA_LC.html"));

document.addTitle("Java Linha de Codigo");

document.addAuthor("Eric C M Oliveira");

document.addSubject("Artigo Linha de Codigo");

document.addKeywords("Metadata, iText");

document.addHeader("Expires", "0");

document.addCreator("iText gerando HTML");

document.open();

document.add(new Paragraph("Java Linha de Código"));

} catch (DocumentException de) {

System.err.println(de.getMessage());

} catch (IOException ioe) {

System.err.println(ioe.getMessage());

}

document.close();

}

}

Referências:

http://itextdocs.lowagie.com/tutorial/

http://itextdocs.lowagie.com/tutorial/html/index.html#top

http://itextdocs.lowagie.com/tutorial/rtf/index.html#rtfdocument

Eric C M Oliveira

Eric C M Oliveira - Bacharel em Ciencia da Computação/FASP e Comunicação/Unesp, tem experiência em desenvolvimento Java nas plataformas J2SE, J2EE e J2ME, além de atividades ligadas a disciplina de testes, engenharia e qualidade de software. Tem certificações Java SCJP 1.3, SCJP 1.4, Rational Test Management, Rational Robot e RUP (Rational Unified Process).