如何在使用文本字段截断时使用jasper报告HTML导出来防止换行?

时间:2012-02-03 15:05:48

标签: jasper-reports ireport

使用iReport 4.5.0,我正在设置这两个属性和值:

  • net.sf.jasperreports.text.truncate.at.char=true
  • net.sf.jasperreports.text.truncate.suffix=...

意图是在文本字段的末尾添加“...”,只要它们必须被截断,并且截断确定发生在字符级别,而不是字级别。这在导出为PDF时按预期工作。但是,在导出到HTML时,最后一个截断的标记(附加后缀)通常(尽管不总是)包装不正确。 (即使StretchType设置为No Stretch,它也会这样做。)示例:

Jasper HTML Export Error

如果我更改net.sf.jasperreports.text.truncate.at.char=false(以便它在单词而不是字符上打破),它似乎更常用,但只是因为单词中断通常会为后缀留出更多空间。意外的换行仍然会出现分词,特别是如果我增加给定后缀的长度。

我最好的猜测是,HTML导出器测量不能精确计算给定后缀所需的宽度(如果它正在计算它)。

  1. 任何人都可以确认吗?
  2. 有关解决方法的任何建议吗?
  3. 似乎将StretchType设置为No Stretch,HTML导出器也应该设置white-space:nowrap。但是,虽然这会阻止换行,但后缀的末尾会被部分隐藏(由于溢出:隐藏样式)。

1 个答案:

答案 0 :(得分:1)

“我最好的猜测是,HTML导出器测量不能精确计算给定后缀所需的宽度(如果它正在计算它)。”

  1. 我确认这肯定是原因。
  2. 但实际上没有一个简单的解决方法。你的PDF很好,所以你做的正确。嗯......你正在做很多事情。 ; - )

    在HTML中,您不知道 - 以非常基本的方式 - 将呈现文本的字体的精确细节。你当然可以指定字体。但客户机可能没有它。或者它可能有一个相同......但不完全相同。或者客户端可能会选择通过各种客户端覆盖机制使用不同的字体或不同的大小。

    如果你尝试不同的字体,你应该注意到略有不同的结果。您可能能够找到一个更经常工作的方法。 (显然,这不是100%完美。)

    如果您没有使用Font Extensions,那么您应该这样做。如果您使用的是字体扩展,那么您可以指定应该在HTML中使用的降序首选字体列表。这应该给你足够的控制权来获得在很多情况下都很好的行为。通常你可以在你关心的所有情况下使它完美。