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
相关产品推荐
相关产品推荐

