如何在通过插件自定义水印内容

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何在通过插件自定义水印内容

1 业务场景 

客户希望能更加灵活的设置水印内容,并且能通过在上级节点配置,达到作用于当前节点下的所有子节点的效果,如:在基础服务上配置水印内容,展示用户名+组织名,目前标准产品的水印配置功能无法满足要求。

2 实现方案

二次开发可以自己实现一个自定义的水印插件,在插件中传入自定义的水印内容(如:用户名+组织名),在水印配置页面相应节点配置后,作用于该节点下面的所有节点。例如在基础服务节点配置水印插件,基础服务上的所有的页面都应用插件定义的水印。

2.1 接口结构

自定义的水印插件需实现IWaterMarkPlugin接口:

public interface IWaterMarkPlugin {   
    //打开表单前修改水印内容    
    default void setWaterMarkInfo(LoadWaterMarkInfoEventArgs e){};
}


2.2 示例代码

/**
* 案例:自定义水印插件实现水印为用户名+组织名
* 在插件中实现 IWaterMarkPlugin 接口重写setWaterMarkInfo()方法设置水印
*/
public class WaterMarkerCustomPluginTest extends AbstractFormPlugin implements IWaterMarkPlugin{
    @Override
    public void setWaterMarkInfo(LoadWaterMarkInfoEventArgs e) {
        long userId = RequestContext.get().getCurrUserId();
        DynamicObject user=BusinessDataServiceHelper.loadSingle(userId, "bos_user");
        String orgName = getOrgName(user);
        WaterMark waterMark = new WaterMark(); 
        //设置水印类型为文本,具体类型可在设计器上查看到
        waterMark.setType("1");
        //设置文字内容为用户名+组织
        waterMark.setText(user.get("name")+"_"+orgName); 
        //设置字号,12 
        waterMark.setFontSize("12");
        //设置水印颜色为黑色
        waterMark.setColor("#333"); 
        //设置水印不透明度为50%
        waterMark.setGlobalAlpha(50);
        e.setWaterMark(waterMark);
    }
    //获取当前用户组织名方法 
    private String getOrgName(DynamicObject user) {}
}


2.3 水印配置

注册水印自定义插件:

 

2.4 展示效果

在水印插件中自定义参数(水印类型:文本,文字内容:用户名+组织名,字体:黑色,不透明度:50%

 


如何在通过插件自定义水印内容

1 业务场景 客户希望能更加灵活的设置水印内容,并且能通过在上级节点配置,达到作用于当前节点下的所有子节点的效果,如:在基础服务上配...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息