对于这个问题其中有两个难点:1,获取到jasper表格中title中的标题。2,如果中文标题,那么就需要下载文件的文件名是中文。
1,获取jasper表格中的标题
JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(jasperFile.getPath());
JRBand titleBand = jasperReport.getTitle();
List<JRChild> list = titleBand.getChildren();
JRStaticText jrChild = (JRStaticText) list.get(0);
String titleName = jrChild.getText()+"";
对上面代码的解释:首先获取到jasperReport对象,然后获取其中的titleBand,然后在获取titleBand中所有的子项,一般来说title中的放置一个textfield写标题内容且只放置一个(如果还有其他情况根据标题在title中的位置来获取这个textfield),然后将JRChild强转为JRStaticText对象,然后使用JRStaticText对象的getText方法获取其中填写的值。
2.,设置下载文件的文件名是中文
response.setHeader("Content-Disposition", "attachment;filename="+ new String(titleName.getBytes("gbk"),"iso8859-1") + ".pdf");