Java程序中使用Jaspersoft进行PDF打印

1-引入POM

<!-- PDF打印-jasper -->
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.12.2</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>

2-打印代码

controller层:

    @ApiOperation(value = "打印PDF", notes = "print")
    @GetMapping("/print")
    public void print(String search, HttpServletResponse response) {
        try {
            List<JasperPrint> list = new ArrayList<>();
            JasperPrint jasperPrint = pdfService.userTablePrint(search);
            list.add(jasperPrint);
            OutputStream os = response.getOutputStream();
            // 使用JRPdfExproter导出器导出pdf
            JRPdfExporter exporter = new JRPdfExporter();
            // response.addHeader("Content-Disposition","inline");
            response.setContentType("application/pdf");
            // 设置JasperPrintList
            exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
            // 设置导出流
            exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, os);
            // 开始导出
            exporter.exportReport();
            os.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

serviceImpl层:

    @Override
    public JasperPrint userTablePrint(String search) throws Exception {
        List<UserTablePDF> list = new ArrayList<>();
        UserTablePDF mainData = getDataFromCenter(search);
        list.add(mainData);
        //
        Map<String, Object> parameters = new HashMap<String, Object>();
        final String User_main_jasper = "jasper/user/Coffee.jasper";
        final String User_detail_jasper = "jasper/user/User_PDF_A4.jasper";
        final String coffee = "jasper/user/coffee.jpg";
        final String coffee_stain = "jasper/user/coffee_stain.png";
        //
        ClassPathResource user_detail = new ClassPathResource(User_detail_jasper);
        InputStream user_detail_stream = user_detail.getInputStream();
        parameters.put("User_PDF_A4", user_detail_stream);
        //
        ClassPathResource coffee_jpg = new ClassPathResource(coffee);
        InputStream coffee_jpg_stream = coffee_jpg.getInputStream();
        parameters.put("coffee", coffee_jpg_stream);
        //
        ClassPathResource coffee_stain_pang = new ClassPathResource(coffee_stain);
        InputStream coffee_stain_pang_stream = coffee_stain_pang.getInputStream();
        parameters.put("coffee_stain", coffee_stain_pang_stream);
        //
        JRDataSource jrDataSource = new JRBeanCollectionDataSource(list);
        ClassPathResource resource = new ClassPathResource(User_main_jasper);
        InputStream jasperResource = resource.getInputStream();
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperResource);
        return JasperFillManager.fillReport(jasperReport, parameters, jrDataSource);
    }

    private UserTablePDF getDataFromCenter(String search) {
        LambdaQueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery();
        if (StrUtil.isNotBlank(search)) {
            wrapper.like(User::getNickName, search);
        }
        List<User> userKList = userMapper.selectList(wrapper);
        UserTablePDF result = new UserTablePDF();
        List<UserTablePDFDetail> details = new ArrayList<>();
        for (User item : userKList) {
            UserTablePDFDetail detail = new UserTablePDFDetail();
            detail.setUserName(item.getUsername());
            detail.setNickName(item.getNickName());
            detail.setAge(item.getAge());
            detail.setAddress(item.getAddress());
            detail.setRole(item.getRole()==0?"管理员":"普通用户");
            detail.setSex(item.getSex());
            //detail.setPortrait(item.getPortrait());
            detail.setPortrait("头像");
            details.add(detail);
        }
        result.setDetails(details);
        return result;
    }

3-模板位置

模板使用TIBCO Jaspersoft Studio-6.6.0进行绘制,
下载地址:Jaspersoft® Studio | Jaspersoft Community


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值