我认为这是一个更普遍的问题。我想使用一个文本字段来获取动态数据并且不会拉伸超过给定的最大高度。例如,我有一个文本字段,如果它获取适合一行的文本,则该文本字段将是一个行高,并且我在它下面还有其他元素,它将随着浮动定位向上移动。或者,如果我想要 3 行的最大高度并且文本超出该空间,那么其余部分将被修剪。我不想使用 java 表达式来修剪该文本,因为它并不总是准确的。我是 jasper 的新手,我想知道是否有任何方法可以做到这一点。我做了很多搜索,但也许我错过了一些东西,我希望有人能帮助我。谢谢
问问题
1745 次
2 回答
0
我设法通过扩展 net.sf.jasperreports.engine.fill.TextMeasurer 和覆盖 initialize() 方法来解决这个问题;我还必须扩展 net.sf.jasperreports.engine.util.AbstractTextMeasurerFactory 并覆盖 createMeasurer() 方法。现在,每当我想拥有最大行数且不溢出时,我都会向该文本字段(例如 maxLines)添加一个属性,该属性将传递给我的自定义 TextMeasurerFactory。我希望这对你有所帮助。
于 2015-05-11T15:13:25.173 回答
0
我们在使用 JASPER Reports 4.5 时遇到了类似的问题,我们有一张带有标题和表格的发票。我们希望标题具有基于某些字段(如地址、合作伙伴名称等)的长度的动态高度,但不超过临界限制,否则标题将推动表格,从而通过将其拆分而造成混乱多个页面。此外,发票不应超过 1 页。我们最终不得不在背景部分移动标题,我们还为表格放置了一个背景,该背景由垂直线(因此它将延伸到 A4 页面的末尾)和一个白色不透明的正方形组成。这样,如果标题超过最大高度,它将进入表格背景下方,裁剪文本。这就是我们想要的效果。听起来很疯狂,但它确实有效......
于 2018-04-20T11:53:08.657 回答