jasper-reports - 当标题重复时,Jasper Reports 无法正确找到 TOC(目录)中的页面
问题描述
我希望你很好。
目前我正在使用Jasper Reports和Java开发一个报告,为此我使用两个组来对数据源的元素进行分组。
数据库返回的 DataSoruce 具有以下结构(它有两列):
第 1 组 | 亚组 A
第 2 组 | 亚组 A
我使用以下方式在 jasper 文件中显示结果:
->Group 1
SubGroup A
->Group 2
SubGroup A
如您所见,有两个组:组 1和2,每个组都有一个子组,因为这个例子是同一个子组(SubGroup A)。
每个组都配置为出现在 Toc(目录报告)中。我使用iReport 工具,并将每个组配置为具有Hiperlink和Bookmark Level。(具有 1 个书签级别的组和具有 2 个书签级别的子组)。
一切正常,目录显示正确,当我在目录索引中选择一个元素时,文档到达我对应的页面,但是当组或子组的名称彼此相同时出现问题(它已经出现在 TOC 中,其名称重复),Pdf 文件没有到达正确的页面,带我到他们有该标题的第一页。
有人知道我该如何解决这个问题。
谢谢你的帮助。
解决方案
我能够解决这个问题。
1.- 我用表达式创建了一个变量 RANDOM:
new Random().nextInt(1000)
2.- 在锚点名称表达式中,我调用了变量 RANDOM,在它后面我写了一个 *.
$F{TITLE} + "* " + $V{RANDOM}
3.- 在 TOC 报告中,我为每个 $F{label} 添加了以下表达式,如下所示:
( $F{label}.contains("*") ? $F{label}.substring( 0, $F{label}.indexOf("*" )) : $F{label} )
就是这样,每个标题都是唯一的名称,索引将为每个页面提供正确的链接。
推荐阅读
- python - 从(“正确”)conda环境中向集群提交snakemake作业
- javascript - 在禁用 CORS 安全性的情况下修改 chrome 中的 iframe
- python - 我可以将来自 for 循环的数据存储为每次迭代的不同变量吗?
- git - 将 git bisect 保持在祖先路径上
- r - 在循环中减去列
- html - 一个浏览器中的一些损坏的图像链接,但在其他浏览器中都损坏了
- flutter - 如何在 Flutter 中使用 Provider 添加依赖注入
- node.js - 无法通过访问令牌启用 imap
- python - 有没有一个很好的模型可以用来预测营销支出的回报,以适应收益递减的情况?
- typescript - 包含 Context.Provider 和 Context.Consumer 的 React Context 测试组件