Caminho relativo

4 respostas
N

Quando se insere imagens nos relatórios usando iReport, como faço para colocar um caminho relativo em vez do absoluto, facilitando assim a migração do projeto para outras máquinas?

4 Respostas

K

Cara, nunca testei, mas teoricamente, se você colocar sua imagem dentro do seu projeto, voce vai conseguir isso. Ou seja, sua imagem vai estar dentro do jar, e vai com ele pra qualquer lugar…

Tenta isso, qualquer coisa, volta a postar, blz?

N

Quando você insere uma imagem no iReport, não existe a opção de dizer que sua imagem está no .jar do projeto…

K

Na realidade, essa opção de forma explícita não existe. Mas se você já trabalhou com subrelatórios talvez você irá entender o que você deve fazer.

Ao invés de passar um do tipo “C:\pasta\imagem.jpg”, passe o seguinte valor $P{img_path}. Para isso, você deve criar um parâmetro com esse nome, do tipo java.io.InputString

Dessa forma, você passará o caminho de onde está sua imagem através do seu código java, através de um Map que você passa como parâmetro no momento de gerar seu relatório. Não entrarei em detalhes, pois esse post pode ficar muito extenso. Sendo assim, caso surga qquer outra dúvida, volte a postar.

Mas baseie isto que estou dizendo no procedimento para se criar subrelatórios. Isso pode te ajudar, blz?

Abraço

slywitch
Conexao.setSQL(SQL);

            JRResultSetDataSource jrRS = new JRResultSetDataSource(Conexao.Consultar());
            InputStream is = getClass().getResourceAsStream("/reports/motorista.jasper");
        
            //HashMap map = new HashMap();
            Map parameters = new HashMap();

            //File logo = new File("/images/Linux_Logo.png");
            //File logo = new File("D:/Java/Sistemas/Sistema de Frota/Source/Sistema de Frota/src/images/Linux_Logo.png");
            //System.out.println(logo.isFile());

            //InputStream logo = getClass().getResourceAsStream("/images/Linux_Logo.png");
            //InputStream logo = getClass().getResourceAsStream("D:/Java/Sistemas/Sistema de Frota/Source/Sistema de Frota/src/images/Linux_Logo.png");

            parameters.put("logo", logo);

            JasperPrint print = JasperFillManager.fillReport(is, parameters, jrRS);
            JasperViewer viewer = new JasperViewer(print, false);            

            viewer.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            viewer.setVisible(true);

Desculpe a minha ignorância, ( :oops: ) mas ainda não estou conseguindo fazer isso, gostaria de saber onde estou errando, alguem poderia dar esta ajuda? obrigado!

Criado 3 de dezembro de 2007
Ultima resposta 7 de abr. de 2010
Respostas 4
Participantes 3