4

我正在尝试根据 XML 文件中的一些数据生成报告。基本上,报告的第一页包含一些静态文本、一个徽标、一些动态文本和数据以及两个图表。接下来的页面应该包含一些文本和旁边的图表。我这里有一个很大的问题。BIRT 提供的图表不适合我的报告,所以我想也许我可以根据我的 xml 文件中的数据生成一些图表(使用外部应用程序),将图表保存到文件中,并最终将这些文件动态加载到我的报告中. 这对于第一页上的图表来说非常容易。但是,下一页需要有自己的图表,我找不到合适的方法将相应的图像包含到下一页中。所以这是我的问题:

  1. 这有可能以某种方式创建自定义设计图表吗?如果是的话怎么做?以及如何将图表添加到报告的 2,3,... 页?
  2. 我的 xml 文件中有所需的所有数据,这是否可以在创建报告时使用一些 javascript 动态绘制图形?我的意思是使用数据我只是绘制我自己的定制设计的图表?(这是一个非常简单的图表,没有花哨的东西)
  3. 如果我寻求在外部创建图表并将它们动态添加到报告中的解决方案,我如何将这些图像动态添加到报告的 2,3,.. 页中。(每个页面都有自己的图表!)将使用多个母版页对我有帮助吗?
4

1 回答 1

0

您可以使用 D3.js 或 Flash 创建自定义设计的图表,并在 BIRT Designer 4.x 中根据需要添加分页符。有在 BIRT 报告中使用 Flash 的在线教程。

如果您在 BIRT 之外创建自己的图表,则可以使用图像小工具和图像的 URI 将它们作为图像导入。

如果你想使用 D3.js,

  • 添加head.js(" http://d3js.org/d3.v3.js "); 到报表设计的 ClientScript > clientInitialize 脚本
  • 将脚本添加到您的数据集,以创建:
    • 一个数组,例如 myArray = new java.util.ArrayList(); 在之前打开
    • 使用数据集的 onFetch 事件填充该数组的脚本,例如 myArray.add("['"+row["date"]+"','"+row["sales"]+"']") ;
    • 将数组复制到全局变量的脚本,例如 reportContext.setPersistentGlobalVariable("myArray",myArray);
  • 在报表布局中添加一个文本项,您可以在其中:
    • 抓取全局变量,例如:var data = reportContext.getPersistentGlobalVariable("myArray");
    • 使用来自全局变量的数据,使用 d3.js JavaScript 构建您想要的 SVG 可视化。

如果您转向商业 BIRT Designer Professional,其中包含 Flash 对象,您还可以获得 HTML5 图表的 highcharts 库,您可以使用 JavaScript 使用 highcharts.org API 编辑该库。

于 2014-08-06T09:15:47.120 回答