Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Ao criar o pdf não abre o arquivo.

Estou com um problema quando eu crio o pdf ai vou abrir ele, fala que não posso abrir pq ta em uso ai tenho que fechar o sistema que no caso é na linguagem java ai sim da pra abrir alguém pode me ajudar nesse problema?

5 respostas

Oi Danilo,

No código de geração do pdf você deu um stream.close()e um connection.close()?

Abraço!

Ola joviane vou mostrar meu codigo acho que fica mais facil.

public class GeradorRelatorio {
    private String nomeArquivo;
    private Map<String, Object> parametros;
    private Connection connection;

    public GeradorRelatorio(String nomeArquivo, Map<String, Object> parametros, Connection connection){
        this.nomeArquivo = nomeArquivo;
        this.parametros = parametros;
        this.connection = connection;
    }

    public void gerapdfParaOutputStream(String pasta) throws JRException, FileNotFoundException{
        Map<String, Object> parameters = new HashMap<String, Object>();
        JasperPrint jasperPrint = JasperFillManager.fillReport(this.nomeArquivo, this.parametros, this.connection);

        JRExporter exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, new FileOutputStream(pasta));
        exporter.exportReport();



        JOptionPane.showMessageDialog(null, "Relatorio gerado com sussesso ");



    }

}
solução!

Oi Danilo,

Tenta fechar os recursos de connection e de stream. Algo como:

    public void gerapdfParaOutputStream(String pasta) throws JRException, FileNotFoundException{
        Map<String, Object> parameters = new HashMap<String, Object>();
        JasperPrint jasperPrint = JasperFillManager.fillReport(this.nomeArquivo, this.parametros, this.connection);

        JRExporter exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        FileOutputStream stream = new FileOutputStream(pasta);

        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, stream);
        exporter.exportReport();
        JOptionPane.showMessageDialog(null, "Relatorio gerado com sussesso ");

        stream.close();
        this.connection.close();
    }

Joviane deu certo aqui muito obrigado. :)

Oi Danilo,

Então era isso mesmo, tem que fechar os recursos senão eles ficam presos. Por isso a mensagem de que estavam sendo utilizados ainda.

Depois marca aí a resposta como solução pro tópico fechar.

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software