DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo Java Magazine 64 - iText e JODConverter

Artigo da Revista Java Magazine Edição 64.

Esse artigo faz parte da revista Java Magazine edição 64. Clique aqui para ler todos os artigos desta edição

iText e JODConverter

Utilizando Java para converter arquivos para PDF

Aprenda a gerar arquivos PDF a partir de arquivos de texto, imagens ou documentos criados por suítes de escritório

 

Do que se trata o artigo:

Neste artigo veremos uma solução para converter documentos de diversos formatos para PDF utilizando ferramentas feitas em Java.

Para que serve:

Possibilitar que aplicações exibam em PDF documentos em formatos não portáveis. Ou ainda, possibilitar que armazenem documentos em um único formato padrão, mas aceitem que usuários finais possam enviar arquivos em diferentes formatos.

Em que situação o tema é útil:

Para sistemas que possuem workflow baseado em documentos eletrônicos e querem uma forma de padronizar o formato de trâmite desses arquivos. O formato PDF possui vários recursos, como o suporte a assinatura digital e formulários eletrônicos. Dessa forma, para tirar vantagem desses recursos, pode ser necessário converter documentos legados para o formato.

 

iText e JODConverter:

O iText é um projeto que permite criar novos arquivos PDF ou manipular existentes. Ele possui uma API considerada de baixo nível e é utilizado por várias ferramentas de geração de relatório. Utilizamos o iText para elaborar um simples algoritmo de criação de PDF a partir de um arquivo TXT. Também o utilizamos para criar arquivos PDF a partir de imagens JPG, GIF, PNG ou TIFF.

O JODConverter é uma API que facilita o uso do UNO (Universal Network Objects), que por sua vez, é uma API disponibilizada pelo Open Office para acessar remotamente suas funcionalidades. O UNO permite utilizar os algoritmos de conversão para PDF do Open Office, possibilitando converter arquivos de vários formatos como DOC, RTF, ODT, XLS, ODS, etc. O UNO é uma API de baixo nível, dessa forma, utilizamos o JODConverter que tem por objetivo, criar uma casca sobre o UNO facilitando a execução da conversão de documentos.

 

Portable Document Format (PDF) é um formato de arquivo criado pela Adobe Systems. O formato permite capturar e visualizar informações consistentes – a partir de quase todo aplicativo ou sistema operacional – e compartilhá-las praticamente com qualquer pessoa, em qualquer lugar. Por este motivo, tornou-se um formato muito popular para troca de documentos pela Internet, em um ambiente heterogêneo. O formato também é popular por agregar funcionalidades de assinatura digital, formulários e multimídia, e exibi-los de forma portável entre diferentes sistemas operacionais. Dessa forma, tornou-se muito comum para uma aplicação web exibir dados para o usuário no formato PDF. Seja em relatórios, seja em documentos importantes, como notas fiscais ou recibos.

Uma crítica comum que o PDF enfrentava tradicionalmente, era a de ser um formato de arquivo proprietário – apesar de ser, em grande parte, baseado no padrão PostScript. Mas a Adobe recentemente abriu a especificação do PDF, que foi ratificado em julho deste ano pelo padrão ISO 32000-1.

Neste artigo será demonstrado como utilizar Java para criar documentos PDF, a partir de documentos de suítes de escritório, imagens ou arquivos de texto. Isto será útil para aplicações que possuem documentos armazenados nesses formatos, mas desejam exibir o documento de maneira portável em um formato popular e read-only.

 

Ferramentas utilizadas

Iremos utilizar a biblioteca iText para converter arquivos TXT e imagens. Para converter documentos do Microsoft Office (ou Open Office) iremos utilizar o JODConverter.

O código fonte do artigo está disponível para download em formato ZIP no site da Java Magazine. Dentro do ZIP é possível encontrar todos os JAR’s necessários para rodar os exemplos com sucesso. Feito o download, inclua todos os JAR’s presentes na pasta lib no classpath da aplicação.

Caso o leitor queira, pode fazer o download dos projetos nos seus respectivos sites. Para efetuar o download, acesse o site da biblioteca iText e do projeto JODConverter (veja a seção de links no final do artigo). Inclua o único JAR do iText e todos os JAR’s presentes na pasta lib da distribuição do JODConverter no classpath.

 

Interface para conversão de documentos

Para tornar a conversão de documentos extensível e adaptável criamos a interface da Listagem 1. O contrato dessa interface é receber um array de bytes de um documento em formato específico e transforma-lo em PDF. Caso algum problema ocorra na conversão, uma exceção do tipo "



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    4 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Gabriel De Medeiros Maraccini
Obrigado pelo artigo.
É difícil encontrar algo tão bem comentado na internet, achoque vale a pena ter pago por ele.

Agora, estou com uma dúvida. No trecho 3, tem a linha

 return IOUtils.toByteArray(TesteConversao.class.getResourceAsStream(arquivo));

Onde TesteConversao.class.getResourceAsStream(arquivo) está como null mesmo TesteConversao.class ta preenchido e arquivo preenchido

Pode me ajudar ? Obrigado
[há +1 ano] - Responder

 

[autor] Michel Zanini
Voce esta dizendo que a linhas esta retornando null ?
Lembre-se que para executar o exemplo de forma correta voce precisa do arquivo "/br/com/jm/conversor/pdf/texto.txt" no classpath. Se voce baixar o arquivo zip da revista o codigo fonte ja possui tudo, se voce estiver programando no seu computador por ti mesmo tem que incluir o arquivo ou mudar a localizacao para outro arquivo que voce queira.
[há +1 ano] - Responder
 

Gabriel De Medeiros Maraccini
Bom dia Michel,

Não encontrei o link para baixar, voce pode informa-lo Por favor ?
O exemplo que voce informou só funciona para txt ? Penseo que se alterar a linha

new ConversaoAPartirDeTexto(); para ConversaoAPartirDeTextoOffice() eu conseguiria passar de Rtf para Pdf que é a minha dúvida principal.

Obrigado pela resposta
[há +1 ano] - Responder
 

Devmedia - Equipe De Moderação
Gabriel,
o link do arquivo é http://www.devmedia.com.br/resumo/download.asp?site=6&idrevista=106
[há +1 ano] - Responder
 



Publicidade
Autor
Michel Zanini

Formado em Ciências da Computação pela Universidade Federal de Santa Catarina (UFSC) e possui as certificações SCJP, SCWCD, SCBCD e SCDJWS.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03