html 怎么打印后台传回来的数据_关于IReport打印模板局部模块微调实践总结

本文介绍了如何使用IReport解决后台传回数据在打印时出现错位的问题。通过人工干预和代码控制,实现了打印模板中部分模块的动态微调,详细阐述了IReport的打印原理及动态添加控件的方法,提供了一种解决打印精确对齐的方案。
摘要由CSDN通过智能技术生成

问题背景

上周五,项目经理和技术组长讨论一个关于用ireport开发的打印功能,原因是这个打印上有四部分,但是每次打印总是有几部分的数据有错位现象发生,运维人员在上海市某院调了好几天打印机,也无法解决这个问题,于是将这个问题反馈到开发,寻求帮助。在他们讨论的过程中,我也被叫去参与讨论分析,主要是想实现人工干预,进行打印中部分模块的微调(因为我在我们组打印做的比较多,可以说是打印功能经验丰富,所以我才被叫去讨论)。原有的模块如下图所示:

a2641e2f27592a5665a748db11e02017.png

整个打印出来的4A纸,有四个模块,其中最右侧两个模块的内容总是偏上或者偏下,形成错位,因为涉及到police,所以这张纸输出规范要求很严,否则会被对方拒收。

需要解决的问题

通过人工干预,实现动态控制这张纸上的部分模块微调

实现思路

经过讨论,我觉得应该可以实现,当然是处于我对打印控件ireport的认识和理解层面,于是我提出,可以做一个demo,试一下,如果可以实现,那么就可以解决这个问题。

关于ireport打印,在网上的资料真的是少之又少,基本很少能搜到相关有用的信息。之所以对ireport熟悉,是因为之前也要做一个套打的功能,类似于医院打印收费单,把打印好的纸张塞进去,在相应的地方打印出相应的值(我把它称为套打功能)。

ireport打印原理

IReport打印,就是通过绘制一张模板,使用ireport软件,然后,通过后台将数据库查询出来的结果集,作为打印的数据源,在后台设置打印的域,来填充绘制的模板,最后设置导出打印模板PDF就可以了。

针对上面那个动态控制局部大小功能实现:

  1. 用ireport画一张空白模板,所以此时你应该设置了空白模板的大小,长度和宽度。
  2. 不在空白模板中添加任何组件,比如textfield、staticText等
  3. 我们通过自己手动在后台中用代码绘制控件,并给控件赋值的方式,来给空白模板添加控件。

ireport模板上的内容就是一个对象,只是每个值就是该对象的一个属性。

还有一种就是,ireport中所有的数据都公用一个模板,然后打印的结果是多个相同的对象,但是我们的数据结果集只需要封装为list就可以。

具体实现代码如下所示:

首先我建了一个实体:

package com.***.web;

public class Person {
    
    private String name;
    private String age;

    public String getName() {
    
        return name;
    }

    public void setName(String name) {
    
        this.name = name;
    }

    public String getAge() {
    
        return age;
    }

    public void setAge(String age) {
    
        this.age = age;
    }
}

然后新建了一个controller:

package com.***.web;


import com.***.utils.RequestUtils;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值