Как отобразить отчет Jasper PDF Stream на новой вкладке после успешного запроса ajax - PullRequest
0 голосов
/ 24 октября 2018

В приведенном ниже коде я могу экспортировать файл отчета jasper (.jasper) в формате HTML или PDF в локальную файловую систему, но не могу показать отчет в формате PDF в новом окне /tab.

Как мне это сделать?

Обработка метода класса Spring Controller для создания отчета в формате jasper

    @Controller
@RequestMapping("/MySearchCtrl")
            MySearchCtrl {

            @Autowired
            ServletConext servletContext;

            @RequestMapping(value="/loadJasperReport", method=RequestMethod.GET)
            public void loadJaspeeReport(HttpServletResponse response, HttpServletRequest request){
            String reportSrcFile = "/WEB-INF/MyReport.jasper";
            try {
            response.setContentType("application/pdf");
            response.addHeader("Content-Disposition","attachment;inline=My_"Report.pdf");
            List<MyReportBean> beanList = new ArrayList<MyReportBean>();
            // add the beans to the beanList here
            InputStream is = this.getClass().getClassLoader().getResourceAsStream(servletContext.getRealPath(reportSrcFile));
            JasperReport jasperReport = (JasperReport)JRLoader.loadObjct(is);
            JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(beanList);
            Map<String,Object> parameters =  new HashMap<String,Object>();
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,beanCollectionDataSource);
            JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream()); // DOES NOT WORK. NO ERROR Either
            JasperExportManager.exportReportToHtmlFile(jasperPrint,"C:\\Users\dipak\Deskop\report.html"); // DOES WORK
            JasperExportManager.exportReportToPdfFile(jasperPrint,"C:\\Users\dipak\Deskop\report1.pdf"); //DOES WORK
            } catch(Exception e){
             e.printStackTrace();
            }        
            }
        }

Мой код Javascriptвызов метода Spring выше

        function generateJasperReport(){
        $.ajax({
        type:"GET",
        async:false,
        url:"/MySearch/SearchResulkts/MySearchCtrl/loadJasperReport",
        data:{},
        success:function(data){
// TODO data is the pdf stream exported by Jasperreports and i need to display it in a new tab
        console.log(data); 
        },
        })}

1 Ответ

0 голосов
/ 26 октября 2018

Изменения в JS-файле

    function generateJasperReport(){
        window.open('/MySearch/SearchResults/MySearchCtrl/loadJasperReport/'+requestParameter,'_blank');
//_blank is to open in a new tab
            }

Изменения сервлета Ctrl

     @RequestMapping(value="/loadJasperReport/{requestParam}", method=RequestMethod.GET)
            public void loadJaspeeReport(@PathVariable String requestParam, HttpServletResponse response, HttpServletRequest request){
          // introduced @PathVariable and added requestParam to @RequestMapping
           // remaining code remains same as in question
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...