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

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.

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

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

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

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

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

Agradeço qualquer sugestão.

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.

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.

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ê

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

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.

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

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.

engano seu, Daniel

[quote=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.[/quote]
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.

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.

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

[quote=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…[/quote]

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.