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
属性。