首页 > 编程语言 >JasperReport报表导出PDF中文不显示的问题

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

时间:2023-05-29 11:32:23浏览次数:47  
标签:jasperreports fonts 导出 sf JasperReport dejavu PDF net ttf


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

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

 

        这时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文件复制出来进行更改。

JasperReport报表导出PDF中文不显示的问题_中文字体_02

 

        在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中已经可以正常显示中文了。
 

标签:jasperreports,fonts,导出,sf,JasperReport,dejavu,PDF,net,ttf
From: https://blog.51cto.com/chengzheng183/6369261

相关文章

  • OLE 导出类
    classZCL_EXCEL_DOWNLOADdefinitionpublicfinalcreatepublic.publicsection.dataG_FILEPATHtypeRLGRAP-FILENAME.methodsCONSTRUCTORimportingvalue(I_DEFAULT_FILENAME)typeSTRINGoptionalvalue(I_OBJID)typeW3OBJIDo......
  • 前端导出 Excel
    需求背景在项目开发中遇到需要前端将后端返回的数据导出的任务,由于后端已经全部返回了相关数据,为避免重复请求接口、减少后端IO提升系统性能,因此需要在前端将后端返回的任务数据导出成Excel。之前没有做过前端根据数据直接导出excel的案例,特此做记录。使用的插件xlsx用于解......
  • RefsUtil 是 Windows 下一款用于管理 REFS 文件系统的实用工具,它提供了丰富的功能和命
    RefsUtil是Windows下一款用于管理REFS文件系统的实用工具,它提供了丰富的功能和命令行界面,可用于创建、修改、检查和修复REFS分区,以及导出和导入数据等操作。以下是一些使用RefsUtil工具的示例:创建REFS分区要创建一个新的REFS分区,可以使用以下命令:CopyCoderef......
  • 非Teams会议组织者如何导出参会列表
    需求背景通常来说,只有会议的组织者才能够从Teams客户端导出Teams会议的参会人列表,或者需要Teams管理员从后台导出。而在某些情况下,需要非Teams会议组织者协助导出次列表,那么我们可以使用Teams会议的共同组织者(Co-organizer)功能来实现这个需求。概念解释邀请他人参加会议后,您最多......
  • 自定义导出Excel表列数据(根据所选的列,选几列导出几列数据,不选则全部导出)
       ......
  • solidworks vba 导出数据到文本文件
    Thismacroexportsalltheinformationintotheoutputtextfileinthefollowingformat:OptionExplicitConstcurrentDirAsString="D:\"'DimswAppAsSldWorks.SldWorksSubmain()DimfilePathAsStringfilePath=currentDi......
  • expdp 导出缓慢
    expdp导出缓慢查询等待事件,目前导出的等待事件是:selectinst_id,sql_id,event,count(*)fromgv$sessionwherewait_class<>'Idle'groupbyinst_id,sql_id,eventorderbycount(*)desc;INST_IDEVENTCOUNT(1)---------......
  • 解决mysqldump 导出中文乱码的问题
    导数据库mysqldump-uroot-p111111-P3306-h127.0.0.1test>/data/test.sql导出后的数据库打开是乱码,如下:开始以为打开的方式不对,就用记事本打开后,用utf-8的编码格式另保存下结果打开后,仍然是乱码。这时候,猜测是不是数据库的字符集的编码有问题,然后进入数据库,输入命......
  • 导出Excel,下载文件,返回文件流和报错信息处理
    downloadExcelCreateA(resData,fileName){//下载文件varblob=newBlob([resData],{type:'application/vnd.ms-excel'})vardownloadElement=document.createElement('a');varhref=window.URL.creat......
  • EasyExcel导入对失败数据进行标红导出
    模板渲染工具类publicclassExcelUtils{/***模板表头样式*@paramtemplateName"classpath:template/"模板文件名称*@paramdata数据*@paramwriteHandler自定额填充策略*/publicstaticStringcommonImport(Stringtemplate......