> 本章介绍如何调用pdf导出接口(不支持图表及base64图片导出) >[danger] 注意:导出图片、二维码、条形码可将单元格设置成图片、二维码、条形码格式,参数不需要传递(见图一);直接插入的不支持导出(见图二) 例如:`#{user.idcard}`值为图片地址,本地图片地址及云图片地址均可 ![](https://img.kancloud.cn/f7/e6/f7e6b42cb13c5a048bb2cf1d7991e23c_470x273.png) :-: 图一 ![](https://img.kancloud.cn/d4/35/d435588a13a67b16bb9b1e74527671f2_479x125.png) :-: 图二 #### 一、pdf接口调用说明: ##### 1、请求路径: ``` ip 端口号(有则写) 项目路径 (有则写) /jmreport/(固定访问接口路径) 如:http://127.0.0.1:8080/jeecg-boot/jmreport/exportPdf ``` ##### 2、需要传递的参数 ``` excelConfigId: 积木报表的id 如图三 token: 如果需要字典的话需要传递,放在请求头 queryParam:{} 参数数组,如{"name":"张三"} 自己api或者sql需要的参数 ``` ![](https://img.kancloud.cn/57/7e/577ebf4b29ee4fa2e08c801bb8dbcd24_1723x976.png) :-: 图三 ##### 3、返回参数详解 返回结果为json格式 ``` { code: 200(调用成功),500(调用失败),405(请求方式错误) success: true(调用成功),false(调用失败) message: 失败信息文本内容 result:{ file: base64字符串 name: pdf导出名称 }, timestamp:时间戳 } ``` #### 二、后台代码调用示例 ``` @GetMapping("/exportPdf") public void exportPdf(HttpServletResponse response){ RestTemplate restTemplate = new RestTemplate(); //创建url路径 String url = "http://192.168.1.107:8080/jeecg-boot/jmreport/exportPdf"; Map<String,Object> map = new HashMap<>(); JSONObject object = new JSONObject(); //此处为示例,需要传递api和sql的正确参数值 object.put("name","张三"); //queryParam中有个特殊属性 dpi每英寸点数,windows是96,可不用传 object.put("dpi","96"); map.put("excelConfigId","582015784389632000"); map.put("queryParam",object); HttpHeaders headers = new HttpHeaders(); //如果有字典需要传token headers.add("token","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjY2NjAzNzcsInVzZXJuYW1lIjoiYWRtaW4ifQ.6VdYrH2UChHeJLLKLiiuOu1Mos40CIN3zbigyI2O978"); HttpEntity<Map<String,Object>> httpEntity = new HttpEntity<>(map,headers); try { String apiResult = restTemplate.postForObject(url, httpEntity, String.class); JSONObject jsonObject = JSONObject.parseObject(apiResult); Object code = jsonObject.get("code"); Object message = jsonObject.get("message"); if(null != code && !"".equals(String.valueOf(code)) && "200".equals(String.valueOf(code))){ JSONObject result = jsonObject.getJSONObject("result"); //文件byte64字符串 String file = result.getString("file"); //文件名称 String name = result.getString("name"); //转换成byte byte[] buffer = Base64Utils.decodeFromString(file); name = URLEncoder.encode(name, "UTF-8"); response.setContentType("application/vnd.ms-excel;charset=GBK"); response.setHeader("Content-Disposition", "attachment;filename=" + name); response.getOutputStream().write(buffer); response.getOutputStream().flush(); }else{ log.info("调用失败:"+String.valueOf(message)); } } catch (RestClientException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } ``` ##### 三、前台代码示例 ~~~ let params=JSON.stringify({excelConfigId:"报表id"}) let config={ url:"/jmreport/exportPdf", data:params, method:'post' } //有token则传递token config.headers={"Content-Type":"application/json;charset=UTF-8","token":""}; axios.request(config).then((res) => { if (res.data.success){ //进行导出pdf,步骤省略.....,代码返回参数见:步骤一第三点返回参数详解 } }) ~~~ ![](https://img.kancloud.cn/89/1c/891c05ff174b728c660d0c4e76de8a91_829x205.png) :-: pdf导出参数截图