java中jasperReport中文乱码

         jasperReport在java中,生成pdf时,出现中文乱码,郁闷啊。。。。。。肿么办??????

        1、jasperReport在ireport设计器上,对每个有中文的组件的属性进行如下设置

      

      

   

       2、把iTextAsian.jar和iTextAsianCmaps.jar引入到ireport的classpath中,我这篇文章讲过

           引入以后,设计器预览不会乱码了,看到可爱的汉字出现在了我们的pdf文件


      3、将编译好的japser文件拷贝到java工程中,程序运行看看报表结果,这坑爹了,报错了,错误信息如下:

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName   : STSong-Light
pdfEncoding   : UniGB-UCS2-H(Chinese Siplified)

isPdfEmbedded : true

    跟踪错误信息,查看异常轨迹,在源码中发现,生成pdf时,字符集编码获取如下:

   a、从jasperReport上下文获取字符集:

      这些字符是从哪里来呢?一个是当前运行的操作系统自身的字符集,一个jasperReport自己提供字符集,jasperReport提供的字符集,那是相当的少,差不多就算是个例子吧,就只有一个Pictonic字符集:

 

      jasperReport提供的字符集没有,操作系统又没有,怎么办?自己遵循java的规则,造一个字符集?感觉好麻烦,我们遇到的别人,也一定会遇到,重复造轮子,是一个莫大的浪费,继续看源码;

     从jasperReport上下文找不到,从操作系统也找不到了,就靠第三方了,在接下来查找字符集的代码中,我们看到如下的代码:

        从第三方,itext中(com.lowagie.text.FontFactory)获取,视乎有线希望。。。。结果com.lowagie.text.FontFactory返回的虽然不为空,可是baseFont为空,一样,没有查到字符集,尼玛。。。。什么情况?

        继续往下,大师就是大师,任性的继续寻找字符集,这次是从资源池中寻找字符集文件:


       这里,还是失败,没有找到任何资源,可爱的异常信息打出来了,异常就是上图的Could not load the following font:.....

      静下来再想想,既然文件中,第三方也没有找到,会不会是第三方的资源文件缺少导致的?

      往下看以后,发现,itext的字符集包没有提供,正好,itext的字符集包由iTextAsian-2.1.jar,iTextAsianCmaps-2.1.jar两个包提供,打开iTextAsian-2.1.jar,我们看到熟悉的字符集名称:

      


        爽哉,原来你在这里,把包导入工程,网上查了一遍。。。。悲剧。。。。没有找到相应的maven仓库,好吧,那就自己放到公司的maven仓库好了,马不停跌的放入公司maven仓库以后,引入项目,启动程序,ok,一切大吉,可爱的中文在pdf中出现了。


       注:如果不是maven项目,自己下载包,引入相应的仓库或者项目中即可

  

      至此,坑爹的中文显示异常及报错就搞定了。





       






  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: JasperReport是一款强大的开源报告生成库,可以在Java提供高级的报告生成和打印功能。JasperReport可以将一条SQL查询结果、Java对象、XML文档和其他数据源绑定到报告模板,以便生成各种格式的输出。JasperReport报告可以以PDF、HTML、XML、Excel、CSV、RTF、Text等多种格式输出,非常适合各种开发场景。 JasperReport文文档可以帮助文开发者更好地使用和学习JasperReport报告生成库。JasperReport文文档涵盖了JasperReport报告生成的基本概念、报告设计、数据绑定、报告输出等方面的内容,同时给出了大量的实际案例和代码示例,帮助文开发者快速上手和深入理解JasperReport报告生成库。 JasperReport文文档可以从JasperReport官方网站获取,也可以从第三方技术博客和社区论坛获取。如果您是一名文开发者,想要更好地学习和应用JasperReport报告生成库,请务必查阅JasperReport文文档。 ### 回答2: JasperReport是一个流行的开源报表生成器,它可用于创建具有各种格式和样式的报告。JasperReport提供了丰富的特性和灵活的选项,可以用来生成复杂的报告,也可以用来创建简单的文本文档。 关于JasperReport文文档,目前官方网站上提供了文版的用户手册和开发人员指南,这些文档详细介绍了JasperReport的安装、配置、使用和高级功能。此外,国内一些技术博客和论坛也提供了一些较为详细的JasperReport教程和样例代码,对于初学者来说也是不错的参考资料。 总之,对于想要学习JasperReport的人来说,文文档能够为他们提供方便快捷的学习方法和全面的支持,帮助他们更快地掌握这种报表生成器工具。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值