public String getRpxHtml(String rpxName,HttpServletRequest request) {
/*
*启动项目已经加载授权
*/
//计算报表,目前得从类路径下,主要是解决springboot打jar包找不到rpx文件问题。 打jar包,在缓存失效的情况下,很可能计算会报错(原因根据我的测试,与reportServlet不支持从类路径读有关,目前研发不处理)。建议打war包发布
Context cxt = null;
ClassPathResource rpxPath = new ClassPathResource("reportFiles/"+rpxName);
String rpxHtmlStr = "";
cxt = new Context();
try {
//bean方式
//ReportDefine rd = (ReportDefine)ReportUtils.read("C:\\Users\\admin\\Desktop\\springTest1\\src\\main\\resources\\reportFiles\\test.rpx");
ReportDefine rd = (ReportDefine) ReportUtils.read(rpxPath.getInputStream());
request.setAttribute("rDefine", rd);
//返回报表计算生成的html串儿,可分页。导出打印等的js函数也都生成在页面了,可以调用js函数。 如果是跨系统调(如iframe嵌入),涉及到js跨域,自行解决即可。
HtmlTagApi api = new HtmlTagApi();
//bean方式,必须设定srcType,file方式可省略可指定
api.setBeanName("rDefine");
api.setSrcType("defineBean");
//file方式
//api.setSrcType("file");
//api.setReportFileName("C:\\Users\\admin\\Desktop\\springTest1\\src\\main\\resources\\reportFiles\\test.rpx");
api.setName("report1");
api.setGenerateWaterMark("Hyl test!!!");
api.setNeedSaveAsExcel("yes");
rpxHtmlStr = api.getTagOutput(request,request.getServletContext());
} catch (Throwable e) {
e.printStackTrace();
}
return rpxHtmlStr;
}