JasperReport使用第二坑:中文不顯示


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM