Power BI添加动态水印

2022-07-13 15:55:02 浏览数 (1)

基于权限控制需求可能想在Power BI页面添加水印。静态水印使用度量值生成一个卡片图即可,本文讲解动态水印的制作及使用。

  1. 动态水印演示

顶部水平水印如下图所示,淡灰色的wujunmin在向右移动:

倾斜重复水印如下图所示:

原地转圈水印,如下图左上角:

转大圈水印,圆圈其实不需要,只是为了辅助让大家看到行动轨迹:

神出鬼没水印,看似随机的在移动:

2. 制作水印


水印使用度量值生成,原理是SVG的动画标签,将水印的文字替换为自己需要的,可以重复使用。

代码语言:javascript复制
水印_顶部水平 = 
 "<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 1280 20'>
<text x='0' y='20' font-size='20' fill='Grey' fill-opacity='0.4' text-anchor='middle'>wujunmin
<animate attributeName='x' from='0' by='1280' begin='0s' dur='30s' repeatCount='indefinite' />
</text>
</svg> "

viewbox设置的屏幕显示宽度高度,可依据自己的画布尺寸灵活调整。

代码语言:javascript复制
水印_重复倾斜 = 
VAR label = "wujunmin" //水印内容
VAR Label_Count = 10 //水印行数
VAR t =
    GENERATESERIES ( 1, Label_Count )
VAR t_text =
    ADDCOLUMNS (
        t,
        "tspan",
            "<tspan x='0' y='" & [Value] * 5 & "'>" & label & "
<animate attributeName='x' from='"
                & IF ( MOD ( [Value], 2 ) = 0, 0, Label_Count * 5 ) & "' by='"
                & IF (
                    MOD ( [Value], 2 ) = 0,
                    SQRT ( 2 ) * Label_Count * 5,
                    -1 * SQRT ( 2 ) * Label_Count * 5
                ) & "' begin='"
                & RANDBETWEEN ( 0, 10 ) & "s' dur='10s' repeatCount='indefinite' />
</tspan>"
    )
VAR SVG =
    "<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 " & Label_Count * 5 & " " & Label_Count * 5 & "'>
<g transform='rotate(-45," & Label_Count * 5 & "," & Label_Count * 5 & ")'>
<text font-size='5' fill='Grey' fill-opacity='0.2' text-anchor='middle' dominant-baseline='middle'>"
        & CONCATENATEX ( t_text, [tspan] ) & "
</text>
</g>
</svg> "
RETURN
    SVG
代码语言:javascript复制
水印_原地转圈 = 
"<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 100 100'>
<text x='50' y='50' font-size='20' fill='Grey' fill-opacity='0.4' text-anchor='middle'>wujunmin
<animatetransform attributeName='transform' type='rotate' from='0 50 50' to='360 50 50' begin='0s' dur='30s' repeatCount='indefinite' />
</text>
</svg> "
代码语言:javascript复制
水印_转大圈 = 
"<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 100 100'>
<text x='0' y='0' font-size='5' fill='Grey' fill-opacity='0.4' text-anchor='middle'>
        wujunmin
<animatemotion path='M0 50a50 50 0 1 0 100 0a50 50 0 1 0 -100 0z' begin='0s' dur='20s' repeatCount='indefinite' />
    </text>
</svg> "

神出鬼没水印读者可以自定义移动路径,自定义的方式为:

搜索引擎搜索SVG在线编辑(功能都差不多),任意打开一个编辑器,如下操作:

记事本打开保存好的SVG文件,将里面的path内容复制到上方的水印-转大圈度量值,移动路径则重新规划成功。

3. 显示水印


显示上方度量值做好的水印有三种方式。第一种是使用HTML Content视觉对象,将以上度量值放入该视觉对象即可正常显示。

注意为避免对图表造成遮挡,需要将加载水印的HTML Content置于底层:

使用HTML Content的好处是可以和Power BI模型中的用户权限设置产生联动,且支持的动画形式相对较多。坏处是消耗一定的内存及硬盘。

第二种是将以上度量值的<SVG></SVG>部分保存成外部SVG文件,使用添加页面背景的方式导入Power BI:

这种SVG文件很小,只有几个KB,加载迅速,移动丝滑,但是支持的动画相对基础,也无法和模型产生联动。

第三种和第二种类似,针对单个图表添加水印,可以绘图区单独导入SVG文件:


0 人点赞