【问题标题】:Style a text field in JasperReports在 JasperReports 中设置文本字段的样式
【发布时间】:2011-12-29 10:20:04
【问题描述】:

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

【问题讨论】:

    标签: styles jasper-reports ireport


    【解决方案1】:

    是的,您可以为 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 这是一个文本 \f1\fs52 在 RTF\par 中格式化为 \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

  • 【讨论】:

    • 我询问了内联样式,这可以通过 markup=styled 实现。只需小心将样式字符串与动态元素连接起来,例如 "" + $P{param} + "。请更新您的答案。
    • @ipavlic 谢谢你的评论。我刚刚添加了有关使用markup 的信息。再次感谢
    • 我已经接受了您的回答,因为它包含了我最初询问的内联样式选项。谢谢!
    • 为什么子报表不使用给定的样式呢?等&lt;reportElement style="Calibri" ... 不起作用。
    • 您是否在子报表中添加了样式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    相关资源
    最近更新 更多