JasperReport從6.x版本開始,PDF的中文問題,不再依賴iTextAsian.jar包了。統一改用font字體。JasperrReport6中字體不支持中文,需要自己擴展。
擴展中文的步驟如下:
1 解壓jasperreports-fonts-6.1.1.jar
將jasperreports-fonts-6.1.1.jar擴展名修改為rar然后解壓,
2 將字體文件拷貝到fonts目錄
目錄如下:
C:\jasperreports-fonts-6.1.1\net\sf\jasperreports\fonts\dejavu
3 修改fonts.xml
打開C:\jasperreports-fonts-6.1.1\net\sf\jasperreports\fonts目錄下的fonts.xml 增加如下配置:
1 <fontFamily name="黑體"> 2 <normal>net/sf/jasperreports/fonts/dejavu/simhei.ttf</normal> 3 <bold>net/sf/jasperreports/fonts/dejavu/simhei.ttf</bold> 4 <italic>net/sf/jasperreports/fonts/dejavu/simhei.ttf</italic> 5 <boldItalic>net/sf/jasperreports/fonts/dejavu/simhei.ttf</boldItalic> 6 <pdfEncoding>Identity-H</pdfEncoding> 7 <pdfEmbedded>true</pdfEmbedded> 8 <exportFonts> 9 <export key="net.sf.jasperreports.html">'黑體', Arial, Helvetica, sans-serif</export> 10 <export key="net.sf.jasperreports.xhtml">'黑體', Arial, Helvetica, sans-serif</export> 11 </exportFonts> 12 </fontFamily>
4 將目錄打包成jar
有兩種打包方式:
4.1 Maven方式
提前安裝並配置好maven,進入到如下目錄:
C:\jasperreports-fonts-6.1.1,(需要提前准備好pom.xml)然后執行如下命令:
mvn package
執行完畢后,會在當前目錄下看到一個target目錄,點擊進入;
4.2 jar命令方式
進入C:\jasperreports-fonts-6.1.1目錄,然后執行
c:\jasperreports-fonts-6.1.1>jar cvf jasperreports-fonts-6.1.1.jar .
最后的點代表所有文件
5 將jasperreports-fonts-6.1.1.jar安裝到本地maven倉庫
mvn install:install-file -DgroupId=net.sf.jasperreports -DartifactId=jasperreports-fonts -Dversion=6.1.1 -Dpackaging=jar -Dfile=c:\jasperreports-fonts-6.1.1.jar
6 在Jasperreport studio中增加字體
可以用上面生成的jar包,替換studio中的jar包,Windows默認安裝后,jasperreport-fonts.jar包的位置是:
C:\Program Files (x86)\TIBCO\Jaspersoft Studio-6.5.1.final\configuration\org.eclipse.osgi\55\0\.cp\lib
7、項目的pom.xml使用本地maven倉庫中的c:\jasperreports-fonts-6.1.1.jar
<!-- jasperreports--> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.6.0</version> <exclusions> <exclusion> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> </exclusion> <!--?可選?--> <exclusion> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports-fonts</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports-fonts</artifactId> <version>6.1.1</version> </dependency> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-pdfa</artifactId> <version>5.5.0</version> </dependency>
8 報表中使用自定義字體
font中使用的黑體就是simhei.ttf代表的系統字體