报表中显示图片

在报表设计器中,选中要显示图片的单元格,设置属性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开始存储到数据库字段中,然后报表中直接用字段内容进行显示

results matching ""

    No results matching ""

    results matching ""

      No results matching ""