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

DynamicReports生成PDF时修改目录默认标题的方法

问题说明

使用基于JasperReports的DynamicReports生成包含多个子报告的PDF时,配置自动生成目录的核心代码如下:

JasperReportBuilder report = report();

TableOfContentsCustomizerBuilder customTOC = new TableOfContentsCustomizerBuilder();
customTOC.setTitleStyle(ReportStyles.BOLDSTYLE);

report
    .setTemplate(Base.createTemplate())
    .tableOfContents(customTOC)
    .setDataSource(new JREmptyDataSource());

运行后生成的目录默认标题固定为Table of Contents,默认样式如下:

Table of Contents
Page1      ……………………… 1
Page2      ……………………… 2
Page3      ……………………… 3

生成非英文版本PDF时,尝试修改locale(区域设置)无法更改该默认目录标题,需要找到可自定义标题文本的实现方案。

解决方案

直接继承TableOfContentsCustomizer父类,重写其title()方法,即可自由设置目录标题的文本内容,无需依赖locale配置,示例代码如下:

public class CustomTableOfContentsCustomizer extends TableOfContentsCustomizer {
    @Override
    public ComponentBuilder<?, ?> title() {
        // 此处可替换为任意需要的目录标题文本,例如中文“目录”
        return cmp.text("目录")
                .setStyle(ReportStyles.BOLDSTYLE);
    }
}

将自定义的目录定制类实例传入tableOfContents()方法替换原有配置即可生效,除标题文本外,也可在重写的方法中自定义标题的字号、间距、对齐方式等样式属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:12:43