Pessoal bom dia/tarde/noite/madrugada, to precisando da ajuda de vocês!
Eu quero adicionar extensão a um conjunto de byte que estão em memória, não quero gravar o arquivo em disco, pois essa operação é custosa, então quero adicionar a extensão pdf aos relatórios que eu gero com essa função abaixo:
public byte[] getRelatorio(String nomeArquivoDoRelatorio, Map<String, Object> parametros) throws JRException, FileNotFoundException, SQLException {
byte[] relatorio = null;
String path = getPath(nomeArquivoDoRelatorio);
Connection connection;
try {
connection = Dao.getConnection();
JasperPrint jp = JasperFillManager.fillReport(path, parametros, connection);
relatorio = JasperExportManager.exportReportToPdf(jp);
Dao.closeConnection(connection);
} catch (JRException | SQLException e) {
throw e;
}
return relatorio;
}
Observações:
-
A chamada ao método getPath() só pega o caminho para o arquivo jrxml que é usado pra plotar o relatório.
-
O método Dao.getConnection() e o Dao.closeConnection() abrem e fecham a conexão com o banco respectivamente.
Gostaria muito de continuar retornando o byte[], pois envio o relatório gerado via HTTP.
Importante:
Quando gero um relatório consigo adicionar extensão nele assim:
response.setHeader("Content-Disposition", "attachment;filename=lista_" + request.getParameter("cursoSelecionado") + ".pdf");
response.setContentType("application/pdf");
Contudo quando gero varios relatórios e zipo eles, eles ficam apenas como arquivos dentro do zip, pois tenho que adicionar a extensão do zip no response, faço isso assim:
response.setHeader("Content-Disposition", "attachment;filename=certificados.zip");
response.setContentType("application/zip");
Agradeço a todos de uma vez e aguardo alguma ideia!
Abs!