【问题标题】:stretch a textField to a max height in jasper reports在碧玉报告中将文本字段拉伸到最大高度
【发布时间】:2013-11-12 15:11:20
【问题描述】:

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

【问题讨论】:

  • 如果你只想显示 n 行数据,那么你应该创建一个高度为 n 行数据的文本字段并设置StretchOverflow false。
  • @user1791574,文本是动态的.. 有时有 n 行数据,有时有 k 行数据,但我不想拉伸超过给定的最大行数据高度。我无法在没有 StretchOverflow 的情况下设置固定高度..
  • 我的 n 行数据显示最大行数据。仔细阅读。你应该修复文本字段的高度。
  • @user1791574,但是当文本适合 1 行数据,并且文本字段的最大高度设置为 3 行数据时,在这种情况下,我不希望我的文本字段具有 3 行数据高度,但只有 1 行数据高度,所以下面的其他元素会在这个文本字段下浮动 :) 我希望它可以拉伸,但不超过最大行数据高度
  • 那么你需要从服务器端限制你的数据。意味着假设您的一个 pdf 最多可以容纳 150 个字符,并且您想要最多 3 行并且您有 500 行,那么您需要剪切最后 50 个字符并附带 450 个字符。它将帮助您扩展数据并保持最大的行礼节。它不是一个完美的解决方案,但您可以尝试一下。

标签: jasper-reports height max textfield stretch


【解决方案1】:

我设法通过扩展 net.sf.jasperreports.engine.fill.TextMeasurer 并覆盖 initialize() 方法来解决这个问题;我还必须扩展 net.sf.jasperreports.engine.util.AbstractTextMeasurerFactory 并覆盖 createMeasurer() 方法。 现在,每当我想要最大行数且不溢出时,我都会向该文本字段(例如 maxLines)添加一个属性,该属性将传递给我的自定义 TextMeasurerFactory。我希望这对你有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多