ProgrammerBR Posted October 6, 2021 Share Posted October 6, 2021 Hi guys, I really need some help with this..I tried everything I found here and on other sites to make it work, but unfortunately it still doesn't work. I tried to do this in several different ways.I'm using Jasper Reports and I just need to download the file instead of saving it to my desktop.This is my code:@RestControllerpublic class ReportController {@Autowiredprivate ReportService reportService;@GetMapping("/report/{month}/{year}")public void export(HttpServletResponse response, @PathVariable Integer month, @PathVariable Integer year) throws IOException, JRException, SQLException { JasperPrint jasperPrint = null; response.setContentType("application/x-download"); response.setHeader("Content-Disposition", String.format("attachment; filename="despesas.pdf"")); OutputStream out = response.getOutputStream(); jasperPrint = reportService.exportPdfFile(month,year); JasperExportManager.exportReportToPdfStream(jasperPrint, out);}}And:@Servicepublic class ReportService {@Autowiredprivate ExpenseRepository er;@Autowiredprivate ResourceLoader resourceLoader;public JasperPrint exportPdfFile(Integer month, Integer year) throws IOException, JRException { List<Expense> expenses = er.findAll(); String period = month + "/" + year; //File desktop = new File(System.getProperty("user.home"), "Desktop"); String path = resourceLoader.getResource("classpath:jasper_reports/expenses.jrxml").getURI().getPath(); JasperReport jasperReport = JasperCompileManager.compileReport(path); JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(expenses); Map<String, Object> parameters = new HashMap<>(); parameters.put("periodParameter", period); JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters, dataSource); //JasperExportManager.exportReportToPdfFile(print, desktop +"\despesas.pdf"); This saves the file on my desktop return print;}}When I run this nothing happens, the console does not report any errors and the download does not start. I've already tried it in different browsersCan someone tell me why is it not working or give me a suggestion ? Thank you so much.. Link to comment Share on other sites More sharing options...
rmeadows Posted October 6, 2021 Share Posted October 6, 2021 Try content-type of application/pdf or application/octet-stream Thanks. Link to comment Share on other sites More sharing options...
ProgrammerBR Posted October 6, 2021 Author Share Posted October 6, 2021 I just tried both, unfortunately it didn't work.Thanks for answering Link to comment Share on other sites More sharing options...
Solution ProgrammerBR Posted October 6, 2021 Author Solution Share Posted October 6, 2021 The problem was the front-end, I fixed it using this: .then((response) => { const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', type + '_'+month'_'+ year +'.pdf'); document.body.appendChild(link); link.click(); }) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now