Jasper reports 在jasper报告中将文本字段拉伸到最大高度

Jasper reports 在jasper报告中将文本字段拉伸到最大高度,jasper-reports,height,max,textfield,stretch,Jasper Reports,Height,Max,Textfield,Stretch,我认为这是一个更普遍的问题。我想使用一个文本字段,它可以获取动态数据,并且不会拉伸超过给定的最大高度。例如,我有一个textfield,如果它得到的文本适合一行,textfield将是一行高,我在它下面有其他元素,它们将随着浮动定位向上移动。或者,如果我想要一个3行的最大高度,如果文本超过了这个空间,那么其余的将被修剪。 我不想使用java表达式来修剪文本,因为它并不总是准确的。我是贾斯珀的新手,我想知道是否有办法做到这一点。我做了很多搜索,但也许有什么我错过了,我希望有人能帮助我。谢谢我通过扩

我认为这是一个更普遍的问题。我想使用一个文本字段,它可以获取动态数据,并且不会拉伸超过给定的最大高度。例如,我有一个textfield,如果它得到的文本适合一行,textfield将是一行高,我在它下面有其他元素,它们将随着浮动定位向上移动。或者,如果我想要一个3行的最大高度,如果文本超过了这个空间,那么其余的将被修剪。
我不想使用java表达式来修剪文本,因为它并不总是准确的。我是贾斯珀的新手,我想知道是否有办法做到这一点。我做了很多搜索,但也许有什么我错过了,我希望有人能帮助我。谢谢

我通过扩展net.sf.jasperreports.engine.fill.textmasurer并重写initialize()方法成功地解决了这个问题;此外,我还必须扩展net.sf.jasperreports.engine.util.AbstractTextMeasureFactory并重写createMeasurer()方法。
现在,每当我想要最大行数且不溢出时,我都会向传递给自定义TextMeasureFactory的文本字段(例如maxLines)添加一个属性。我希望这对您有所帮助。

我们在使用JASPER Reports 4.5时遇到了类似的问题,其中我们有一张带有标题和表格的发票。我们希望页眉具有基于特定字段长度(如地址、合作伙伴名称等)的动态高度,但不要超过临界限制,否则页眉将推送表格,从而通过将其拆分到多个页面而造成混乱。此外,发票不得超过1页。 我们最终不得不移动背景部分的标题,在那里我们还为表格添加了一个背景,包括垂直线(因此它将延伸到A4页面的末尾)和一个白色不透明的正方形。 这样,如果标题超过最大高度,它将位于表格背景之下,裁剪文本。这是我们想要的效果。
听起来很疯狂,但它起作用了…

如果您只想显示n行数据,那么您应该在其中创建一个高度为n行数据的文本字段,并设置
StretchOverflow
false。@user1791574,文本是动态的。。有时有n行数据,有时有k行数据,但我不想拉伸超过给定的最大行数据高度。我无法在没有StretchOverflow的情况下设置固定高度。我的n线数据显示最大线数据。仔细阅读。您应该固定textfield的高度。@user1791574,但是当文本适合1行数据,并且textfield的最大高度设置为3行数据时,在这种情况下,我不希望我的textfield具有3行数据高度,而只具有1行数据高度,因此下面的其他元素将正好浮动在此textfield下:)我希望它具有stretchWithOverflow,但不超过最大行数据高度,则需要限制服务器端的数据。意思是假设你的一个pdf文件最多可以保存150个字符,你想要最多3行,还有500行,那么你需要剪切最后50个字符,并附带450个字符。它将帮助您扩展数据,并维护您的最高线路礼仪。这不是一个完美的解决方案,但你可以试试。