代码之家  ›  专栏  ›  技术社区  ›  Saurabh Singhal

基于参数的birt水印

  •  1
  • Saurabh Singhal  · 技术社区  · 11 年前

    我有一张发票,我想在预览模式下显示,并带有水印。我已经将该报告与我的web应用程序(SpringMVC)集成。

    有什么解决办法吗?

    编辑:我想从数据集(表:invoiceheader)中选择一个值,并使用该值来决定是否显示水印。我无法从Birt脚本中选择该值。请你指导一下好吗。。

    很抱歉客户要求使用不同的方法来识别事实,而不是传递参数。

    谢谢

    1 回复  |  直到 10 年前
        1
  •  3
  •   Dominique    10 年前

    您需要在发票的.rptdesign中声明一个报告参数。例如,我们将其命名为“useWatermark”,并将数据类型设置为布尔值,将默认值设置为true。

    enter image description here

    在设计器的大纲视图中选择报表根->脚本选项卡->出厂前

    if (!params["useWatermark"].value){
        reportContext.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("backgroundImage", "");
    }
    

    如果参数设置为false,则此脚本将删除水印。默认情况下,母版页命名为“简单母版页”,但如果您已重命名它,或者如果报告中定义了多个母版页,则应相应地调整脚本。

    编辑: 如果我们需要从数据集中提取信息,那么我们不能使用masterPage,我们必须使用网格。

    • 创建包含一个单元格的网格,并将页面的所有内容放入其中
    • 将水印设置为网格的背景图像
    • 在“Outline/variables”分支中创建一个报告变量“useWatermark”(参见下图),根据需要将默认值设置为true/false
    • 选择数据集invoiceHeader->脚本选项卡->onFetch,并从布尔数据集列或任何返回true/false的表达式中影响变量:

      vars[“useWatermark”]=行[“myBooleanDatasetColumn”];

    此数据集 必须在报告正文的某个位置使用 ,否则它不会被触发,变量也不会被初始化

    • 选择网格->脚本选项卡->启用渲染

      if(!vars[“useWatermark”]){ this.getStyle().backgroundImage=“”; }

    enter image description here