web-dev-qa-db-ja.com

JasperReportsのテキストフィールドのスタイル設定

JasperReportsの静的テキストにインラインスタイルを適用する方法を知っています。テキストエレメント(テキストフィールド)でも同じことができますか?はいの場合、どのように?

19
ipavlic

はい、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>

markup属性に関するiReport Ultimateガイドからの引用:

このMarkup属性を使用すると、特定のマークアップ言語を使用してテキストをフォーマットできます。これは、事前にフォーマットされたテキスト、つまりHTMLまたはRTFで印刷する必要がある場合に非常に便利です。簡単なHTMLスタイルタグ(太字や斜体など)を使用して、テキストの特定の部分を強調表示することができます。可能な値は次のとおりです。

  • なし
    テキストの処理は行われず、テキストは提供されたとおりに印刷されます。
  • スタイル付き
    このマークアップは、HTMLに似たタグのセットを使用してテキストをフォーマットすることができ、Java環境。特定のフォントを設定することができます。テキスト、色、背景、スタイルなど、多くの場合、プログラムでテキストをフォーマットするのに十分です。
  • [〜#〜] html [〜#〜]
    HTMLテキストをレポートに印刷する場合、これが必要なのですが、主な用途はテキストの書式設定であるため、表の印刷や画像の追加は期待できません。
  • [〜#〜] rtf [〜#〜]
    マークアップをこの値に設定すると、コンテンツはRTF code。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 classを使用してスタイルを設定できます。

      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 classを使用してスタイルを設定できます。

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

      サンプルは here です。

  • 37
    Alex K