我认为这是一个普遍的问题。我想使用一个textfield来获取动态数据,并且不超过给定的最大高度。例如,我有一个textfield,如果它得到的文本在一行中,那么textfield将是一行高度,并且在它下面还有其他元素,它将随着浮动定位而向上移动。或者,如果我想要一个3行的最大高度,如果文本超过了这个空间,那么剩下的就会被裁剪。我不想使用java表达式来修剪文本,因为它并不总是准确的。我是贾斯珀的新手,我想知道是否有办法做到这一点。我做了很多搜索,但可能有什么东西我错过了,我希望有人能帮助我。谢谢
发布于 2015-05-11 15:13:25
我设法通过扩展net.sf.jasperreports.engine.util.AbstractTextMeasurerFactory和重写net.sf.jasperreports.engine.fill.TextMeasurer ()方法来解决这个问题;我还必须扩展net.sf.jasperreports.engine.fill.TextMeasurer并覆盖createMeasurer()方法。现在,每当我想要最大的行数,没有溢出时,我就会向该文本字段(例如maxLines)添加一个属性,该属性将被传递给我的自定义TextMeasurerFactory。希望这能帮到你。
发布于 2018-04-20 11:53:08
我们在使用JasperReports4.5时也遇到了类似的问题,在那里我们有一个带有头和表的发票。我们希望标题具有基于特定字段长度(如地址、合作伙伴名称等)的动态高度,但不超过临界限制,否则标头将推送表,从而将其拆分为多个页面,从而造成混乱。此外,发票不应超过1页。我们最终不得不将标题移动到背景部分,在该部分中,我们还为由垂直行(因此它将延伸到A4页面的末尾)和白色的不透明方块组成的表设置了一个背景。这样,如果标题超过最大高度,它将位于表的背景之下,裁剪文本。这就是我们想要的效果。听起来很疯狂,但成功了.
https://stackoverflow.com/questions/19932782
复制相似问题