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文件,中文已經可以正常顯示了。