【发布时间】:2011-12-29 10:20:04
【问题描述】:
我知道如何将内联样式应用于 JasperReports 中的静态文本。可以对文本元素(文本字段)做同样的事情吗?如果是,怎么做?
【问题讨论】:
标签: styles jasper-reports ireport
我知道如何将内联样式应用于 JasperReports 中的静态文本。可以对文本元素(文本字段)做同样的事情吗?如果是,怎么做?
【问题讨论】:
标签: styles jasper-reports ireport
是的,您可以为 textField 元素应用样式。
报告模板示例:
<jasperReport ..>
<style name="ColoredField" style="Default" forecolor="#FF0000">
<conditionalStyle>
<style/>
</conditionalStyle>
</style>
...
<detail>
<band height="52" splitType="Stretch">
<!--Using the style declared in this template-->
<textField>
<reportElement key="textWithStyle" style="ColoredField" mode="Opaque" x="0" y="10" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{TASKS_SERIES}]]></textFieldExpression>
</textField>
<!--Basic formatting (set font and indent) using-->
<textField>
<reportElement key="textWithoutStyle" x="100" y="10" width="100" height="20"/>
<textElement>
<font fontName="Arial" size="14" isBold="true" isItalic="true" isUnderline="false"/>
<paragraph leftIndent="10"/>
</textElement>
<textFieldExpression><![CDATA[$F{TASKS_TASK}]]></textFieldExpression>
</textField>
<!--Markup using: styled-->
<textField>
<reportElement x="200" y="10" width="590" height="42"/>
<textElement markup="styled"/>
<textFieldExpression><![CDATA["The static text without any format.\nThe field's data with bold format<style isBold='true'>:" + $F{TASKS_SUBTASK} + "</style>\n<style isBold='true' isItalic='true' isUnderline='true'>The static underlined text with bold and italic format</style>"]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
iReport Ultimate Guide 中关于markup 属性的引用:
此
Markup属性允许您使用特定标记来格式化文本 语言。当您必须打印一些文本时,这非常有用 预格式化的,即 HTML 或 RTF 格式。简单的 HTML 样式标签 (如粗体和斜体)可用于示例 突出显示特定的文本块。可能的值如下 如下:无
对文本不做任何处理,打印文本 就像提供的一样。风格
该标记能够使用一组类似 HTML 的标记来格式化文本,并且在 Java 环境中非常流行。 它允许为文本块、颜色、背景、样式等设置特定的字体。 以编程方式格式化文本通常就足够了。HTML
如果您想在报表中打印一些 HTML 文本,这就是您所需要的,但它的主要用途是格式化文本,所以不要期望能够打印表格或添加 图片。RTF
将标记设置为此值,内容将被解释为 RTF 代码。 RTF 是一种流行的以纯文本形式存储的文档格式。图 19 中的“这是一个 RTF 格式的文本”的一小段文本是使用以下字符串生成的:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fprq2\fcharset0 Swift;}} {*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs20 这是一个文本 \f1\fs52 在 RTF\par 中格式化为 \f0\fs20 }
该字符串实际上是使用简单的文字处理器创建的 RTF 文件。报告字体
这是预设字体的名称,将从中获取所有字符属性。 此属性已弃用,仅用于兼容性 原因(这就是标签被划线的原因。为了定义一个 要在整个文档中使用特定样式的文本,请使用样式。
markup的使用示例为here。
您可以使用style 进行设置:
另一个样本是here。
如果使用DynamicJasper API,您可以在ar.com.fdvs.dj.domain.builders.ColumnBuilder 类的帮助下设置样式:
AbstractColumn columnState = ColumnBuilder.getNew()
.addColumnProperty("state", String.class.getName())
.addTitle("State").addWidth(new Integer(85))
.addStyle(detailStyle).addHeaderStyle(headerStyle).build();
样本是here。
如果使用JasperReports API,您可以设置样式,例如,借助net.sf.jasperreports.engine.base .JRBasePrintText 类:
JRPrintText text = new JRBasePrintText(jasperPrint.getDefaultStyleProvider());
text.setStyle(boldStyle);
样本是here。
【讨论】:
markup 的信息。再次感谢
<reportElement style="Calibri" ... 不起作用。