Estou começando agora a utilizar o ireport e estou com um problema. Tenho uma aplicação onde esta funcionando tudo direito junco com o ireport, quando coloco minha aplicação na web ele da um erro, dizendo que não achou a imagem que meu relatorio tem. Pesquesei em alguns lugares e vi que tem que passar essa imagem por parâmetro para o ireport, mas não consegui entender muito bem. alguem pode me dar uma ajuda?
Eu tenho uma pasta dentro de WebContent camada imagens onde está minha imagem chamada logo.
bom quando a imagem é estatica ae inserir a imagem ele ja pede o endereço, mas normalmente o endereco de desenvolvimento nao eh o mesmo do uso final, entao vc vai nas propriedades da imagem e no ImageExpression coloca o endereco que ela vai estar em producao antes de compilar, ae sim funciona de boa.
agora se vc quiser passar por parametro, no mesmo ImageExpression vc coloca a tag do parametro lah, exemplo:
se o parametro chama caminho_imagem vc vai colocar lah $P{caminho_imagem}
A primeira, coloque minha imagens no ireport e em propriedades na aba image Expression coloque “/imagens/logo.jpg” e deu um erro :
Erro ao gerar o relatório: net.sf.jasperreports.engine.JRException: Byte data not found at location : /imagens/logo.jpg
A segunda tentativa coloque na aba image Expression como $P{logo} e no meu servelet coloque da seguinte forma:
parametros.put("logo", "/imagens/logo.jpg");
e deu outro erro:
Erro ao gerar o relatório: net.sf.jasperreports.engine.JRException: Incompatible java.lang.String value assigned to parameter logo in the RelatorioFatura dataset.
Ficou assim:
Eu nao estava passando o caminho do pacote,tive que tirar a imagem da pasta e jogar dentro do meu pacote.
HashMap parameters = new HashMap();
Image logo = new ImageIcon(getClass().getResource("/modelo/logo.jpg")).getImage();
parameters.put(“logo”, logo);
No ireport eu criei um parametro do tipo java.awt.Image e arrastei o componente da imagem onde coloquei no campo imagem expression=$P{logo} do tipo java.awt.Image.