jaspersoft studio动态图片传输

2023-11-08

业务需求简述:在实际业务开发中需要动态生成PDF,其中包含客户签字图片。

技术栈:JasperReport+Jaspersoft Studio软件

动态图片传输流程

  1. jaspersoft studio:拖入image到工作区,选择最后一项点击确定。

  1. jaspersoft studio:创建一个参数,类型为String

  1. jaspersoft studio:将图片与属性进行一个绑定

不选择类型

  1. jaspersoft studio:定义图片解析格式

new ByteArrayInputStream(org.apache.commons.codec.binary.Base64.decodeBase64($P{img}.getBytes()))

  1. JasperReport:对图片进行Base64加密成字符串(apache的Base64)

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 将图片转换成为以Base64加密后的字符串
 *
 * @author yin
 */
public class ImageBase64Util {

    public static String getImageBase64ToString(String imgPath) {
        if (StringUtils.isEmpty(imgPath)) {
            return "";
        }
        String imgBase64String = null;
        try {
            File imgFile = new File(imgPath);
            InputStream inputStream = new FileInputStream(imgFile);
            int available = inputStream.available();
            byte[] bytes = new byte[available];
            inputStream.read(bytes);
            imgBase64String = new String(Base64.encodeBase64(bytes));

        } catch (IOException e) {

        }
        return StringUtils.isNotEmpty(imgBase64String) ? imgBase64String : "";
    }

}
  1. JasperReport:按照模板对应加入数据

    public void imgTest() throws JRException {

        String path = "图片地址";

        //要导入的jrxml模板文件路径
        String jrxmlPath = "D:test.jrxml";
        //生成jasper文件路径
        String jasperPath = "D:\\test.jasper";
        //编译模板
        JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
        Map<String, Object> map = new HashMap();

        map.put("img", ImageBase64Util.getImageBase64ToString(path));
        List<Map> list = new ArrayList();
        list.add(map);
        //填充数据
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, map, new JRBeanCollectionDataSource(list));

        //输出文件
        String pdfPath = "D:\\1.pdf";
        JasperExportManager.exportReportToPdfFile(jasperPrint, pdfPath);

    }

需要的jar包

        <!--JasperReport-->
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.17.0</version>
        </dependency>
        <!--Base64-->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jaspersoft studio动态图片传输 的相关文章

