Jump to content
We've recently updated our Privacy Statement, available here ×

How to download a PDF file instead of saving it


Go to solution Solved by ProgrammerBR,

Recommended Posts

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 browsers

Can someone tell me why is it not working or give me a suggestion ? Thank you so much..

Link to comment
Share on other sites

  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

  • Solution

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

  • 10 months later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...