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

如何在DynamicJasper报表中设置字体删除线

在DynamicJasper中设置字体删除线(Strikethrough)的方法

DynamicJasper本身的Font类没有直接提供设置删除线的API,但可以通过自定义Style来实现——因为它底层依赖JasperReports的样式体系,具体方法如下:

方法一:通过自定义Style直接设置

创建Style对象后,利用setProperty方法指定删除线属性,再将该样式应用到需要的列或文本元素上:

// 初始化带删除线的样式
Style strikeThroughStyle = new Style();
// 设置删除线属性,对应JasperReports的底层属性
strikeThroughStyle.setProperty(Style.PROPERTY_STRIKE_THROUGH, "true");
// 可搭配其他字体样式
strikeThroughStyle.setFont(Font.ARIAL_MEDIUM);
strikeThroughStyle.setItalic(true);

// 将样式应用到列
Column targetColumn = ColumnBuilder.getNew()
    .setColumnProperty("targetField", String.class.getName())
    .setTitle("目标列")
    .setStyle(strikeThroughStyle)
    .build();

方法二:操作底层JasperDesign对象(进阶)

如果需要对生成的JasperDesign做更精细的控制,可以在DynamicReport生成后,直接修改对应的文本元素样式:

// 假设已生成DynamicReport实例
DynamicReport dynamicReport = ...;
// 转换为JasperDesign对象
JasperDesign jasperDesign = new JRXmlWriter().write(dynamicReport);

// 遍历字段,为指定字段设置删除线
for (JRTextField field : jasperDesign.getFields()) {
    if ("targetField".equals(field.getName())) {
        field.getStyle().setStrikeThrough(true);
    }
}

原理说明:DynamicJasper的Font类仅封装了常用字体属性(如斜体、下划线),删除线属于样式范畴,需要通过Style对象映射JasperReports的底层样式属性来实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:17:05