JSF + Jasper + PDF

4 respostas
rogeriosantos77

Pessoal,

Tenho uma aplicação WEB ,onde, em determinada página eu clico em um botão e ele gera com o uso do jasperReports um arquivo PDF que é exibido no lugar da página que invocou o Managed Bean que gerou o PDF.
O Conteudo do PDF é gerado certinho, porém eu queria saber se é possível fazer com que o PDF apareça em uma área específica da tela, tipo deixar um parte da página com um botão voltar para página anterior e em baixo dele o PDF aberto.

Hj eu gero o PDF e set no response, porém não encontrei nada que me permita fazer com que ele não ocupe toda a telado browser.

Este é parte do código que uso para gerar o PDF

final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                           	byteArrayOutputStream.write(JasperExportManager.exportReportToPdf(exporter.getExporter().getJasperPrint()));

		response.setContentLength(byteArrayOutputStream.size());

		final OutputStream out = response.getOutputStream();
		final FacesContext context = FacesContext.getCurrentInstance();

		byteArrayOutputStream.writeTo(out);
		out.flush();
		out.close();
		byteArrayOutputStream.close();
		context.responseComplete();

4 Respostas

thiagocg

Não é bem o que vc queria, mas caso vc use um h:commandLink ou a4j:commandLink vc pode usar:target="_blank"para renderizar o relatorio em uma nova aba do seu navegador.

Espero ter ajudado!

[]'s

T

Tenho a mesma dúvida…

Já fiquei sabendo que não é possível isto em jsf.

Mas ouvi falar na possibilidade de um componente flash no jsf para abrir o pdf em uma template da tela.

Se alguém tiver conhecimento sobre isto, por favor discorra.

E

Boa tarde TJvargas.
Utilizo JSF 2.0 e quando gero o PDF, coloco para exibir em uma POP-UP sem nenhum problema.

<p:commandButton image="ui-icon-print"
action="#{portariaController.actionExecutarRelatorio}"
oncomplete="javascript:NovaJanela('#{request.contextPath}/gerarRelatorio','nomeJanela','450','450','yes');return false;"
value="Imprimir" />
T

Boa Tarde Edson,

Obrigado pela resposta.

Atualmente o meu relatório abre mediante um download, ou em uma página.

Como gostaria que ele abrisse no meio da página junto dos filtros para ficar algo mais “clean”, fiz em primefaces. Mas isso é muito fora de padrão. Imagina se eu no futuro for alterar a estrutura dos relatórios, teria que arrumar no iReports e no primefaces.

Mas preciso de uma alternativa para abrir o relatório no meio da tela( como nos antigos iframes), vindos da mesma fonte: jasper reports;

Ps: Já tentei exportar para Html para abrir numa div na página, mas o html fica muito precário em relação ao PDF.

Criado 9 de junho de 2011
Ultima resposta 5 de jul. de 2012
Respostas 4
Participantes 4