java利用模板生成PDF

maven依赖

< dependency>
< groupId>net.sf.jasperreports< /groupId>
< artifactId>jasperreports</ artifactId>
< version>6.16.0< /version>
< exclusions>
< exclusion>
< groupId>com.lowagie< /groupId>
< artifactId>itext</ artifactId>
< /exclusion>

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

1.下载
官方地址:https://community.jaspersoft.com/project/jaspersoft-studio

注册一个账号进行下载就可以了

2.创建一个PDF模板文件

改模板中包含 图片,静态文本,动态文本

3.创建一个空白模板文件

然后一直next即可

生成如下文件

4.向文件中填充静态文本内容
可以先将没用的标签删除,比如title,header,footer等

创建静态文本标签

编辑标签内容及其样式

5.创建动态文本内容
首相创建三个对应的属性姓名,性别,年龄,以及imageURL

在右侧编辑属性名以及属性类型,全部选取String类型即可

将创建好的属性填充到动态文本标签中

6.填充图片属性,使用图片URL地址的方式

填充属性

这样一个模板就创建完成了,但是为了让我们的模板更完善还需要设置以下属性

无资源时报错

columnWith + left + right = pageWith,这样才能够保证我们可以生成多页PDF

6.中文乱码的解决方案
下载字体文件,博主网盘地址

链接:https://pan.baidu.com/s/1dbT4_0Ds4nAVbie6KGBFZg

提取码:1ev0

创建jasper配置文件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=stsong/fonts.xml ----?此处为下载完成的中文文件地址
由于字体文件为华文宋体,所以需要将模板中所有的文本标签字体改为华文宋体

7.编译文件

最后将生成的jrxml文件放到resource目录下,进行单元测试
文件结构

@Test
public void test122() throws IOException, JRException {
JasperReport billComponentCardReport = JasperCompileManager.compileReport(new ClassPathResource(“Blank_A4.jrxml”).getInputStream());
Map<String, Object> map = new HashMap<>();
map.put(“name”, “jack”);
map.put(“gender”, “男”);
map.put(“age”, “12”);
map.put(“imgAddress”, “C:\Users\admin\Desktop\aa.png”);
List list = new ArrayList<>();
list.add(map);
list.add(map);
list.add(map);
JasperPrint jasperPrint = JasperFillManager.fillReport(billComponentCardReport, null, new JRBeanCollectionDataSource(list));
JasperExportManager.exportReportToPdfStream(jasperPrint, new FileOutputStream(new File(“E:\cc.pdf”)));
}
完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值