2014-02-11 40 views
1

我们目前正在一个单独的SVN分支中将项目从jdk1.5.0_22迁移到jdk1.7.0_51,tomcat 5.5.35到tomcat 7.0.50和从Ant到Maven3。为什么JasperReports将pdf文本从jdk 1.5截断为jdk1.7?

随着新的项目,我们正面临着其中的PDF报告,其中的JasperReports((在JRXML文件<staticText>)产生了一些标签被截断的问题,而在项目与JDK1.5,Tomcat 5.5和蚂蚁它。不

从这个,我有这些假设的问题的原因:

  1. 的Maven;
  2. JDK 7的编译器;
  3. JDK 7运行;
  4. Tomcat;

这是我对我所做的调查问题的步骤:如果碧玉库(包括iText的和Struts-碧玉报告-插件)匹配中声明的版本

  • 我检查pom;
  • 在Maven中,我运行了dependency:list和dependency:tree来检查是否使用了不同版本的jasperreports;
  • 我已经重建,并重新部署使用不同的设置项目,并比较结果:
 
| jdk compiler | 1.7 | 1.7 | 1.5 | 1.5 | 1.5 | 1.7 | 
| runtime jdk | 1.7 | 1.7 | 1.5 | 1.7 | 1.7 | 1.7 | 
| Maven   | Yes | No | Yes | Yes | Yes | Yes | 
| Tomcat  | 7  | 7  | 5.5 | 5.5 | 7  | 7 | 
| JasperReports | 3.7.2 | 3.7.2 | 3.7.2 | 3.7.2 | 3.7.2 | 5.5 | 
| truncates  | Y  | Y  | N  | Y  | Y  | Y | 

从上面的结果,似乎问题的来源是jdk1.7运行。

从这个假设,有两种可能性:

  • 我们使用的是用JasperReports的有它忽视了静态文本的宽度,固定在以下JDK版本的bug,在JDK 1.5版本;
  • jasperreports与jdk 7有一些不兼容的问题,

打开与的JasperSoft Studio插件的报告显示,事实上,在JRXML文件中的文本被截断,这表明它可能是一个JDK 1.5的bug我们不知道(并愉快地利用)。

无论如何,我想知道是否有人知道为什么会发生这种情况,以及是否有办法避免截断文本而不必编辑和重新编译我们所有的报告。

谢谢!

+0

如果没有尾随换行符,我已经看到iReport搞砸了包装(多行)标签。尝试在多行标签文本的末尾添加换行符。 – Durandal

+0

@Durandal谢谢!在我的情况下,它是一条线上的标签,但我会尝试它,也许它会停止截断。 – Tarek

+0

@Durandal不,不起作用... – Tarek

回答

0

经过多次窥探之后,我发现了一种方法:将staticText更改为textField,并包含isStretchWithOverflow =“true”。

这将使我们能够快速调整所有报告,而无需逐个调整它们的大小。

然后我们将打开门票并逐一修改报告,而不会影响我们的客户。