How to download a PDF file instead of saving it

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:

public class ReportController {
private ReportService reportService;
public void export(HttpServletResponse response, @PathVariable Integer month, @PathVariable Integer year) throws IOException, JRException, SQLException {
    JasperPrint jasperPrint = null;
    response.setHeader("Content-Disposition", String.format("attachment; filename=\"despesas.pdf\""));
    OutputStream out = response.getOutputStream();
    jasperPrint = reportService.exportPdfFile(month,year);
    JasperExportManager.exportReportToPdfStream(jasperPrint, out);


public class ReportService  {
private ExpenseRepository er;
private 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..

ProgrammerBR's picture
Joined: Jun 25 2020 - 8:07am
Last seen: 1 year 4 months ago

Hi ProgrammerBR What response u get from this api ?

yassinakkab - 5 months 3 weeks ago

I mean what response means in then(response) ?

yassinakkab - 5 months 3 weeks ago

1 Answer:

The problem was the front-end, I fixed it using this:


.then((response) => {
                             const url = window.URL.createObjectURL(new Blob([]));
                             const link = document.createElement('a');
                             link.href = url;
                             link.setAttribute('download', type + '_'+month'_'+ year +'.pdf');
ProgrammerBR's picture
Joined: Jun 25 2020 - 8:07am
Last seen: 1 year 4 months ago