

easyExcel导出图片
基于SpringBoot,使用EasyExcel导出图片功能1、前言项目中有导出excel文件需要包含图片的需求,使用EasyExcel注解方式支持导出,但是不够灵活,而且当导出的图片过多,过大会导致导出时间过长,excel文件过大。这个时候可以考虑先压缩图片,然后再导出,如果必须要导出原图那就没办法了,只能异步导出了。下面介绍一下导出的方案。 2、导出方案2.1 使用easyExcel注解,配合自定义handler,实现一个单元格,导出多张图片。导出实体VO: import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.util.List; @Data public class ExportVo ..
Read more

大文件分片上传
基于SpringBoot实现大文件分片上传1、前言在项目开发遇到大文件,比如视频之类的文件,直接上传速度很慢,而且受限于服务器带宽,用户体验很不好,所以需要优化,常见的解决方案就是分片上传。 2、环境SpringBoot 3.3.5 +JDK 17 +MinIO 3、实现3.1 后端分片开始做分片时,首先考虑在服务端做分片看看能否提升整体文件上传速度。首先说结论,不能,甚至可能比直接上传大文件还慢。所以大文件分片上传必须要前端配合,只在后端实现不行,但是还是说一下思路:首先通过接口拿到文件,然后对文件进行分片,然后上传,最后再合并,即使借助线程池,实现同时上传多个分片,效率还是不行,主要原因是,分片还有合并IO耗时太长。 3.2 前端分片,后端合并主要流程:前端拿到文件,然后分片,并行调用上传接口(这个是重..
Read more

SpringBoot接入腾讯电子签
1、前言项目中需要使用到电子签名的功能,经过调研决定使用腾讯电子签。官网:腾讯电子签-电子合同-腾讯在线合同签约平台 2、接入流程2.1 结合业务需求确定接入方式。腾讯电子签产品很多,具体需要提前阅读官网或者联系售前客户之类的了解。本人在项目中接入方式是通过模板方式发起,其中模板是在腾讯的电子签工作台画好的。(也可以放在本地,通过文件上传的形式,然后发起) 2.2 首先登录腾讯电子签工作台。(以下以测试环境为例,正式环境需要企业认证注册,然后进入控制台。) 点击创建模板,上传合同模板(对应系统中的会诊病例),word和pdf都行。 添加签署区,设置一些属性(控件)名称,在调用接口时,要传参填充数据。 在要签名的地方,添加签署控件,以个人签名为例。 设置签署流程时,注意在添加签署人时,要注意选择个人,..
Read more

SpringBoot接入itext5生成pdf
SpringBoot集成itext5,实现pdf生成1、前言在项目开发中有需要生成pdf文件的功能,常见的方案如下: html作为模板,(Thymeleaf、freemaker等模板引擎)渲染数据,最后生成pdf 使用pdf模板(使用如:Adobe Acrobat编辑器,创建一个带有表单字段的PDF),填充数据,最后生成pdf 使用pdf模板(使用占位符,比如${name}),用数据替换占位符,最后生成pdf。比较复杂,不容易实现,不建议。 如何得到pdf文件,主要有两种方法,一种是写代码生成,还有就是用pdf转换工具,比如wkhtmltopdf之类的。由于在项目中考虑到,使用html的方案,在修改模板时对用户不友好,所以采用了方案2:pdf模板+表单+填充数据。 工具使用itext5,因为itext7..
Read more

支付宝V3接口接入
SpringBoot项目接入支付宝v3接口1、接入准备首先到支付宝开放平台注册或者登录,选择移动/网页支付,按照页面的指引进行接入(正式生产环境是必须要申请账号、创建应用、配置相关参数等)。如果只是开发测试,可以使用支付宝提供的沙箱环境,下面的所有的内容都是基于沙箱环境的。 打开控制台首页 - 开放平台,选择开发工具里的沙箱,可以查看支付宝分配给你的沙箱环境账号信息,特别是公钥和私钥,或者证书。本次开发,我用的是公钥和私钥的接口加签方式,使用证书也可以,只不过在1.0和2.0版本的接口,公私钥和证书的代码有些许不同,貌似在3.0版本中,代码都一样,只要在AlipayConfig中给相应字段赋值接可以了。 总之,接入准备的步骤,详细看支付宝官方文档,这里就不详细介绍了。 2、开发环境开发工具:idea + m..
Read more