[RESOLVIDO]Ajuda no Ireport(Passar imagem como parâmetro)

Bom dia.

Pesquisei muito sobre como colocar uma imagem no iReport mas infelizmente não deu em nada.

Quero o seguinte:

O usuário do sistema vai escolher qual imagem sairá na nota. Mas não estou conseguindo passar a Imagem.

no .jrxml

	<field name="Logo" class="java.lang.Object"/>
        ...
	<image>
	<reportElement x="4" y="23" width="90" height="70"/>
	<imageExpression class="java.awt.Image"><![CDATA[$F{Logo}]]></imageExpression>
	</image>

Agora na classe. Essa é apenas uma das muitas maneiras que encontrei pela internet.

HashMap<String, Object> params = new HashMap<String, Object>();
params.put("Logo", ClassLoader.getSystemResourceAsStream("C:/nfe/nfe.jpeg"));
JasperPrint rel = JasperFillManager.fillReport(nfe.getJasper(), params, xmlDataSource);

Aqui $F{Logo} Eu tentei $P{Logo} enfim não está funcionado a imagem vem em branco.

Se alguem puder ajudar… Ficarei extremamente grato!

Obrigado pela ajuda JuniorMaia . O video que vc me passou foi muito bom, pena ele ter concluído a explicação e não existir continuação!^^

Mas apartir do seu video entrei em outroe fiz. Porém ainda não está funcionando. Ficou assim:

<parameter name="Logo" class="java.io.InputStream" isForPrompting="false"/>

<image> <reportElement x="2" y="23" width="92" height="73"/> <imageExpression class="java.io.InputStream"><![CDATA[$P{Logo}]]></imageExpression> </image>

HashMap<String, Object> params = new HashMap<String, Object>(); params.put("Logo", ClassLoader.getSystemResourceAsStream("C:/autonfes/nfe.jpeg")); JasperPrint rel = JasperFillManager.fillReport(nfe.getJasper(), params, xmlDataSource);

Ficou basicamente igual estava. O problema que só acho explicações para quando a imagem está dentro do projeto e eu quero uma imagem externa que o cliente irá definir antes de usar os relatórios. Não estou sabendo configurar para pegar externamente a imagem.

Se você conseguir fazer com uma imagem interna, é só fazer um ‘upload’ da imagem externa no sistema. Neste caso só iria mexer no java e não no iReport.

Bom dia.

Obrigado pela resposta.

O problema que não estou conseguindo enviar a imagem apartir do Java.
O campo de imagem fica em branco. Como deveria ficar no Java? Quero que a imagem venha do C:/diretorio_qualqeuer

Faz o seguinte. Dá uma lida nesse tópico http://www.guj.com.br/java/39087-relatorio-ireport-x-caminho-imagem. Dá uma olhadinha na API http://docs.oracle.com/javase/6/docs/api/java/awt/Image.html (ou outra classe similar). Só vou poder dá uma olhada melhor nisso a noite (ou amanhã) :frowning: Boa sorte ai. (Se resolver posta como vc fez! :D)

Apareceu outro problema com o iReport que tive que arrumar antes desse.
Olhei esse post que vc me mandou, porém ainda n funcinou.
Meu amigo estou com ódio mortal do iReport. Primeiro baixei a versão 3.x.x e ele dava problema nas quebras de linha. Inclusive achei um post aqui que o povo falou que era bug. Dai eu baixei a 4.0.2 e estava dando erro no float de campo muito grande, agora estou com a última 4.7.0. Agora tenho que testar tudo o q fiz quando usava a versão 4.0.2 para ver senão era bug tbm o fato de não aparecer imagem. Postarei o resultado depois…

Amigo,
Deixa eu ver se entendi…
Vc quer inserir imagens no ireport, mas essas imagens serao aleátorias certo?
O caminho das imagens são fixos? Se sim, pq nao passar esse caminho por parametro?

Fiz um sistema de etiquetas e o mesmo gera a imagem de acordo com produto (cerca de 3.000) e passei isso pelo banco cara…
Mas dá pra vc jogar o paramentro do caminho…


