JsperReport导出PDF报表中文不显示

原创 2016年06月02日 11:37:55

一、描述

最近项目中使用IReport和JsperReport遇到导出PDF报表时,中文不显示。但填充完数据可以对PDF进行预览(JasperViewer.viewReport(jasperPrint, false);),稍后会贴出部分代码。经过在网上搜索,发现问题,在报表定义时要定义如下属性:

     Font name:          宋体 (中文字体)

    PDF font name:  STSong-Light
    PDF Encoding:    UniGB-UCS2-H(Chinese Siplified)
    PDF Embeded:   true

如图所示


但这样并没有解决我的问题,就开始继续探索。。。


发现jsperReport要支持中文必须加入以下包:

itextpdf和itext-asian语言包

Maven依赖如下:

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.4.3</version>
            </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>


然而这并没有解决我的问题:

最后发现是JsperReport版本问题导致的。刚开始使用的是版本是5.0.1,Maven依赖

		<dependency>
		    <groupId>net.sf.jasperreports</groupId>
		    <artifactId>jasperreports</artifactId>
		    <version>5.0.1</version>
		</dependency>

使用5.0.1时,加入各种语言包都不能解决问题,后来直接把版本升级到:6.0.3

	<dependency>
	    <groupId>net.sf.jasperreports</groupId>
	    <artifactId>jasperreports</artifactId>
	    <version>6.0.3</version>
	</dependency>
	
	<dependency>
	  <groupId>com.itextpdf</groupId>
	  <artifactId>itext-asian</artifactId>
	  <version>5.2.0</version>
	</dependency> 
在这会发现,使得6.0.3版本并不用手动依赖itextpdf   ,那是因为

6.0.3版本中,jasperreports 中依赖了 itextpdf  5.5.0 所以只导入 itext-asian即可

问题解决!

二、JsperReport示例

1、

<span style="font-size:14px;">	@Test
	public void test5(){
		JasperReport jasperReport;
		JasperPrint jasperPrint;
		/*编译jrxml文件,并生成JasperReport对象*/
		try {
 //			jasperReport= JasperCompileManager.compileReport("C://Users//zqx//Desktop//contractTemplate.jrxml");
			/*使用IReport编译jrxml文件为jasper,节省程序运行时的编译时间,直接加载jasper文件生成JsperReport对象*/
			jasperReport = (JasperReport) JRLoader.loadObjectFromFile("C://Users//zqx//Desktop//contractTemplate.jasper");
			/*参数初始化*/
			Map<String, Object> parameters = new HashMap<String, Object>();
			parameters.put("corpName", "社会主义集团军");
			/*数据填充。关于参数 new JREmptyDataSource()我也没搞明白为什么要加,我没使用数据库,但不加就不能正常导出PDF*/
			jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,new JREmptyDataSource());
			/*对生成的PDF进行预览*/
			JasperViewer.viewReport(jasperPrint, false);
			/*导出为PDF文件*/
			JasperExportManager.exportReportToPdfFile(jasperPrint, "C://Users//zqx//Desktop//contractTemplate.pdf");
		} catch (JRException e) {
			e.printStackTrace();
		}
	}</span>





版权声明:本文为博主原创文章,未经博主允许不得转载。

jasperreports和Ireport导出PDF文件中文不显示问题(最新解决方法)

报表上各显示对象的相关属性,各属性设置说明如下:      Font      name:    宋体(中文字体)     PDF fontname:   STSong-Light    PD...
  • zsr251
  • zsr251
  • 2015年02月25日 17:24
  • 4270

jasperreport6 导出pdf中文不显示问题解决方式

  • 2015年12月07日 16:43
  • 1KB
  • 下载

JasperReport生成PDF中文不显示处理

JasperReport是一个纯Java写的开源免费报表工具库,原生不支持中文,需要特殊处理后生成PDF方可显示中文。...
  • clj198606061111
  • clj198606061111
  • 2017年11月14日 23:24
  • 270

jasperreport导出pdf中文数据不能正常显示的解决方法

在用iReport设计报表时将要显示中文数据的地方的属性设置如下: Font name:    宋体(中文字体) PDF font name: STSong-Light PDF Encodi...
  • findlymw
  • findlymw
  • 2014年02月19日 10:40
  • 1023

js的导出Excel,Word,pdf的实现以及服务器端生成pdf的实现

今天无意找到了很久前的js导出excel功能,用了一下感觉不错,在网上看很多人做js导出excel,可是对表格线的导出excel总是头疼,我这里有一个简单的导出js,大家可以看看。        这...
  • shanliangliuxing
  • shanliangliuxing
  • 2011年09月20日 18:40
  • 9059

JS print pdf

http://www.pdfobject.com/
  • xrr0520
  • xrr0520
  • 2014年09月11日 17:38
  • 398

jasperreport+ ireport 报表 linux系统下无法正常显示

第一篇博客,开始觉得有些东西很有记载下来的必要了,好记性不如烂笔头,顺便有些东西也可以和大家分享,相互借鉴。    忙了半年时间,科室的一个web项目大概已经做完。然而在部署到linux系统上时出现...
  • wyzfairy
  • wyzfairy
  • 2014年06月18日 17:44
  • 1191

HTML导出PDF中文文件

HTML TO PDF 网页另存为PDF文件,iTextSharp
  • jacky4955
  • jacky4955
  • 2014年08月20日 18:39
  • 12036

java pdf写入中文时不显示,如何解决。

java中生成pdf文件需要用到java文件:iText 5.0.6.jar文件 只下载iText5.0.6.jar文件是不能写入中文到pdf文件,同时需要iTextAsian.jar 但是我们在使用...
  • nly19900820
  • nly19900820
  • 2015年12月07日 11:26
  • 4739

jasperreport6 导出pdf中文不显示问题解决方式

先到 http://mvnrepository.com下载 itext-4.2.1.jar 替换2.1.7 传说中的iTextAsian已退出历史舞台。 然后.......... 1、官...
  • linbren
  • linbren
  • 2017年03月29日 16:35
  • 950
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JsperReport导出PDF报表中文不显示
举报原因:
原因补充:

(最多只允许输入30个字)