JasperReports na Web?

12 respostas
E

Olá pessoal,

Como funciona o JasperReports na Web? Eu vi alguns exemplos na net e percebi que gera um pdf e abre o pdf dentro do browser. Eu realmente preciso fazer isso? Não tem como eu abrir direto no browser? Como eu faço isso?

Obrigado

12 Respostas

CintiaDR

Você quer dizer gerar relatórios em HTML a partir do jasperReports? Dá sim.

E

Sabe o vizualizador do jasper… então eu preciso que apareça dentro de browser.
Tem como fazer isso?

CintiaDR

Desculpa, não entendi o que vc quis dizer com visualizador… O Ireport?

E se vc gerar um relatório PDF, o cliente (o navegador) que vai decidir como abrir aquilo. O IE abre direto o PDF, o FF pergunta o que fazer.

E

CintiaDR:
Desculpa, não entendi o que vc quis dizer com visualizador… O Ireport?

E se vc gerar um relatório PDF, o cliente (o navegador) que vai decidir como abrir aquilo. O IE abre direto o PDF, o FF pergunta o que fazer.

Com o vizualizador do IReports. Eu estou querendo fazer desta forma porque eu tenho que ter uma opção para imprimir. Quando eu abrir o relatório no browser não vou ter que tirar a barra de endereços e barras de menus. Se eu gerar o pdf no cliente (navegador) não vou ter como colocar uma opção de imprimir.

marcosbrandao

O jasper te da varias maneiras de abrir o relatorio.
Voce pode usar o classe JasperExportManager para gerar em PDF, HTML ou XML, e usar response.setContentType(XXX), para o browser abrir o report do jeito que voce quiser.
Tambem tem a classe JExcelApiExporter para exportar para excel, a JRRtfExporter para exportar para RTF. Não sei se tem um visualizador tipo o do ireport, vc precisa ver se o jasper implementa uma classe que visualize desta maneira.
Esta eh uma boa tarefa de casa.

Aqui eu gero um relatoiro em pdf no browser, e tem a opcao de imprimir:

ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, arrayOutputStream);
response.setContentType("application/pdf");
response.setHeader("Pragma","");
response.setHeader("Cache-Control","");
response.setHeader("Expires","");
response.setHeader("Content-Disposition", "inline; filename=" + reportName.toUpperCase() + "." +  reportType);
response.setContentLength(arrayOutputStream.size());
            
// escreve o relatorio no response
OutputStream out = response.getOutputStream();
arrayOutputStream.writeTo(out);
out.flush();
out.close();
CintiaDR

Se for somente imprimir, os clientes PDF já possuem uma opção para imprimir. :wink:

Parece que o que vc deseja é que o browser abra um visualizador de PDF embutido.

Existe uma razão para que o relatório tenha mesmo que ser em PDF?

marcelo_mococa

isso depende de como você implementou o código.

Se você adicionar o Header:
response.setHeader(“Content-Disposition”, "inline; filename=“teste.pdf”);

o IE e o FF vão perguntar o que você deseja fazer com o arquivo (abrir ou salvar).

E

CintiaDR:
Se for somente imprimir, os clientes PDF já possuem uma opção para imprimir. :wink:

Parece que o que vc deseja é que o browser abra um visualizador de PDF embutido.

Existe uma razão para que o relatório tenha mesmo que ser em PDF?

Então CintiaDR, eu não quero que o relatório seja em pdf. Se tiver alguma forma de fazer eu gostaria de o vizualizador do ireports seja embutido no browser.

CintiaDR

Alguns brownser tem cliente PDF embutido, e segundo reza o google e o Marcelo aqui em cima, dependendo do Content-Diposition que vc os coloque, ele abre esse cliente dentro da tela do browser. (Eu particularmente ODEIO quando o browser não me deixa opções de abrir ou salvar.) Mas dê uma pesquisada no google e aqui no GUJ por “abrir pdf” e similares, que deve ter muita gente que já teve esse problema.

Isso depende de como você implementou o código.

Se você adicionar o Header:
response.setHeader(“Content-Disposition”, "inline; filename=“teste.pdf”);

o IE e o FF vão perguntar o que você deseja fazer com o arquivo (abrir ou salvar).

É? Hum, eu sempre coloco o content como ‘Attachment’… :shock:

Usualmente a gente gera em PDF para ficar uma impressão bem bonita. Ah, é é viSualizador, com ‘S’ :wink:
Vc pode pensar em gerar as duas versões - HTML e PDF, uma para ver e outra para guardar. Dá praticamente o mesmo trabalho criar um formato ou vários.

E

CintiaDR:
Alguns brownser tem cliente PDF embutido, e segundo reza o google e o Marcelo aqui em cima, dependendo do Content-Diposition que vc os coloque, ele abre esse cliente dentro da tela do browser. (Eu particularmente ODEIO quando o browser não me deixa opções de abrir ou salvar.) Mas dê uma pesquisada no google e aqui no GUJ por “abrir pdf” e similares, que deve ter muita gente que já teve esse problema.

Isso depende de como você implementou o código.

Se você adicionar o Header:
response.setHeader(“Content-Disposition”, "inline; filename=“teste.pdf”);

o IE e o FF vão perguntar o que você deseja fazer com o arquivo (abrir ou salvar).

É? Hum, eu sempre coloco o content como ‘Attachment’… :shock:

Vou dar uma olhada. Obrigado pela ajuda

Augusto_Cesar

Alguém pode me ajudar?

Consegui fazer o pdf abrir no browser, mas no caso de gráficos ele não funciona… alguém tem algum tutorial ou exemplo pronto que possa me ajudar?
Esse IReport não tem leitura na internet :x !!! Não encontro nada :x !!!

Obrigado!

M

Bom dia pessoal,

Alguém conseguiu emitir um gráfico na web com ireport + jasperReport + eclipse??

To tentando e da dando o seguinte erro:

java.lang.ClassNotFoundException: org.exolab.castor.xml.ValidationException

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)

at net.sf.jasperreports.chartthemes.simple.XmlChartThemeExtensionsRegistryFactory.createRegistry(XmlChartThemeExtensionsRegistryFactory.java:75)

at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:238)

at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213)

at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:162)

at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:132)

at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)

at net.sf.jasperreports.engine.util.JRStyledTextParser.(JRStyledTextParser.java:76)

at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:182)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:77)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:87)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:57)

at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)

at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:281)

at action.relatorios.EstoqueAtual.geraGraficoMaiorSaida(EstoqueAtual.java:201)

at action.relatorios.EstoqueAtual.doPost(EstoqueAtual.java:58)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

Se alguém puder ajudar, agradeço.

Obrigado

Criado 11 de outubro de 2007
Ultima resposta 30 de out. de 2010
Respostas 12
Participantes 6