在JasperReports中设置文本字段的样式

时间:2011-11-15 10:55:33

标签: styles jasper-reports ireport

我知道如何在JasperReports中将内联样式应用于静态文本。可以对文本元素(文本字段)执行相同的操作吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:37)

是的,您可以为 textField 元素应用样式。

iReport使用

报告模板的示例:

<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

    如果使用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

    如果使用JasperReports API,您可以设置样式,例如,在net.sf.jasperreports.engine.base .JRBasePrintText类的帮助下:

    JRPrintText text = new JRBasePrintText(jasperPrint.getDefaultStyleProvider());
    text.setStyle(boldStyle);
    

    样本为here