导入jasperreports出现Cannot resolve com.lowagie:itext:2.1.7.js6异常、生成PDF中文不显示中文解决方法、使用命令安装jar包

JasperReport是一个纯Java写的开源免费报表工具库,用于进行报表的设计

1.导入jasperreports依赖时,打印Cannot resolve com.lowagie:itext:2.1.7.js6异常

今天在使用Maven安装jasperreports依赖时,控制台始终打印Cannot resolve com.lowagie:itext:2.1.7.js6异常。具体依赖版本如下:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.8.0</version>
</dependency>

解决办法
思路:

  • 首先确定网络正常,再到 Maven 仓库 查看是否存在对应版本依赖。

  • 如果以上都没问题,基本能确定自动下载不行,就手动下载安装吧。

以下通过itext演示手动安装

1、手动下载包到本地

使用JasperReports进行功能开发时会用到itext的jar包,但是这个jar是修改过的,一般为itext-2.1.7.js2.jar,itext-2.1.7.js6.jar等特殊版本,但是这些是maven仓库下载不到的。
本人在http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/ 目录下找到的相应的jar:
在这里插入图片描述

在这里插入图片描述

2.、安装 jar 包进本地仓库

安装命令: mvn install:install-file -Dfile=G:/itext-2.1.7.js6.jar -DgroupId=com.lowagie -DartifactId=itext -Dversion=2.1.7.js6 -Dpackaging=jar

参数说明:

  • mvn install:install-file:安装文件
  • -Dfile:待安装包所在位置
  • -DgroupId:包的GroupId
  • -DartifactId:包的artifactId
  • -Dversion:包的version
  • -Dpackaging:包的文件类型

运行效果如下:
在这里插入图片描述

安装成功后去本地仓库即可查看到刚才安装的 jar,回到项目刷新异常已消失。
在这里插入图片描述

注意:

错误想法,直接在本地建文件夹,让目录结构对应下载后的目录结构,再把包拖进去,不就和通过安装的效果一样了,还更加简单。想法很好,但 Maven 存在索引此操作并不行,因为我已经试过了

JasperReports依赖itext-2.1.7.js6.jar等下载
因 Cannot resolve com.lowagie:itext:2.1.7.js6,选择手动安装 Jar 包进 Maven 仓库

2.生成PDF中文不显示解决方法

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

JasperReport生成PDF中文不显示处理

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值