Converta HTML para PDF com 06 linhas de Código  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
EderBaum
JavaBaby
[Avatar]

Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline

Sempre vejo pessoas procurando por ai como converter HTML para PDF, mas sempre as soluções são obscuras complicadas e não muito "limpas", as vezes requerendo bibliotecas proprietárias.
Pois então vou lhe dar uma solução com apenas 06 linhas de código que salvará sua alma . Lá vamos nós rápidos e rasteiros. Como o código é mediocremente pequeno vou colocar tudo aqui pra encher linguiça, até os imports



Se você contar o numero de linhas do 2º método convert, verá que há apenas 06 linhas como prometido, e para usar esta classe, o código é menor ainda:



Os jars que vc precisa são estes
Tidy : http://jtidy.sourceforge.net
XHTMLRenderer : https://xhtmlrenderer.dev.java.net/
Itext: http://www.lowagie.com/iText

Espero que tenham divertido-se.

sabesim.com.br
[WWW]
Thiago Ananias
JavaChild
[Avatar]

Membro desde: 07/11/2006 17:05:52
Mensagens: 120
Offline

Orra cara!!

Obrigado por compartilhar! esta função já entrou na minha listinha!

[]s
[MSN]
nadilsons
JavaGuru
[Avatar]

Membro desde: 25/09/2006 23:10:20
Mensagens: 222
Offline

Valeu EderBaum!!!

Mas pelo que vi o documento deve ser xhtml para funcionar, estou certo?


Obrigado,

This message was edited 1 time. Last update was at 19/12/2007 11:44:41


Jesus é o caminho, a verdade e a vida!
Reflection DSL - http://code.google.com/p/reflection-dsl
paulovittor23
Java Ninja
[Avatar]

Membro desde: 11/05/2006 14:09:41
Mensagens: 282
Localização: Santos - SP
Offline

Bem legal..
da pra fazer algo semelhante com xhtml e algumas tags do JBoss Seam..
mas nesse caso vc já escreve o documento utilizando tags que farão com que o documento seja renderizado como pdf..
da até pra colocar gráfico

Exemplo.xhtml


Para apresentar o pdf basta vc chamar a página como se fosse uma página, ex: /Exemplo.seam

This message was edited 1 time. Last update was at 19/12/2007 11:51:03


@paulovittor23
Pós-graduando em Engenharia de Software na PUC-SP.
SCJP 5.0, SCWCD 1.4, SCBCD 5.
http://www.paulovittor23.org/
[Email] [WWW] [MSN]
EderBaum
JavaBaby
[Avatar]

Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline

Exato. o Jtidy é um "HTML Beautifyer", ai o que vc mandar pra ele, mesmo tags não fechadas, ou textos tirados de Blogs vai funfar.


Esta é a beleza do código, você não precisa se preocupar com as coisas baixas, basta mandar HTML em não conformidade que o resto o código cuida.

sabesim.com.br
[WWW]
Nothunt
Thread.start()

Membro desde: 11/05/2006 08:22:54
Mensagens: 40
Localização: Portugal
Offline

Muito obrigado!

Mas se percebi temos de passar o html linha a linha certo?

um abraço de Portugal


Java rules and the rest drules!!

EderBaum
JavaBaby
[Avatar]

Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline

Nothunt wrote:Mas se percebi temos de passar o html linha a linha certo?


Não, de forma alguma.
Você pode inclusive entrar um InputStream que aponte para este post aqui neste fórum que possivelmente vai converter este tópico para PDF

Inserção de imagens e tudo mais é tranquilo e simples, porém ele vai usar conexões ai pra "puxar" as imagens.

This message was edited 1 time. Last update was at 19/12/2007 21:46:34


sabesim.com.br
[WWW]
correainfo
JavaGuru
[Avatar]

Membro desde: 16/04/2005 21:04:25
Mensagens: 240
Localização: São Paulo SP - Cidade Natal : Auriflama,SP
Offline

EderBaum, bom eu nunca fiz isso como eu passo esse topico para ele escrever no pdf




Desde ja agradeço atençao.

11-75333451

Desenvolvedor Java e IPhone



[Email] [MSN]
correainfo
JavaGuru
[Avatar]

Membro desde: 16/04/2005 21:04:25
Mensagens: 240
Localização: São Paulo SP - Cidade Natal : Auriflama,SP
Offline

Bom ja consegui escrever de uma url



Mais ele não carregar as imagens como vc disse EderBaum

11-75333451

Desenvolvedor Java e IPhone



[Email] [MSN]
EderBaum
JavaBaby
[Avatar]

Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline

correainfo wrote:Mais ele não carregar as imagens como vc disse EderBaum


Bem, eu nunca tentei fazer com uma URL, e também não consigo ver onde isto seria necessário.
Mas mandando uma string tipo:



Isto pra mim funcionou perfeitamente, mas minha aplicação está rodando já num servidor na Web.

sabesim.com.br
[WWW]
EderBaum
JavaBaby
[Avatar]

Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline

correainfo wrote:Mais ele não carregar as imagens como vc disse EderBaum


Já sei o que houve. Neste meu exemplo acima eu uso o caminho completo da imagem no "src", já na sua página é sempre apontado o caminho relativo, e ai não vai mesmo.

sabesim.com.br
[WWW]
Nothunt
Thread.start()

Membro desde: 11/05/2006 08:22:54
Mensagens: 40
Localização: Portugal
Offline

Eu tambem testei.

No netbeans 6.0 criei a classe Html2Pdf




e a main



e como resultado obtive



Alguma ideia para resolver o problema?


Java rules and the rest drules!!

EderBaum
JavaBaby
[Avatar]

Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline

Nothunt wrote:Alguma ideia para resolver o problema?


Esqueçam tudo que eu falei sobre converter este POST para PDF.
Veja este erro:


Ele nunca vai achar o arquivo /img/logo.gif pois o programa está rodando em sua máquina, e é nela que este vai ser procurado. Pra funcionar tem que trocar o /img/logo.gif por http://www.guj.com.br/img/logo.gif.
Sacou?

Se testar este exemplo abaixo com imagens, verá que vai dar certo.



sabesim.com.br
[WWW]
Nothunt
Thread.start()

Membro desde: 11/05/2006 08:22:54
Mensagens: 40
Localização: Portugal
Offline

Eu usei este post titulo de exemplo..

mas axo que ja estendi..

quer dizer que se se tiver este codigo no servidor logo irá funcionar por inteiro?

e se for uma pagina jsp também funciona? desde que a pagina ja esteja carregada?

obrigado


Java rules and the rest drules!!

cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

Nothunt wrote:Eu usei este post titulo de exemplo..

mas axo que ja estendi..

quer dizer que se se tiver este codigo no servidor logo irá funcionar por inteiro?

e se for uma pagina jsp também funciona? desde que a pagina ja esteja carregada?

obrigado



O retorno de um request HTTP que retorne HTML não tem como saber se esse HTML foi criado através de um JSP, se já era HTML puro, ou qualquer outra coisa. O stream retornado é HTML e pronto. Logo, irá funcionar para JSP também.

Cássio Marques

Blog
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team