One of the most common and least emotional tasks in any enterprise software is to produce reports. However after many years today I got my first "serious bug" in Jasper Reports.
以上是对@tuxtor的 Fixing missing data on Jasper Reports with community Linux distros引用,本人对iReport生产报表了解不多,也是遇到问题解决问题,在此记录是为了备忘,同时也给在和bug斗争的同学一点思路。
一、问题背景
公司项目用到Jaspersoft IReport Designer3.7.6 绘制业务报表,某次测试小伙伴反馈测试环境下载的pdf报表,其中单元格中的文本没有自动换行展示导致展示有问题。
大致效果如图:
经过排查本次此功能无代码调整,而且本地开发环境下载的pdf报表又是没问题的。
二、过程&原因
过程:
- 首先根据下载环境服务器上的代码包反编译比对本地代码,排除非代码不一致、代码未正常发布的问题。
- 根据Designer工具将“产品名称”单元格长度适当调长调高,本地问题得到解决,发布到环境上还是不行。
- 勾选使用Designer工具的“Stretch with overflow”属性依然解决不了问题。参考《iReport常见和注意的问题》
但从Jaspersoft 官网的一篇博文中看到这一句话:
所以可能是字体影响到样式的,以下是表格中的字体设置信息:
这里有两个字体设置信息:
1、Font name :选择在ireport里面显示的字体
我的理解是此字体是在ireport中调试/预览时展示的字体,但是会参与最终pdf文本的排版展示,在单元格中没有换行完全展示也可能是这个问题。
2、Pdf font name :选择在pdf里面显示的字体
最终打印pdf展示的字体,因为项目中集成了ITextAsian.jar等相关字体Jar包,包含了图中的STSong-Light字体。
接下来就是验证测试环境有没有SansSerif字体了,
登录环境服务器执行:
fc-list|grep 'Sans'
发现结果为空,
最后将Sans相关字体安装到环境后下载pdf报表也成功解决问题了。
三、解决方案
问题找到了,解决方案就好办了。
普通Linux系统参考《Linux怎样安装字体》
国产麒麟参考《银河麒麟桌面操作系统V10 SP1 如何安装字体》
当然字体安装应该是系统或运维初始化的工作内容,按照规范应该交给他们统一完善打包、更新。 在当前大环境下仍然需要注意字体版权问题。