随机推荐

  • 日语操作系统安装日语软件乱码的解放方案

    1 打开控制面板 時計 地域 地域 地域 管理 Unicode対応 言語 日本語 日本 按照以上步骤 既可解决日语系统 安装日语软件乱码的问题
  • CreateProcess error=740, 请求的操作需要提升

    再用Java程序启动本地程序时有时会出现CreateProcess error 740 请求的操作需要提升 这样的异常 此异常为Java程序权限不足以调动需要启动的程序 解决方法 用管理员方式启动IED工具 并运行程序
  • C#图书管理系统

    大二 C 程序设计 课程设计项目 包含完整 源码 设计文档 测试数据 答辩PPT 仅供参考 文章目录 登录 系统管理员 图书借阅 登录 系统管理员 图书借阅
  • (GCC)STM32CubeMX中s启动文件详解

    本文所使用工程由STM32CubeMX生成 使用芯片 STM32F103ZET6 基本只开了时钟 s文件内容如下 C COPYRIGHT 2017 STMicroelectronics file startup stm32f103xe s
  • lvds传输距离标准_带你了解LVDS技术

    LVDS Low Voltage Differential Signaling 低电压差分信号技术 一种定义了高速数据传输接口电路电气特性的通用技术标准 而非协议 因为协议是特定于应用程序的 LVDS标准工作组选择仅定义驱动器和接收器的电气
  • 【Web3】 Web3JS Pay Api

    Web3Network eth sendSignedTransaction serializedTx 参数 from String Number 发送帐户的地址 如果未指定 则使用web3 eth defaultAccount属性 或web
  • 菌群多样性分析报告

    参考链接https www docin com p 2107733531 html 在开始实验项目之前 明确实验流程 一步一步获取实验结果 以可视化工具展现结果 并加以生物学意义上的分析 获取完整的分析报告 下面给出菌群多样性分析报告中应包
  • 基于深度相机的三维重建技术

    本文转载自http www bugevr com zblog id 14 原创作者bugeadmin 转载至我的博客 主要是为了备份 日后查找方便 谢谢原创作者的分享 三维重建 3D Reconstruction 技术一直是计算机图形学和计
  • [Spring学习]07 Spring AOP面向切面编程

    目录 一 什么是Aop 二 Aop相关术语 三 Aop的优点 一 什么是Aop OOP Object Oriented Programming 面向对象编程 AOP Aspect Oriented Programming 面向切面编程 OO
  • conda下多环境(environment)及spyder jupyter lab配置

    结论速递 借助conda进行多environment环境管理 并且这些enviroment都可以共用IDE spyder以及jupyter lab 由于python迭代很快 需要注意的是本文记录时间是2021 8 10 系统是Windows
  • 8.Docker容器镜像仓库存储原理(前世今身)与搬运技巧

    文章目录 0x00 镜像如何炼成 1 OCI 标准协议 image spec 镜像规范 runtime spec 运行时规范 distribution spec 镜像仓库规范 2 Dockerfile 3 基础镜像 0x01 镜像存储原理
  • Js逆向之某股打新网(返回数据AES加密)

    目标网站 aHR0cHM6Ly93d3cubGlhbmdodWFpcG8uY29tLyMv 1 抓包分析 F12 那么接下来就是找加密的位置了 这里先提供两个思路 1 简单看了一下data数据 发现有点像base64 大部分加密都会经过这个
  • LINUX查询服务器对应端口的实际服务器信息

    1 通过端口查询进程ID netstat anp grep 8080 2 通过进程ID查询启动密令 ps ef grep 进程ID 3 查看启动命令查询是否为代理 如果是代理 通过cat查看实际的服务器IP ProxyPass http 1
  • UML之一综合设计例题

    某汽车租赁连锁公司计划开发一套信息系统 主要需求如下 1 客户可以通过不同的方式 包括电话 前台 网上 预定车辆 2 系统能够保存客户的预定申请单 3 系统能够保存客户的历史记录 4 工作人员可以处理客户申请 5 技术人员可以保存对车辆检修
  • 实验5 Spark SQL 编程初级实践

    实验5 Spark SQL 编程初级实践 一 实验目的 1 通过实验掌握Spark SQL的基本编程方法 2 熟悉RDD到DataFrame的转化方法 3 熟悉利用Spark SQL管理来自不同数据源的数据 二 实验平台 操作系统 Linu
  • 复旦计算机学硕408,又一所院校专业课改投408——复旦大学

    原标题 又一所院校专业课改投408 复旦大学 复旦大学简称 复旦 位于中国上海 位列211工程 985工程 入选双一流 是一所综合性研究型的全国重点大学 学校现有一级学科国家重点学科11个 二级学科国家重点学科19个 国家重点 培育 学科3
  • 类的加载详解

    到目前为止 我们已经写了无数个类了 但是具体它在Java虚拟机中到底是怎么实现的 我们还从未探索过 今天就带着大家一起初探一下jvm对类加载的过程 目前博主技术水平有限 以后随着技术的更加成熟 会更新博客内容的 也欢迎更多小伙伴持续关注 和
  • Ubuntu10下SSH2协议安装

    Ubuntu10下SSH2协议安装 SSH2是一套安全通讯协议框架 早期的SSH1由于存在安全漏洞 现在已经不用了 基于SSH2协议的产品目前主要有openssh putty SSH Secure Shell Client等 安装了SSH2
  • 基础配置Tomcat及使用

    配置Tomcat 背景简介 目前很多网站由java编写 所以解析Java程序需要有相关的软件来编写完成 Tomcat是其中之一 Tomcat技术先进 性能稳定且免费 是目前比较流行的web应用服务器 Tomcat是一个轻量化级应用服务器 实
  • jaspersoft studio动态图片传输

    业务需求简述 在实际业务开发中需要动态生成PDF 其中包含客户签字图片 技术栈 JasperReport Jaspersoft Studio软件 动态图片传输流程 jaspersoft studio 拖入image到工作区 选择最后一项点击