Obrigado pela resposta marcospaulo.suporte, vc realmente me colocou em dúvida… Estou fazendo um sistema de NFE para mais de 200 clientes. Alguns usam logo padrão, outros logo próprio e a maioria nenhum logo. Queria que o sistema desse essa liberdade para o usuário de deixar a imagem padrão, inserir a dele ou ficar em branco. Enfim consegui fazer agora está funcionando precisa só ajustar para colocar em produção.

Caso alguem estaja passando pelo mesmo problema.
Segue abaixo a solução:

[code]
HashMap<String, Object> parameters = new HashMap<String, Object>();
InputStream inputStreamDaImagem = null;
String caminhoImagem = “C:/autonfe/nfee.jpg”;//recebe o caminho da imagem
try {
File file = new File(caminhoImagem);

			if(file.exists())//testa se imagem existe
			inputStreamDaImagem = new FileInputStream(file);     
		} catch (FileNotFoundException e) {     
		   e.printStackTrace();     
		}     
		parameters.put ("Logo", inputStreamDaImagem);//Adiciona no HashMap e passa para o parametro Logo do XML
		JasperPrint rel = JasperFillManager.fillReport(nfe.getJasper(), parameters, xmlDataSource);[/code]

No meu XML não precisei de alterar, continuou igual ao primeiro post.

Obrigados a todos pela ajuda e atenção.

1 curtida

[quote=Cledsonjr]Obrigado pela resposta marcospaulo.suporte, vc realmente me colocou em dúvida… Estou fazendo um sistema de NFE para mais de 200 clientes. Alguns usam logo padrão, outros logo próprio e a maioria nenhum logo. Queria que o sistema desse essa liberdade para o usuário de deixar a imagem padrão, inserir a dele ou ficar em branco. Enfim consegui fazer agora está funcionando precisa só ajustar para colocar em produção.

Caso alguem estaja passando pelo mesmo problema.
Segue abaixo a solução:

[code]
HashMap<String, Object> parameters = new HashMap<String, Object>();
InputStream inputStreamDaImagem = null;
String caminhoImagem = “C:/autonfe/nfee.jpg”;//recebe o caminho da imagem
try {
File file = new File(caminhoImagem);

			if(file.exists())//testa se imagem existe
			inputStreamDaImagem = new FileInputStream(file);     
		} catch (FileNotFoundException e) {     
		   e.printStackTrace();     
		}     
		parameters.put ("Logo", inputStreamDaImagem);//Adiciona no HashMap e passa para o parametro Logo do XML
		JasperPrint rel = JasperFillManager.fillReport(nfe.getJasper(), parameters, xmlDataSource);[/code]

No meu XML não precisei de alterar, continuou igual ao primeiro post.

Obrigados a todos pela ajuda e atenção.
[/quote]

deixar na duvida é algo positivo???rsrs…
o importante é que deu certo.
abçs

[quote=Cledsonjr]Obrigado pela ajuda JuniorMaia . O video que vc me passou foi muito bom, pena ele ter concluído a explicação e não existir continuação!^^

Mas apartir do seu video entrei em outroe fiz. Porém ainda não está funcionando. Ficou assim:

<parameter name="Logo" class="java.io.InputStream" isForPrompting="false"/>

<image> <reportElement x="2" y="23" width="92" height="73"/> <imageExpression class="java.io.InputStream"><![CDATA[$P{Logo}]]></imageExpression> </image>

HashMap<String, Object> params = new HashMap<String, Object>(); params.put("Logo", ClassLoader.getSystemResourceAsStream("C:/autonfes/nfe.jpeg")); JasperPrint rel = JasperFillManager.fillReport(nfe.getJasper(), params, xmlDataSource);

Ficou basicamente igual estava. O problema que só acho explicações para quando a imagem está dentro do projeto e eu quero uma imagem externa que o cliente irá definir antes de usar os relatórios. Não estou sabendo configurar para pegar externamente a imagem.

[/quote]

Ei macho resolveu o meu problema, muito obrigado.