JasperReports textField 的 textAdjust
最后修改日期:2024年2月21日
在本文中,我们介绍 JasperReports 库中 textField 的 textAdjust 属性。
JasperReports 是一个开源报告库。它可以创建各种格式的报告,包括 PDF、HTML、XLS 或 CSV。JasperReports 创建面向页面、可直接打印的文档。
JasperReports 中的 textAdjust 属性用于控制文本字段的内容超出预定尺寸时的行为。它是在 JasperReports Library 7.5.0 中引入的,取代了已弃用的 isStretchWithOverflow 属性。
它可以取以下值:
StretchHeight- 允许文本字段在内容溢出时垂直扩展CutText- 如果文本长度超过字段宽度,则截断文本ScaleFont- 缩放字体大小以使文本适合字段内
示例
下一个示例演示了所有三个选项。
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 参数将其传递给报告。
在本文中,我们研究了 textField 的 textAdjust 属性。