Como obter no código java o HTML Gerado por uma página JSF?

15 respostas
D

Bom dia, pessoall.

Tenho a seguinte situação tenho uma página JSF e preciso transformar ela em pdf, para tal
preciso pegar no código fonte o HTML gerado pela página.

O problema é como fazer isto usado JSF.

Agradeço qualquer sugestão.

15 Respostas

B

Por que você tem que transformar a página em PDF???
Não pode fazer com http://jasperforge.org/projects/ireport ???

D

Por que simplesmente a minha pagina gerada é o que tem que ser vista no pdf.

Se tiver mais alguma sugestão eu agradeço.

D

Pegar o HTML, acho q só com Javascript mesmo… vc consegue gerar o tal relatório com Javascript?

D

Não, eu pego o HTML gerado e a partir dele gero o pdf.

Agradeço qualquer sugestão.

L

1 - Voce que criou a pagina em JSF ou tem que obter os dados desta pagina ?

2- Se não for [color=red] http://www.guj.com.br/posts/list/77682.java[/color] ja usei e funciona.

D

E justamente este link que eu irei utilizar quando eu conseguir pegar o HTML da página.

Mas a questão aqui tenho que pegar o HTML redenrizado pela página JSF.

Se alguém tiver mais alguma sugestão eu agradeço.

Y

Boa tarde Daniel;

Se apenas o codigo html do body for suficiente tu pode utilizar a seguinte idéia:
Chamar um javascript ao terminar de carregar a pagina(Event onload). Esse js trabalharia com a função ‘document.body.innerHTML’ que retorna todo o HTML da tag body, esse retorno tu poderia setar em uma variavel de algum bean qualquer, por js mesmo; Ai tendo esse código html armazenado em alguma variavel em java creio que ja seja suficiente para você

R

vc quer fazer isso algumas vezes de forma manual ou diversas vezes de forma automática?

manual

instale um plugin no seu browser que gere a página vista em pdf. o chrome e o firefox tem!

auto

primeiro use o http://hc.apache.org/ para obter o conteudo html da requisição à página.
depois use algo como http://pd4ml.com/ para transformar o html em pdf

D

Deixa eu explicar a situação:

Eu tenho a seguinte url que tem o botão para o usuário solicitar a exibição do dados:

http://localhost:8080/projeto/view/show.jsf

Após a exibição a do HTML da página que quero transformar em pdf a URL permanece a mesma, porque o JSF faz
este redirecionamento sem alterar a URL, portanto fica difícil eu conseguir o conteúdo html via get.

Eu agradeço qualquer sugestão.

D

Vou tentar sua sugestão, ygor.
Posto aqui se der certo.

M

Se você precisa apenas obter o código html da página, acho que a solução abaixo te atenderia:

URL url = new URL("http://localhost:8080/projeto/view/show.jsf");
InputStream in = url.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));

String codigoHtml = "";
String linha;
while ((linha = reader.readLine()) != null) {
  codigoHtml += linha;
}

// Libera os recursos.
reader.close();
in.close();

// Escreve o html da página no console, porém, você pode fazer o que quiser o resultado.
System.out.println(codigoHtml);

Espero ter ajudado.

R

engano seu, Daniel

Daniel.F:

Após a exibição a do HTML da página que quero transformar em pdf a URL permanece a mesma, porque o JSF faz
este redirecionamento sem alterar a URL, portanto fica difícil eu conseguir o conteúdo html via get.

se vc tivesse olhado a documentação do componente http://hc.apache.org/ que te sugeri, veria q o mesmo trata o redirecionamento.

HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod("http://localhost:8080/projeto/view/show.jsf"); httpget.setFollowRedirects(true); try { httpclient.executeMethod(httpget); // System.out.println(httpget.getStatusLine()); retorno = httpget.getResponseBodyAsStream(); } finally { httpget.releaseConnection(); }veja o método httpget.setFollowRedirects(true);
o componente serve também para post.

D

Ricardo, eu te peço desculpas realmente não li a documentação.
Com sua solução consegui pegar html, mas não aparece os valores dos componentes JSF
e como se tivesse pegado o xhtml da página.

Quem tiver alguma outra sugestão eu agradeço.

Y

Daniel.F

A unica maneira que eu conheço de tu ter acesso direto as tags JSF, seria por exemplo:
ao invez disso: …/view/show.jsf
utilizar isso: …/view/show.xhtml
Mais ai teria serias implicações de segurança

R

Daniel.F:

Com sua solução consegui pegar html, mas não aparece os valores dos componentes JSF
e como se tivesse pegado o xhtml da página…

um tanto estranho isso… sempre que eu usei esta biblioteca, recebi EXATAMENTE o mesmo código html que browser recebe para renderizar.

verei se encontro outra solução.

Criado 18 de agosto de 2010
Ultima resposta 28 de ago. de 2010
Respostas 15
Participantes 7