2021-09-08 记录生成pdf文件,遇到的问题

1.生成pdf文件用到的工具:JasperSoft studio。可到官网下载Jaspersoft® Studio | Jaspersoft Community

 

下载对应版本。

2.打开开发工具新建自己的模板,一个新建的模板有几个分区,需要注意.

 title:标题,只在第一页显示

page healder:这个每页显示的部分,

column healder:列明,做报表的话这个和detail结合使用

detail:循环的部分,

column footer:统计此列数据

page footer:底部显示,可以用来显示分页

summary:统计值,只在最后一页显示

其实这些部分有些我没用到,在我的开发中,我是用的是父子模板,只用到了titel、page healder、column healder、detail、page footer,这些部分。

然后,考虑到字体的问题,需要将字体信息放入放入的工程中,这个百度搜索一大把,可以将自己喜欢的字体导入工程。

3.然后就开始制作模板,根据需求我的模板几个常用到的element :text field、static field、subreport、chart,这些。

然后说一下

这个分区,style 可以设置样式,包括边框颜色和背景颜色等 ,  parameters 是java程序传进来的一个Map,Fields是List,其他部分选择自己用到的。detail是用到最多的,用来循环数据。

在text field引入参数时,有三个 $P $F $V ,这三个区别

$P可以说是parameters中的数据引入

$F是fields中的数据

$V是统计数据,显示页面可以用$V

遇到的一些问题:

1、页面显示,用到了Page Footer,这个在每页的底部显示,然后页数在Variables中就有,叫PAGE_NUMBER, 我显示的是 第几页,共几页,用到的都是PAGE_NUMBER,但是得设置一下。

 

第几页这个设置为Now,共几页的设置是Report。

2、在设置Text Field的时候字体颜色包括高亮显示这些该怎么设置。

 

Text Field 有一个Markup属性,选择html,传的参数就可以是一段html代码,这样就可以自定义设置字体颜色包括其他一些属性。

3、引入字表Subreport,传参怎么传

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{metriccompares}) 

这是我的一个示例,向字表传参,引入设置是Expression,一个路径加jasper文件。

 多级字表的形式一样,只不过list嵌套list而已。

4、字表我既想传list,也想传map。

我的字表是一个表格,表头的标题是需要修改的,这时候我不能再list的数据都加入表头,这样很麻烦,我就想可不可以既传list,也传map;

subreport设置

这两个就是,我把Parameters中的数据也传过去,字表接受是map中的Key。 

5、还有一个很蠢的问题,我detail中的数据如何让他的高度自适应,这个我想了半天,也查了半天,都没结果,后面我一想,detail可以有多个,我多创建几个不就好了。-_-||

6、Text Field设置锚点和超链接

超链接的设置

target修改为blank,下面的reference Expression设置你的跳转地址。

锚点的话

 

target修改俄日self,type设置localAnchor,Anchor Expression设置你Text Field自己设置的Anchor Name就可以实现跳转。

说完这些问题,模板差不多设置好了,在java端怎么操作。

首先在resource下新建目录,jasper ,用来放模板,然后就可以写pdf下载业务了,当然jasper 的包是要引的

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

写完下载,本地运行可以下载,但是打成jar包以后报路径错误,这个问题我传入的是classpath,相对路径,打成jar包后找不到,这时候换成InputStream就可以操作了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值