Estou usando o JasperReports 3.7.6 e iReport 3.7.6 na minha aplicação Desktop. Eu tenho o seguinte tipo de relatório:
relatório-1 (dados de texto)
Sub-relatório-1 (com imagem)
O problema é que eu tenho a imagem em byte[] na memória em meu aplicativo. Gostaria de interagir com Jasper, a fim de resolver o local do arquivo eu mesmo. Quero dizer, quando Jasper vai tentar obter a imagem (img-1.jpg, img-2.jpg, img-n.jpg) Eu gostaria de ter a imagem no meu código Java e retornar seu InputStream.
Isso porque as imagens são gravadas em um storage e são encodadas por um algoritmo específico. É por isso que eu preciso resolver a imagem pelo nome e devolvê-lo ao Jasper, a fim de preencher o relatório.
Amigo !! Voce pode passar o InputStream da imagem para o Ireport renderizalo !!
So que vc vai ter q fazer os seguinte, passar o inputStream como parametro para seu relatorio principal e o seu relatorio principal, passa esse parametro para o sub-relatorio.
Assim, vc pode pegar a imagem de onde quiser, seja do banco de dados, da propia maquina, enfim de onde quiser, assim tirando essa resposanbilidade do Ireport.
Abraço.
D
diego_scunha
rdmardegam obrigado por responder!
Acho que não detalhei direito
O problema é que para cada registro terei uma imagem diferente, sendo que preciso buscar no banco a imagem referente a cada registro do detalhe do relatório…
Por isso não é possível enviar a imagem através de parametro.
onde o rr41ww, rr42ww, rr43ww e etc. simboliza a image criptografada.
Através de uma classe java consigo descriptografar e obter o caminho puro (C:/…).
rdmardegam
Voce poderia passar uma colecao de InputStream, onde cada looping do inputStream seria a imagem a ser renderizada!
Ou entao passar a colecao contando os caminhos das imagens!
D
diego_scunha
O problema é que quero fazer passando a conexão para o Jasper…
Se for fazer desse jeito terei que executar a query no java e montar o data source… seria esse o unico jeito??
drigo.angelo
Creio que você pode instanciar uma classe sua de dentro do jasper, só nunca fiz isso…
Resolvi da seguinte forma: criei uma classe em java com um metodo que decodifica as imagens e retorna seu InputStream em seguida referenciei sua .jar no classpath do iReport.
Depois de refereciar a jar criei um objeto de imagem no iReport e na propriedade “Image Expression” fiz a chamada do metodo que criei.