ZetCode

JasperReports textField 的 textAdjust

最后修改日期:2024年2月21日

在本文中,我们介绍 JasperReports 库中 textField 的 textAdjust 属性。

JasperReports 是一个开源报告库。它可以创建各种格式的报告,包括 PDF、HTML、XLS 或 CSV。JasperReports 创建面向页面、可直接打印的文档。

JasperReports 中的 textAdjust 属性用于控制文本字段的内容超出预定尺寸时的行为。它是在 JasperReports Library 7.5.0 中引入的,取代了已弃用的 isStretchWithOverflow 属性。

它可以取以下值:

示例

下一个示例演示了所有三个选项。

report.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
        "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports"
              xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports
                                    http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
              name="report" topMargin="20" bottomMargin="20">

    <style name="defFont" isDefault="true" vAlign="Top" hAlign="Left"/>
    <parameter name="text"/>

    <detail>
        <band height="330">

            <rectangle>
                <reportElement x="3" y="3" width="490" height="85"/>
            </rectangle>

            <textField textAdjust="CutText">
                <reportElement x="5" y="5" width="490" height="80"/>
                <textFieldExpression>
                    <![CDATA[$P{text}]]>
                </textFieldExpression>
            </textField>

            <rectangle>
                <reportElement x="3" y="90" width="490" height="105"/>
            </rectangle>

            <textField textAdjust="StretchHeight">
                <reportElement x="5" y="95" width="490" height="80"/>
                <textFieldExpression>
                    <![CDATA[$P{text}]]>
                </textFieldExpression>
            </textField>

            <rectangle>
                <reportElement x="3" y="200" width="490" height="85"/>
            </rectangle>

            <textField textAdjust="ScaleFont">
                <reportElement x="5" y="205" width="490" height="80"/>
                <textFieldExpression>
                    <![CDATA[$P{text}]]>
                </textFieldExpression>
            </textField>

        </band>
    </detail>

</jasperReport>

我们在报告中有三个文本字段。

<parameter name="text"/>

较大的文本通过 name 参数传递给报告。

<textField textAdjust="CutText">
    <reportElement x="5" y="5" width="490" height="80"/>
    <textFieldExpression>
        <![CDATA[$P{text}]]>
    </textFieldExpression>
</textField>

在此 textField 中,我们将 textAdjust 属性设置为 CutText 值。

<rectangle>
    <reportElement x="3" y="90" width="490" height="105"/>
</rectangle>

为了理解文本字段的开始和结束位置,我们在它们周围放置了矩形。

report.gvy
package com.zetcode

@Grab(group='net.sf.jasperreports', module='jasperreports', version='6.21.0')
@Grab(group='com.github.librepdf', module='openpdf', version='1.3.39')

import net.sf.jasperreports.engine.JasperCompileManager
import net.sf.jasperreports.engine.JasperFillManager
import net.sf.jasperreports.engine.JasperExportManager
import net.sf.jasperreports.engine.JREmptyDataSource

def text = '''
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id justo 
lacus. Nullam semper sed nulla finibus semper. Sed tristique ipsum et
ullamcorper ullamcorper. In interdum sapien eu scelerisque faucibus. Sed nec ex
at tortor varius aliquet. Donec cursus lorem massa, faucibus auctor neque
dignissim id. Quisque eu ultrices nisl, et commodo ligula. Phasellus neque nunc,
interdum quis lectus a, cursus egestas tellus. Fusce dictum ligula sed porta
scelerisque. 
'''

def xmlFile = 'report.xml'
def jreport = JasperCompileManager.compileReport(xmlFile)

def params = ['text': text]
def jrPrint = JasperFillManager.fillReport(jreport, params,
        new JREmptyDataSource())

JasperExportManager.exportReportToPdfFile(jrPrint, 'report.pdf')

这个 Groovy 文件构建了报告。我们定义了文本并通过 text 参数将其传递给报告。

在本文中,我们研究了 textFieldtextAdjust 属性。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 JasperReports 教程