天天看点

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

简述

最近公司需要提供数据导出为pdf格式的文件,网上对比了很多工具加上朋友也推荐了下,最后选定了Jasper iReport Designer作为pdf模板开发工具,然后使用对应的Java lib构建数据模型来填充模版最后导出PDF文件。

选择的理由:

1. 虽然现在已经有新的Jasper Studio都支持到java11了,5.6运行只能用java7,但是java8的项目照样能用这个生成的模板。最关键的还是我觉得这个网上能搜到的文章比较全,十几年了,基本上该踩的坑已经踩完了,5.6已经是这个工具的

最后版本了。

这篇文章主要是讲如何通过使用自定义的字体,在pdf中能够正确显示中文及英文。网上其实也能找到一些,不过都是选择宋体或者黑体,我按照他们那样做了,中文是显示,但是英文显示有重叠,不过问题主要是在Java项目中没有导入自己选择字体的jar包。

在此,我假设你已经安装好了iReport 5.6了,我用的是mac,不过win下应该差不多吧。好了,废话不多说了。

1. 引入字体Jar

为你的iReport工具引入如截图的两个jar包,然后重启iReport

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

这两个jar包在ireport的目录中就有

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

2. 安装字体

截图是我安装好的字体

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

安装没啥特别的,注意几点

1. 取一个名字,我这里写了Microsoft YaHei

2. 选择字体文件,这里一定要是TTF格式的文件,windows系统里可以找到ttc的,那个还要加工一下,最简单就是网上直接找你想要的ttf字体

3. PDF Encoding要选择Identity-H  (网上说选UniGB-UCS2-H (Chinese Simplified),反正我不行)

4. 记得把Embed this...那个checkbox钩上

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

3.导出生成pdf要用的字体jar包

这一步是关键的一步,决定了最后生成pdf不报异常的一步。

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件
ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

这个jar包含了你的自定的字体以及引用这个字体的名字,就是之前创建的字体名字,之后要导入项目中的,放在你的classpath下,或者maven的话,打到本地仓库,然后pom中

引入就可以了,jasper会自己去找关联的字体。(我就是打到本地仓库)

mvn install:install-file -Dfile=./MicroYaHei  -DgroupId=jasper.font -DartifactId=microyahei -Dversion=1.0.0 -Dpackaging=jar
           

前面两个导入iReport的jar也要加入你的项目,itext其实maven中央仓库有,其他两个我自己打到本地仓库的,如下图

itextasinacustomized   这个是iTextAsian.jar打入本地maven仓库

microyahei 这个是自己导出的字体jar包打入本地maven仓库

<dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itext</artifactId>
      <version>2.1.7</version>
    </dependency>

    <dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itextasinacustomized</artifactId>
      <version>2.0.0</version>
    </dependency>

    <dependency>
      <groupId>jasper.font</groupId>
      <artifactId>microyahei</artifactId>
      <version>1.0.0</version>
    </dependency>
           

4. 模板中为Field选择字体

选中你的一个Filed,然后在属性编辑面板,字体名字选择你刚刚创建的 (我感觉这个是模板中的字体名字,运行时生成pdf时就是通过这个名字去找对应的字体)

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

指定pdf的字体,这个官方也说了,只能选这个MSung-Light

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

Pdf Encoding选择如图,这个和你创建的字体一致。

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

这个钩上

ireport 5.6 + jasper lib 5.6 导出PDF 中英文混编/自定字体简述1. 引入字体Jar2. 安装字体3.导出生成pdf要用的字体jar包4. 模板中为Field选择字体5. 保存jrxml或者jasper文件

这个是单个字段配置,其实可以创建一个样式,然后配到你的所有字段上比较好。

5. 保存jrxml或者jasper文件

将建好的jrxml或者jasper放入你的项目,然后填充数据生成pdf即可。