PDF em java - Jasper e IReport ou simplismente FOP?
13 respostas
C
caitiff-jVampirePJ
Bom eu nunca usei o IReport e o JasperReport, mas vi que pelo menos tem uma ferramenta visual para gerar Relatorios. Atualmente tive que usar o FOP e para relatórios complexos ele é um saco. Muito XSL e poucos recursos, alem de não ser nada intuitivo. E você precisa ficar gerando o pdf toda hora para ver como ficou. Eu não gostei, acho que deva existir uma maneira mais facil. Será preciso saber tudo de XSL-FO e java para gerar um relatório cheio de agrupamentos? Gostaria de saber de quem usa o IReport com o JasperReporte se isso é facilitado por ele ou se o FOP é realmente melhor. Não quero acreditar que sim mas se for, o jeito vai ser debulhar o XSL-FO até a alma porque relatório cabeludo no FOP é morte. E se alguem usa uma ferramenta visual para o FOP por favor passa o site porque eu procurei feito loco e só achei essa que é paga e é um lixo.
Cara eu passei por problema semelhante alguns meses atrás, com um agravante, o sistema teria que permitir o usuário configurar o Layout…
Junto com uma equipe de desenvolvimento constrimos o configurador de layout, ferramenta que utiliza o frameWork JGraph e o FOP…
Amigo como foi desenvolvido dentro da empresa (Jabur Informatica) não posso lhe enviar a ferramenta em si… mas posso lhe dar dicas, se vc quiser é claro…
BEm Primeira Dica é… da uma olhada no JGraph, segundo lembre se que vc pode trabalhar com XSLT, XPath junto com XSL-FO
Qualquer coisa me envie msg…
e boa sorte…
A
andersonraPJ
Legal esse esquema hein kra…
eu vou precisar montar algo parecido aki na empresa logo, logo.
A app q vc montou era desktop?
O usuário pode tipo, clicar e arrastar os campos q ele quer no relatório, agrupar, sumarizar etc ??
Com relação a questão do caitiff, eu já trabalhei com FOP algum tempo atrás, até escrevi um artigo a respeito, mas depois que comecei a trabalhar com Ireport+Jasper, nunca mais usei FOP. Você monta tudo visualmente no Ireport, eh mto mais fácil de trabalhar.
Faça um teste você mesmo e depois tire sua conclusão.
[]s
H
HKJavaPJ
E ai velho… blz ???
É para desktop sim… nos montamos um mecanismo para o usuario clicar e arrastar os elementos que ele queria no layout…
Pois o objetivo da ferramenta é que o usuario , monte o layout…
Já que vc tera q montar algo parecido reforço a sugestão de vc dar uma olhada no jgraph
Abraços…
[/img]
H
HKJavaPJ
A velho eu ja ia esquecendo…
No q vc precisar de ajuda pode mandar msg… ow e-mail para mim… so não envio a ferramenta nem codigos dela, por ela ter sido desenvolvida em ambiente comercial…
Abraços…
E vamos trocar ideia sobre isto…
A
andersonraPJ
legal kra, valeu a dica.
vou dar uma olhada neste JGraph, mas acho q vai demorar algumas semanas ainda pra começar esta parte do projeto.
valew msm, e qlqr coisa eu te mando um email.
flw
C
caitiff-jVampirePJ
Bom, vou ressucitar o topico pra fechar com a minha opnião e talvez ajudar quem ta na duvida de qual usar. Testei o JasperReport com o IReport.
Primeira impressão muito boa. Baixando o IReport ele ja vem com o JasperReport. No site do IReport tem videos mostrar como fazer, gostei muito. Li um pouco da documentação e consegui desenvolver um relatorio com 4 agrupamentos em 2 horas enquanto fiquei 3 dias no FOP. Bom, lendo a documentaçao do JasperReport descobri que ele aceita um Bean como Fonte de dados. Basta implementar uma interface que tem 2 métodos (getValue: Object e next: boolean). Simples simples. Ai tive uma idéia. Hoje na empresa usamos o MVC. Struts para cuidar dos Actions. Um framework desenvolvido la para controlar as chamadas aos BusinessObjects e DAOs. Dai pensei, poxa meu BusinessObjects devolve um List de VO quando faço uma consulta. E se eu implementar os 2 métodos da interface para retornar os valores dos VOs? Não precisaria refazer o select e nem implementar código afinal ja estão prontos. A unica coisa que teria que fazer é, inves de passar a lista de VO para o JSP passar para o JasperReport. Dai tentei. Hoje eu consegui fazer os PDFs desenhados no IReport usarem os mesmos métodos usados nos BusineesObject para gerar as listas para os usuários. Muito feliz e satisfeito agora sei bem como gerar relatorios no java. IReport + JasperReport é sem duvida a melhor receita de todas. O FOP está anos luz dessa flexibilidade e reusabilidade. Para fazer esse simples conjunto que montei você teria que implementar muito codigo, parametrizar todas as regiões do relatorio na mão, enquanto no JasperReport você tem 3 regiões basicas e cada vez que cria um agrupamento esse agrupamento novo tambem ganha essas tres regiões e pronto. E Graças as possibilidades que ele te da, ele deixa isso muito facil, a claro e você desenha o relatorio de uma forma muito intuitiva sem muitas complicações no IReport apenas arrastando e soltando. Resumindo galera, esquece o FOP. Muito conceito e pouca pratica. A dupla IReport + JasPerReport é muito melhor.
Dica no IReport: Use o Assistente de Relatorio. Ele pede uma query e te mostra alguns modeloes de relatorios ja prontos. Vc escolhe as colunas e ele gera o relatorio sozinho. Depois é so mudar o valor dos labels e acertar os campos na tela. Muiiiiiiiiito simples.
Um Abraços a todos e obrigado pelas dicas.
Augusto_Cesar
AJUDA EU
To com um problema na hora de gerar o pdf. A servlet vai nuba boa, mas o que vem na tela pra mim é isso aqui oh.
Connectionconnection=getConnection();HashMap<String,String>map=newHashMap<String,String>();//o Nome do parâmetro e o valor é passado ao HashMapmap.put("SUBREPORT_DIR",context.getRealPath(caminho)+File.separator);JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream,map,connection);response.setContentType("application/pdf");servletOutputStream.flush();servletOutputStream.close();if(connection!=null)connection.close();
}catch(SQLExceptionex){Logger.getLogger(“global”).log(Level.SEVERE,null,ex);}catch(JRExceptione){// display stack trace in the browserStringWriterstringWriter=newStringWriter();PrintWriterprintWriter=newPrintWriter(stringWriter);e.printStackTrace(printWriter);response.setContentType(“text/plain”);response.getOutputStream().print(stringWriter.toString());}
mas que a4j é esse que você está se referindo? é algum jar ou coisa do tipo? :roll:
Augusto_Cesar
jMotoca,
Obrigado pela ajuda. Atentei para fazer uma coisa que costuma resolver e resolveu. Exclui todas as libs que estava no projeto e importei simplesmente todas as libs que estava dentro do diretorio de libs do Ireport e resolveu.
Valeu!!!
PadrE
Para dar minha opinião tb…
Voto pra uso do iReport + Jasper
Além de poder usar querys SQL no iReport vc tema intregração com Beans (post do nosso amigo caitiff-jVampirePJ) e tb pode passar XML como parâmetro para o iReport.
E quem usa Netbeans vai preferir mais, já que as ferramentas estão integradas.
Fui!
kemperacc
Voce ta dando o setcontenttype depois de iniciar a gravacao para o cliente: