我知道如何在JasperReports中将内联样式应用于静态文本。可以对文本元素(文本字段)执行相同的操作吗?如果是,怎么样?
答案 0 :(得分:37)
是的,您可以为 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这是RTF \ par中的文本\ f1 \ fs52格式\ 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。