【问题标题】:watermark in birt based on parameterbirt中基于参数的水印
【发布时间】:2014-03-22 04:40:09
【问题描述】:

我想在预览模式下显示一张带有水印的发票。我已将报告与我的 Web 应用程序(Spring MVC)集成。

有什么办法吗?

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

抱歉 .. 客户要求以不同的方式来识别事实,而不是通过传递参数。

谢谢

【问题讨论】:

  • 目前您是如何设法显示此水印的?作为 masterPage 的背景图像,还是作为网格的背景图像?还是有什么不同?
  • 我在 masterPage 上使用背景图片。如果有更好的选择,我可以改变
  • 这确实可以帮助我添加水印,但我想从数据集列中选择一个值。您能否建议如何为条件选择该值。

标签: java spring report birt


【解决方案1】:

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

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

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

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

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

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

    vars["useWatermark"]=row["myBooleanDatasetColumn"];

这个数据集必须在报表体某处使用,否则不会触发,变量也不会初始化

  • 选择网格 -> 脚本选项卡 -> onRender

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

【讨论】:

  • Dominique.. 这很酷.. 我想出了这部分,你的评论也证实了这一点.. 但我被困在这里的是 useWatermark 变量将从数据库表的列中获取一个值而不是来自用户输入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多