You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用node-jasper库传递多数据集填充PDF中的多个图表

解决方案

1. 问题核心原因

你的配置存在两处关键问题:

  • JRXML文件未声明子数据源对应的参数,也没有给子数据集绑定你传入的数据源
  • 主数据集为空,导致承载图表的detail band不会被渲染,图表自然无法显示

2. 修改JRXML文件配置

2.1 新增数据源参数声明

在原有<parameter name="title" class="java.lang.String"/>标签下方,新增两个数据源类型的参数:

<parameter name="dataset1" class="net.sf.jasperreports.engine.data.JsonDataSource"/>
<parameter name="dataset2" class="net.sf.jasperreports.engine.data.JsonDataSource"/>

2.2 给子数据集绑定数据源

找到两个饼图对应的<datasetRun>标签,分别添加数据源表达式关联传入的参数:
第一个饼图的datasetRun修改为:

<datasetRun subDataset="dataset1" uuid="7466bccc-a18d-4c68-801f-caac7533de69">
    <dataSourceExpression><![CDATA[$P{dataset1}]]></dataSourceExpression>
</datasetRun>

第二个饼图的datasetRun修改为:

<datasetRun subDataset="dataset2" uuid="ce453374-bcf5-4b02-b8d9-35b263f143bc">
    <dataSourceExpression><![CDATA[$P{dataset2}]]></dataSourceExpression>
</datasetRun>

3. 修改Node.js代码配置

给主数据集设置至少一条空记录,保证detail band可以正常渲染,把原有dataset:{},修改为:

dataset: [{}]

4. 生效配置

修改完JRXML后,需要重新编译生成.jasper文件,替换到./jasperFiles/test.jasper路径下的旧文件,再重启服务访问接口即可正常显示两个饼图。

内容的提问来源于stack exchange,提问作者Moussaoui Abderraouf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:45:09