该问题网上有很多解决了,但是我使用过后,都不起作用,估计是版本的问题,我用的估计是较新的版本,最新的现在是jasperreports-6.5.0了现在; 接下来说下我们的处理
目的: 在javaweb的客户端,用户可以到处报表,现在采用jasperreports的到出pdf的方式,当然可以其他文件方式都行;
问题: 预览可以,导出pdf 中文直接没有展示,是空白。
解决:
1.下载TIBCO Jaspersoft Studio-6.5.0.final 工具; 当然还有一个iReport-这个工具,这个好像在后期版本,不采用作为主要的报表工具了,也试过该工具,不行;
2.设置自己的字体,我们设置宋体
里面的ttf可以自己下载; 后面的粗体,斜体等,设置同一个就行;
3.打开后,可以建立报表模板文件,样子和eclipse类似; 对于其中是中文显示的区域,需要进行字体的设置
选择自己的字体就行
这里可以就,进行对模板的预览,保存成pdf试验一下了,如果可以基本就 行了; 设置该工具自动编译,会生成jasper文件;
4 .在javaweb中需要,访问该jasper文件,进行生成 报表;
4.1》 该文件拿到 javaweb项目中;
4.2》 相关的jar包,比如 jasperreport相关,grooy-all等的,这个可以在网上找找例子都有;
4.3》 对于刚才我们的自定义的字体myfont,进行处理 。
下载jar包: jasperreports-fonts-6.0.0.jar ,该jar中,没有我们的myfont字体定义,需要进行处理下;
可以用压缩文件打开,修改其中的:
\fonts\net\sf\jasperreports\fonts目录下的fonts.xml 增加如下配置:
<fontFamily name="myfont">
<normal>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'myfont', 'Courier New', Courier, monospace</export>
<export key="net.sf.jasperreports.xhtml">'myfont', 'Courier New', Courier, monospace</export>
</exportFonts>
</fontFamily>
当然要把chinese.stsong.ttf 放到对应的 dajavu下;
之后将该jar添加到工程中就行。
5 .到处报表到pdf;
......
JasperPrint jasperPrint = JasperFillManager.fillReport(url,map, jrDataSource);
JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();
.......
6 相关链接:
https://www.jianshu.com/p/8dba0bb2f5dd
https://my.oschina.net/zzq350623/blog/521347
http://blog.csdn.net/zzq58157383/article/details/6862395