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

