Jasper reports jasper文本字段被截断

Jasper reports jasper文本字段被截断,jasper-reports,ireport,dynamic-jasper,Jasper Reports,Ireport,Dynamic Jasper,我的jasper报告中有一个字体问题,其中一个更冗长的文本字段(细节栏中的最后一个)在PDF和PDF预览中被截断,但在内部预览中却没有 e、 g 内部预览: Here is a fake description. It fits perfectly, fitting just in the lines. PDF预览 Here is a fake description. It fits perfectly, fitting just in the Jasper(似乎)正在使用某种算法来计算

我的jasper报告中有一个字体问题,其中一个更冗长的文本字段(细节栏中的最后一个)在PDF和PDF预览中被截断,但在内部预览中却没有

e、 g

内部预览:

Here is a fake description. It fits
perfectly, fitting just in the lines.
PDF预览

Here is a fake description. It 
fits perfectly, fitting just in the
Jasper(似乎)正在使用某种算法来计算字段的高度,我的文本几乎不适合,然后当生成PDF时,文本在下一行换行并消失

我没有使用自定义字体(只是默认/隐式的“SansSerif”),也没有使用除粗体/斜体以外的任何自定义样式。这种行为在iReport的PDF预览和我的代码在Windows和MacOS上生成的PDF中都可以看到(Linux可能仍然存在这个问题,但我的示例文本在Ubuntu上没有显示这种行为)

我已经玩过Stretch类型、Position类型和Stretch with Overflow,并且将这个文本字段移动到了它自己的区域,但是没有一个修复这个错误(其中有几个会导致其他错误)

我很幸运地将字体更改为其他内置字体,但这只是告诉我我的示例不适用于该特定字体,并不是说我已经修复了错误

任何提示都将不胜感激

更新1

我试着从Jasper Reports 5.2.0升级到6.2.0,Jasper Fonts 4.0.0升级到6.0.0。。。没有变化

更新2

尝试编辑my
src/main/resources/jasperreports\u extension.properties
并添加

net.sf.jasperreports.export.pdf.force.linebreak.policy=true
。。。没有变化

(值得注意的是,在我的用例中,我不能使用
isStretchWithOverflow=“true”
,所以这可能就是它不起作用的原因。)

更新3

我试图通过编辑
src/main/resources/jasperreports\u extension.xml
并添加以下内容来嵌入字体:

net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.arialFontFamily=fonts/customFontFamilies.xml
customFontFamilies.xml:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
 <fontFamily name="ArialEM">
   <normal><![CDATA[fonts/Arial/Arial.ttf]]></normal>
   <bold><![CDATA[fonts/Arial/Arial Bold.ttf]]></bold>
   <italic><![CDATA[fonts/Arial/Arial Italic.ttf]]></italic>
   <boldItalic><![CDATA[fonts/Arial/Arial Bold Italic.ttf]]>/boldItalic>
   <pdfEncoding><![CDATA[Cp1252]]></pdfEncoding>
   <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
 </fontFamily>
</fontFamilies>

/粗体斜体>
。。。没有骰子。(虽然这确实有助于解决Firefox的PDF呈现程序无法呈现粗体字体的问题。)

更新4

我注意到,在所有的测试用例中,我都能够创建第一行是空白的,因此我将特定单元格更改为垂直对齐顶部,这是可行的,但当其中没有太多文本时,当然会使一个单元格错位

作为一种解决方案,放弃了它,但可能对某些人有用

更新5

在这一点上,我希望我已经尝试了“真正的”解决方案,看着他们都惨死。因此,我们进入了黑客解决方案的领域。首先,我尝试了@wmmci的解决方案,但他的回答改变了我的盒子的高度(因为它是由
动态Jasper
动态计算的)。我注意到我可以创建的所有示例都涉及字符串中的词内句点,例如“foo…bar”。那可能不是你的情况,但对我来说。因此,我在字内空格之后插入了一个“hair space”(
&

这显然不是一个真正的解决方案,只是一个临时的解决方案,直到我能够找到更多的bug示例

更新6


我查过了,我没有@KarolisŠarapnickis关于
printOrder
的问题。好吧。我将继续战斗

我也遇到了同样的问题,我尝试了所有可能的配置-都不起作用。最后,作为一种解决方法,我在字段中添加了一个新行字符,它就起作用了。
类似这样的情况:$F{description}+“\n”

在文本被截断时也有同样的问题,似乎什么都不起作用。 幸运的是,我发现我的根xml元素具有以下属性:

printOrder="Horizontal"

删除它解决了我的问题。

在我的例子中,我在一个文本字段中有很长的文本。添加换行符可以解决某些单元格的问题,但对于跨页面的非常长的单元格则不行。为了最终解决这个问题,我必须将文本字段设置为“拉伸到”“相对带高度”。以前,它被设置为相对对象。我的猜测是,相对于最高对象的计算错误(低于需要)

这就成功了:

textField.setStretchType( StretchTypeEnum.RELATIVE_TO_BAND_HEIGHT );

嗯,我不确定你是不是和我遇到的问题一模一样。
但我的解决方案是将字段的属性“net.sf.jasperreports.print.keep.full.text”设置为“true”。

在我的情况下,我仍然存在此问题,但JRXML文件的根节点中没有
printOrder=“Horizontal”
。不过,希望这会对其他人有所帮助。任何可扩展的文本区域都会出现此问题,因此您需要将回车添加到所有内容中。此外,它还将影响场地高度。还是。。。对于绝望的人来说,这是一个可行的解决办法(可以说我就是这样),对我来说也是如此。在我们的例子中,jasperprint是在linux服务器上生成的,并显示在windows客户端上。我的猜测是,它使用稍小一点的linux字体来计算所需的空间,然后在windows上显示时,windows字体不适合。向上投票-在找到此解决方案之前,我花了很多时间尝试和搜索,此解决方案对我们有效。然而,我们确实在一些字段的底部得到了不必要的换行符。我相信这可能与我们的pdf字体是Helvetica和jasper字体是arial有关。显然pdf字体已被弃用,因此我们将研究更好的修复方法。可能使用字体扩展。您找到解决此问题的方法了吗?我也有同样的问题,这很烦人。。。jasper似乎无法计算最大字符数,如果它是以粗体显示的输入数据,然后在导出到PDF时剪切剩余字符以供将来参考,有此问题的用户应检查是否正确使用