JasperReport在用TIBCO Jaspersoft Studio進行報表設計的時候默認采用的字體是SansSerif,中文並不在其處理范圍之內,把字體顯示設置為華文宋體,如下圖:

報表jrxml模板文件中可看到已經顯示加了華文宋體。
<staticText>
<reportElement x="20" y="7" width="68" height="32" uuid="c0240cf1-84c7-4197-b32e-dc59cbb77c66"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="華文宋體" size="19"/>
</textElement>
<text><![CDATA[姓名]]></text>
</staticText> |
報表模板文件中顯示設置中文字體,生成PDF文件的時候中文其實還是不會顯示,因為JasperRepeat的包中壓根就沒有華文宋體的字體庫STSONG.TTF,需要在工程中放入該字體庫,並配置JasperReport的字體模板fonts.xml,添加配置文件jasperreports_extension.properties指明字體處理工廠類和字體模板。
Windows操作系統中的字體文件可以在C:\Windows\Fonts目錄下找到,華文宋體的字體文件STSONG.TTF就在該目錄下面。
工程結構如下圖:
fonts.xml
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="華文宋體">
<normal>fonts/STSONG.TTF</normal>
<bold>fonts/STSONG.TTF</bold>
<italic>fonts/STSONG.TTF</italic>
<boldItalic>fonts/STSONG.TTF</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>
</fontFamilies> |
jasperreports_extension.properties
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml |
經過上述處理后,再生成PDF文件,中文已經可以正常顯示了。
