iReport中文字符在linux下字体问题解决方法
测试发现ta3原框架中iReport在windows下打印功能正常,而部署liunx下后会出现Font '宋体' is not available to the JVM 等问题。
经检查发现是因为原框架中iReport的环境jar包中可默认从系统中获取字体环境,因此在windows下若有该字体,就不会报错。而在liunx系统下往往缺乏一些中文字体环境,因此使用ireport导出或打印将会出现字体未在JVM等编译问题。
经研究该解决方案,主要有两种方式:
方案一: 可以对liunix系统安装相应字库解决,但该解决方式,需要每次部署liunx时候都需要进行字体的安装,不利于部署。
方案二:进行字体打成jar包,加载到项目中,在以后实施时,即便系统未安装字体,只有项目有该jar包也可保证我们的程序字体环境正常运行。从而更好的解决字体打印出错问题。
目前在公积金项目中采用了第二种方式,对ireport的jar包进行了重新封装打包。
Jar包名称: jasperreports-fonts-4.1.1.jar
打包过程:
解压该jar包,
在原jar包中的字体环境中(路径为jasperreports-fonts-4.1.1\net\sf\jasperreports\fonts\de
javu ),拷贝了如下字体环境(支持在windows 与liunix下环
境辨别):宋体仿宋华文仿宋华文宋体华文中宋文件
名称分别为:
<             
2.在原来的基础上(路径为jasperreports-fonts-4.1.1\net\sf\jasperreports\fonts)修
改了l内容:
在其中增添了windows 与liunix下的常用字体,配置内容如下:
<!--
linux环境下的中文字体
-->
<fontFamily name="宋体">
<normal>net/sf/jasperreports/fonts/f</no rmal>
<bold>net/sf/jasperreports/fonts/f</bol
d>
<italic>net/sf/jasperreports/fonts/f</i talic>
<boldItalic>net/sf/jasperreports/fonts/ f</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'宋体', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'宋体', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="仿宋">
<normal>net/sf/jasperreports/fonts/f</ normal>
<bold>net/sf/jasperreports/fonts/f</bo ld>
<italic>net/sf/jasperreports/fonts/f</ italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/fansong.t tf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'仿宋', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'仿宋', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="华文仿宋">
<normal>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF< /normal>
<bold>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF</b old>
<italic>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF< /italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/STFANGSO. TTF</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>linux中文名
<export key="net.sf.jasperreports.html">'华文仿宋', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'华文仿宋', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="华文宋体">
<normal>net/sf/jasperreports/fonts/dejavu/STSONG.TTF</n ormal>
<bold>net/sf/jasperreports/fonts/dejavu/STSONG.TTF</bol d>
<italic>net/sf/jasperreports/fonts/dejavu/STSONG.TTF</i talic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/STSONG.TT F</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'华文宋体',

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。