学无先后,达者为师

网站首页 编程语言 正文

JasperReport报表导出PDF中文不显示的问题

作者:huayang183 更新时间: 2022-03-14 编程语言

     首先在JasperReport Studio中加载下载好的中文字体:打开设置页面: Window >> Preferences >> Jaspersoft Studio >> Fonts,点击 Add 添加字体,FamilyName中命名新添加字体名称,TrueType中选择下载的字体文件(.ttf文件),PDF Encoding中选择PDF中中文字体编码格式。

 

        这时Studio的字体下拉框中就有了我们添加的字体。将我们报表中的中文字体设置为“华文宋体”或“微软雅黑”。

        我们的web工程中引入了JasperReport相关jar包:

                <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.9.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>6.9.0</version>
        </dependency>
        这时我们要对jasperreports-fonts依赖的jar包进行更改,加入我们下载的字体文件。

        使用解压软件打开jasperreports-fonts.far,逐层找到dejavu文件夹和fonts.xml文件。打开dejavu文件夹,将我们下载的ttf文件拖入其中。将fonts.xml文件复制出来进行更改。

 

        在fonts.xml中<fontFamilies>标签内加入如下代码,保存后复制到jar包中替换原来的fonts.xml文件。

 
    <fontFamily name="华文宋体">
        <normal>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.ttf</normal>
        <bold>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.ttf</bold>
        <italic>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.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>
    
    <fontFamily name="微软雅黑">
        <normal>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.ttf</normal>
        <bold>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.ttf</bold>
        <italic>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.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>
        此时将JasperReport Studio中设计好的jasper文件导入我们的项目中然后启动,JasperReport报表导出的PDF中已经可以正常显示中文了。
 

原文链接:https://blog.csdn.net/qq_18671415/article/details/120915901

栏目分类
最近更新