JsperReport导出PDF报表中文不显示
2016-06-02 11:37
561 查看
一、描述
最近项目中使用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;"> @Testpublic 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>
相关文章推荐
- 一款免费且安全的在线 PDF 转换软件
- PDF里的文字显示模糊的解决方法
- PDF编辑工具 Foxit PDF Editor 1.5 Build 2911 下载
- 没有文件大小限制并免费的PDF到HTML转换工具
- MicroAdobe PDF Editor 6.2 英文正式版附破解补丁 下载
- C#使用iTextSharp设置PDF所有页面背景图功能实例
- C#怎么给PDF添加背景图片
- PDF的VBS小程序代码
- C#实现PDF文件添加图片背景
- C#实现TIF图像转PDF文件的方法
- c#实现将pdf转文本的示例分享
- C#代码实现PDF文档操作类
- C#使用iTextSharp封装的PDF文件操作类实例
- C#编程读取文档Doc、Docx及Pdf内容的方法
- SQL Report Builder 报表里面的常见问题分析
- Java开源工具iText生成PDF简单实例
- C#使用itextsharp生成PDF文件的实现代码
- 使用java为pdf添加书签的方法(pdf书签制作)
- java中输出pdf文件代码分享
- Python实现将DOC文档转换为PDF的方法