报表中显示图片
在报表设计器中,选中要显示图片的单元格,设置属性display-type为image
只要字段中的内容是一个图片的url,就可以显示出这个图片了。
1.显示当前应用中附件组件上传的图片
附件上传的图片数据库中存储的是json格式的字符串,不是具体的图片或者url,因此要在报表中展现需要用定义服务的方式,在服务中通过存储的json数据拼接url,返回url在报表中显示
服务中拼接url如下设置:
public List<Baobiaosj> baobiaotp() throws Exception {
//请添加你的业务代码
List<Baobiaosj> result = new ArrayList<Baobiaosj>();
List<Baobiaosj> list = baobiaosjMapper.findAll();//获取数据集的数据
if(list.size() >0) {
for(Baobiaosj baobiaosj:list) {
String uploadImage = baobiaosj.getUploadImage();//获取存储附件信息的字段值
baobiaosj.setUploadImage(getUploadImageUrl(uploadImage));//把转换后的url的值赋值给字段
result.add(baobiaosj);
}
}
return result;
}
//当前应用中附件组件上传图片
public String getUploadImageUrl(String info) {
String url = "";
if(StringUtils.isNotEmpty(info)) {
JSONArray ja = JSONArray.parseArray(info);//把json传转换为JSONArray对象
if(ja.size() >0) {
String storeFileName = ja.getJSONObject(0).getString("storeFileName");//如果有多个只获取了第一个
url = "/"+ContextUtil.getServiceName()+"/storage/getObject?storeFileName="+storeFileName;
}
}
return url;
}
2.显示其他应用中附件组件上传的图片
如果要显示其他的应用上传的附件图片,可以在当前应用的数据集中用一个字段存储对应的附件图片json信息,然后服务中进行url转换,如下在自己的应用的报表中显示企业门户(entry)中上传的用户名签名的实现:
public List<Baobiaosj> baobiaotp() throws Exception {
//请添加你的业务代码
List<Baobiaosj> result = new ArrayList<Baobiaosj>();
List<Baobiaosj> list = baobiaosjMapper.findAll();//获取数据集的数据
if(list.size() >0) {
for(Baobiaosj baobiaosj:list) {
String userImage = baobiaosj.getUserImage();//获取数据集中存储签名图片json数据的字段值
baobiaosj.setUserImage(getUserImageUrl(userImage));//把转换后的url的值赋值给字段
result.add(baobiaosj);
}
}
return result;
}
//用户的签名图片
public String getUserImageUrl(String info) {
String url = "";
if(StringUtils.isNotEmpty(info)) {
JSONArray ja = JSONArray.parseArray(info);//把json传转换为JSONArray对象
if(ja.size() >0) {
String storeFileName = ja.getJSONObject(0).getString("storeFileName");//如果有多个只获取了第一个
url = "/entry/storage/getObject?storeFileName="+storeFileName;//entry就是门户应用的服务名
}
}
return url;
}
3.显示UI2下上传的本地图片
只显示一个文件,且文件路径没有存储到数据库中可以直接设置单元格的图片地址image值
如果是把图片路径存储到数据库中,数据库存储的图片路径从pc或者pcx开始如下:/pc/images/1.jpg
,然后在服务中拼接url,如下:
public List<Baobiaosj> baobiaotp() throws Exception {
//请添加你的业务代码
List<Baobiaosj> result = new ArrayList<Baobiaosj>();
List<Baobiaosj> list = baobiaosjMapper.findAll();
if(list.size() >0) {
for(Baobiaosj baobiaosj:list) {
String image= baobiaosj.getImage();//获取数据集中存储图片路径的字段值
baobiaosj.setImage("/"+ContextUtil.getServiceName()+"/pcapp/"+image);//把转换后的url的值赋值给字段。图片在pc目录下是pcapp,在pcx目录下是pcxapp
result.add(baobiaosj);
}
}
return result;
}
4.显示第三方图片
报表中显示第三方图片,可以把第三方图片完整的地址从http或者https开始存储到数据库字段中,然后报表中直接用字段内容进行显示