文本表达式:将白空间保持在文本场的末尾



我在报告中遇到问题,在该报告中,我有一个$F{field},您可以在其中收到一个带有whitespaces的值。示例:
" 20142101"Textfield必须水平与"正确"一致。
我的PDF的结果是" 20142101"(未出现Whitespaces)

问题(我认为)是 jasperreports 自动在 textfield 中进行修剪,但我不想要这个!

我尝试使用选项:

  • 溢出
  • 细节溢出时打印
  • net.sf.jasperreports.text.truncate.at.char = true
  • net.sf.jasperreports.print.keep.full.text = true
  • 标记:无或html(带有标签)

但是它不起作用...

有什么建议?

您可以使用带有右/左填充的无边界盒作为Textfields。

<textField>
<reportElement ../>
<box border="None" rightPadding="10"/>
<textElement textAlignment="Right"/>
<textFieldExpression.. 

信息来源

注意,当我尝试出来时,我的jasper Studio编辑器将框元素变成以下内容,但具有相同的效果。

<textField>
      <reportElement mode="Opaque" x="233" y="0" width="303" height="18" forecolor="#FFFFFF" backcolor="#817F82" uuid="501dc3cf-f3cf-45d4-aa25-de24c4100354"/>
      <box rightPadding="5">
        <pen lineWidth="0.0" lineStyle="Solid"/>
      </box>
     <textElement textAlignment="Right" verticalAlignment="Middle">
       <font fontName="Arial" size="10" isBold="true"/>
     </textElement>
     <textFieldExpression><![CDATA["My data where I want blank spaces in the end of this sentence.   "]]></textFieldExpression>
</textField>

谢谢您的帮助!

我找到了一个有效的解决方案,但不是很合适...

(我的$ f {field}始终是60个字符的字符串)

($F{field} != null && $F{field}.length() == 60 && $F{field}.substring(59).equals(" ")) ? "<pre>"+$F{field}.substring(0,59)+"&nbsp</pre>" : $F{field}

(使用标记html)

我也会用 t进行测试。

thx