Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Resumo: Se seu aplicativo precisar gerar documentos PDF dinamicamente, você precisa da biblioteca iText. A
biblioteca iText de software livre facilita muito a criação de PDF. Este artigo introduz iText e fornece um guia
passo-a-passo para usá-la para gerar documentos PDF a partir de aplicativos de tecnologia Java™ . Criamos
um aplicativo de amostra para um melhor entendimento de iText.
Data: 24/Jan/2006
Nível: Intermediário
Atividade: 4875 visualizações
Comentários: 1 (Visualizar ou incluir comentários)
Muitos aplicativos exigem geração dinâmica de documentos PDF. Esses aplicativos variam de bancos gerando
extratos de clientes para entrega por e-mail até leitores comprando capítulos de livros específicos e recebendo-
os no formato PDF. A lista é interminável. Neste artigo, vamos usar a biblioteca Java iText para gerar
documentos PDF. Vou direcioná-lo por meio de um aplicativo de amostra para que você possa praticar e
entender melhor.
iText é uma biblioteca Java disponível gratuitamente em Lowagie.com (consulte Recursos). A biblioteca iText é
poderosa e suporta a geração de documentos HTML, RTF e XML, além de gerar PDFs. É possível escolher
diversas fontes para que sejam usadas no documento. Além disso, a estrutura de iText permite gerar qualquer
um dos tipos de documentos acima mencionados com o mesmo código.
A biblioteca iText contém classes para gerar texto PDF em diversas fontes, gerar tabelas em documento PDF,
incluir marcas d'água nas páginas, etc. Há muito mais recursos disponíveis com iText. Não seria possível
demonstrar todos eles em um único artigo. Vamos cobrir o básico necessário para geração de PDF.
Vamos usar o Eclipse para desenvolvimento de nosso aplicativo de amostra. Sendo um IDE de software livre, o
Eclipse está disponível gratuitamente e é bem potente. É possível fazer download do Eclipse agora (consulte
Recursos).
com.lowagie.text.Document é a classe principal para a geração de documento PDF. Essa é a primeira classe a
ser instanciada. Uma vez que o documento é criado, é necessário um escritor para escrever neste documento.
com.lowagie.text.pdf.PdfWriter é um escritor de PDF. Algumas das outras classes comumente usadas são
ibm.com/developerworks/…/os-javapdf/ 1/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
fornecidas abaixo:
Sendo uma biblioteca Java pura, iText é fornecida no formato de um arquivo JAR (consulte Recursos). Após ter
transferido a biblioteca por download (vamos supor, no caminho C:\temp), as etapas a seguir irão configurar a
biblioteca iText em um ambiente Eclipse:
iText agora está configurada e o Eclipse está pronto para criar aplicativos Java para gerar documentos PDF
dinâmicos.
Aplicativo de Amostra
O que pode demonstrar qualquer tecnologia melhor do que uma amostra funcional criada por suas próprias
mãos? Agora que você possui as ferramentas (IDE do Eclipse) e bibliotecas (biblioteca iText) necessárias,
estamos prontos para projetar e desenvolver um programa de amostra em execução.
Vamos criar um documento PDF simples que contenha alguns elementos básicos, como texto simples, texto
colorido com fonte não-padrão, tabela, lista, capítulo, seção, etc. A finalidade desse aplicativo é familiarizar-se
com a maneira de usar a biblioteca iText. Há diversas classes que executam diversos trabalhos para você
relacionados à geração de documento PDF. Não será possível cobrir todas essas classes. Os javadocs de iText
são uma boa fonte de informações sobre como usar essas classes. Vamos começar a codificar.
A primeira etapa é criar um documento. Um documento para todos os elementos de um documento PDF.
ibm.com/developerworks/…/os-javapdf/ 2/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
O primeiro argumento é o tamanho da página. Os próximos argumentos são as margens esquerda, direita,
superior e inferior, respectivamente. O tipo desse documento ainda não foi definido. Depende do tipo de escritor
criado. Para nossa amostra, escolhemos com.lowagie.text.pdf.PdfWriter. Outros editores são HtmlWriter,
RtfWriter, XmlWriter e muitos outros. Seus nomes explicam seus propósitos de forma auto-suficiente.
Agora, vamos incluir algum texto na primeira página do documento. Qualquer texto é incluído com a ajuda de
com.lowagie.text.Paragraph. É possível criar um parágrafo padrão com seu texto e as configurações-padrão de
fonte, cor, tamanho, etc. Caso contrário, você pode fornecer sua própria fonte. Vamos ver ambas a opções.
Abaixo é fornecida a saída de amostra do código acima. Incluir document.close(); no final do código acima
para fechar o documento.
ibm.com/developerworks/…/os-javapdf/ 3/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
Você acabou de ver como incluir texto simples no documento PDF. Em seguida, precisamos incluir alguns
elementos complexos no documento. Vamos começar com a criação de um novo capítulo. Um capítulo é uma
seção especial, que começa com uma nova página e tem um número exibido por padrão.
No código acima, criamos um novo objeto capítulo, chapter1, com o título "This is Chapter 1". Configurar a
profundidade do número para 0 não exibirá o número do capítulo na página.
Uma seção é um subelemento de um capítulo. No código a seguir, criamos uma seção com o título "This is
Section 1 in Chapter 1". Para incluir algum texto sob esta seção, criamos outro objeto parágrafo,
someSectionText, e incluímos o mesmo no objeto seção.
section1.add(someSectionText);
someSectionText = new Paragraph("Following is a 3 X 2 table.");
ibm.com/developerworks/…/os-javapdf/ 4/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
section1.add(someSectionText);
Antes de incluirmos a tabela, vamos dar uma olhada na aparência de nosso documento. Inclua as duas linhas a
seguir para fechar o documento, em seguida, compile e execute o programa para gerar o documento PDF:
document.add(chapter1);document.close(); .
Em seguida, criamos um objeto da tabela. Uma tabela contém uma array de linhas e colunas. Uma célula de uma
linha pode se estender por mais de uma coluna. De forma semelhante, uma célula de uma coluna pode se
estender por mais de uma linha. Assim, uma tabela 3 x 2 não precisa ter exatamente seis células.
No código acima, criamos um objeto da tabela, t, com três colunas e duas linhas. Em seguida, configuramos a
cor da borda da tabela. O preenchimento é usado para o espaçamento entre texto na célula e os limites da
célula. O espaçamento é o espaço entre os limites de células vizinhas. Em seguida, criamos três objetos célula,
com texto diferente. Continuamos incluindo as mesmas na tabela. São incluídas na primeira linha, começando na
primeira coluna, seguindo para a próxima coluna na mesma linha. Quando a linha estiver completa, a próxima
célula é incluída na primeira coluna da linha seguinte. Uma célula também pode ser incluída na tabela fornecendo
apenas o texto da célula, como t.addCell("1.1");. No final, o objeto da tabela é incluído no objeto da
seção.
Por fim, vamos ver como incluir uma lista no documento PDF. Uma lista contém diversos ListItems. Uma lista
pode ser numerada ou não. Passar o primeiro argumento como true significa que você deseja criar a lista
numerada.
Estávamos incluindo tudo no objeto capítulo 1 . Como não há mais nenhum elemento para ser incluído no
capítulo 1, está na hora de incluir o capítulo 1 no principal documento. Também vamos fechar o objeto
do documento aqui já que terminamos com nosso aplicativo de amostra.
document.add(chapter1);
document.close();
O programa irá gerar o documento ITextTest.pdf em C:\. Uma captura de tela da segunda página do documento
PDF é fornecida abaixo.
Conclusão
Você acaba de ver alguns elementos básicos de geração de PDF. A beleza da iText é que a mesma sintaxe de
elemento pode ser usada em diferentes tipos de escritores. Além disso, a saída do escritor pode ser
redirecionada para o console (no caso de escritores de XML e HTML), o fluxo de saída de servlets (em caso
de uma resposta a pedidos da Web para documentos PDF) ou qualquer outro tipo de OutputStream. iText
também é útil nessas situações em que a resposta é a mesma, mas o tipo de resposta varia entre PDF, RTF,
HTML e XML. A iText permite criar marcas d'água, criptografar o documento e outros embelezamentos da
saída.
Download
ibm.com/developerworks/…/os-javapdf/ 7/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
Informações sobre métodos de download
Recursos
Aprender
Tutorial: iText by Example contém, como seu nome sugere, tutoriais, assim como uma lista de recursos da
iText.
Visite Eclipse.org para obter informações abrangentes sobre o programa e como usá-lo.
Visite Zona de Software Livre do developerWorks para obter informações extensivas sobre como
executar ações, sobre ferramentas e atualizações de projetos para ajudá-lo a se desenvolver com
tecnologias de software livre e usá-las com produtos IBM.
Solicite o SEK para Linux, um conjunto de dois DVDs que contém o software de período experimental
IBM mais recente para Linux a partir do DB2®, Lotus®, Rational®, Tivoli®e WebSphere®.
Inove seu próximo projeto de desenvolvimento de software livre com software de avaliação da IBM,
disponível para download ou em DVD.
Discutir
Sobre o autor
Amit Tuli é um engenheiro da software de equipe dos Laboratórios de Software da IBM Índia. Atualmente, está
trabalhando no IBM WebSphere Business Integration para um projeto de telecomunicações no Grupo de
Soluções de ISL. Tem cinco anos de experiência técnica em Java e em programação do lado do servidor em
diversas plataformas. Também trabalhou no Laboratório de Pesquisa da Índia no projeto IBM WebFountain
SDK. Sua área de conhecimento inclui projetar e desenvolver aplicativos distribuídos independentes até de n-
camadas.
ibm.com/developerworks/…/os-javapdf/ 8/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
Marcas Registradas | Termos e condições do My developerWorks
ibm.com/developerworks/…/os-javapdf/ 9/10
11/12/2010 Gerar Arquivos PDF a partir de Aplicativo…
ibm.com/developerworks/…/os-javapdf/ 10/10