1. 项目背景
这几天“被迫”需要研究java集成锐浪,根据模板和数据输出pdf,便于前端预览或打印。看着不起眼的东西,想着有官方帮助文档,应该一天就能搞定的事,没想到却研究了3天多才正式初步完成。下面介绍下在集成中需要注意的方面。
PS:前置条件,需要下载安装Grid++Report 6
2. windows系统
2.1. 下载及验证
打开Grid++Report 6下的grhelp6.chm帮助文档,点开【WEB报表(B/S报表)-WEB报表服务器(跨平台版)-Windows中安装】目录,安装说明操作及验证
2.2. 复制资源
解压grsvr6后,进入grsvr6\\bin\\x64目录,将目录下所有资源复制到jdk安装目录的bin目录下;
将grsvr6\\Samples\\java\\console\\libs目录下的gridreport.jar复制到springboot并通过pom文件引入
<!–引入GridReport依赖–>
<dependency>
<groupId>gridreport</groupId>
<artifactId>gridreport</artifactId>
<version>6.8.9.1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/gridreport.jar</systemPath>
</dependency>
(需要发布到linux的话)修改pom文件,打包时将本地gridreport.jar导入jar包中,否则在linux启动服务后,调用接口会报找不到类
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!–打jar包:将引入的作用域为system的本地jar也打包进来–>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
3. linux系统
帮助文档中找到【WEB报表服务器(跨平台版)】目录,下载和安装linux版本(本人是国产麒麟系统,操作基本一样)
需要卸载openjdk,安装jdk1.8。按照操作文档中,设置环境变量并验证
这时候你会发现,启动项目并调用接口后发现pdf文件中未显示中文数据。原因就是服务器没添加中文字体,找到windows电脑上的字体库,全部复制到/usr/local/grsvr6/fonts下。然后重启自身服务即可。
—————————————————2024-10-30———————————————–
看到有人评论这篇文章,进来一看,才发现具体实现代码没有贴上,不好意思,失误失误
4. 实现代码
事先说明:只需关注自己需要的代码和逻辑,无关的直接删除即可。实体类表请根据实体类自行创建
4.1. dao层实体类
package cn.xxx.platform.fr.print.dao.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* grf模板管理表
*
* @author xxx
* @date: 2024-05-28 12:01:10
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
@Getter
@Setter
@TableName(schema = \”TS_PRINT\”, value = \”GRF_MANAGE\”)
public class FrPrintGrfManage {
/** ID */
@TableId(type = IdType.ASSIGN_ID)
private String id;
/** grf模板名称 */
@TableField(value = \”GRF_NAME\”)
@ApiModelProperty(value = \”grf模板名称\”)
private String grfName;
/** 随机码 */
@ApiModelProperty(value = \”随机码\”)
private String randomCode;
/** grf打印宽度:单位毫米(mm) */
@ApiModelProperty(value = \”grf打印宽度:单位毫米(mm)\”)
private Double grfWidth;
/** grf打印高度:单位毫米(mm) */
@ApiModelProperty(value = \”grf打印高度:单位毫米(mm)\”)
private Double grfHeight;
/** 创建人 */
@ApiModelProperty(value = \”创建人\”)
@TableField(value = \”CREATE_USER\”, fill = FieldFill.INSERT)
private String createUser;
/** 创建人名称 */
@ApiModelProperty(value = \”创建人名称\”)
@TableField(value = \”CREATE_USER_NAME\”, fill = FieldFill.INSERT)
private String createUserName;
/** 创建时间 */
@ApiModelProperty(value = \”创建时间\”)
@TableField(value = \”CREATE_DATE\”, fill = FieldFill.INSERT)
@JsonFormat(pattern = \”yyyy-MM-dd HH:mm:ss\”, timezone = \”GMT+8\”)
private Date createDate;
/** 修改人名称 */
@ApiModelProperty(value = \”修改人\”)
@TableField(value = \”UPDATE_USER\”, fill = FieldFill.UPDATE)
private String updateUser;
/** 修改人名称 */
@ApiModelProperty(value = \”修改人名称\”)
@TableField(value = \”UPDATE_USER_NAME\”, fill = FieldFill.UPDATE)
private String updateUserName;
/** 修改时间 */
@ApiModelProperty(value = \”修改时间\”)
@TableField(value = \”UPDATE_DATE\”, fill = FieldFill.UPDATE)
@JsonFormat(pattern = \”yyyy-MM-dd HH:mm:ss\”, timezone = \”GMT+8\”)
private Date updateDate;
}
4.2. dao层Mapper
package cn.xxx.platform.fr.print.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.xxx.platform.fr.print.dao.entity.FrPrintGrfManage;
/**
* grf模板管理表mapper
*
* @author xxx
* @date: 2024-05-28 13:55:54
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
public interface FrPrintGrfManageMapper extends BaseMapper<FrPrintGrfManage> {
}
4.3. 接口入参vo
package cn.xxx.platform.fr.print.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* 模板管理分页查询入参vo
*
* @author xxx
* @date: 2024-05-28 14:05:14
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
@Getter
@Setter
public class FrPrintGrfManagePageInfoReqVo {
/** 查询关键字 */
@ApiModelProperty(value = \”查询关键字\”)
private String keyword;
/** 页码 */
@ApiModelProperty(value = \”页码\”)
private Integer pageNo;
/** 页大小 */
@ApiModelProperty(value = \”页大小\”)
private Integer pageSize;
}
package cn.xxx.platform.fr.print.vo;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* grf模板新增接口出参
*
* @author xxx
* @date: 2024-05-28 14:34:38
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
@Getter
@Setter
public class FrPrintGrfManageAddResVo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/** 主键 */
@ApiModelProperty(value = \”主键\”)
private String id;
/** 随机码 */
@ApiModelProperty(value = \”随机码\”)
private String randomCode;
}
package cn.xxx.platform.fr.print.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* 根据grf生成pdf接口入参
*
* @author xxx
* @date: 2024-05-28 14:58:42
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
@Getter
@Setter
public class FrPrintGrfManagePdfByGrfReqVo {
/** 模板id */
@ApiModelProperty(value = \”模板id\”)
private String id;
/** 随机码 */
@ApiModelProperty(value = \”随机码\”)
private String randomCode;
/** 数据json */
@ApiModelProperty(value = \”数据json\”)
private String dataJson;
/** PDF文件的显示方式:inline.内联模式,直接通过浏览器打开PDF;attachment.附件模式,浏览器提示保存对话框 */
@ApiModelProperty(value = \”PDF文件的显示方式:inline.内联模式,直接通过浏览器打开PDF;attachment.附件模式,浏览器提示保存对话框\”)
private String pdfMode;
}
package cn.xxx.platform.fr.print.vo;
import org.springframework.web.multipart.MultipartFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* 更新模板接口入参
*
* @author xxx
* @date: 2024-05-28 15:16:46
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
@Getter
@Setter
public class FrPrintGrfManageUpdateReqVo {
/** 模板id */
@ApiModelProperty(value = \”模板id\”)
private String id;
/** 随机码 */
@ApiModelProperty(value = \”随机码\”)
private String randomCode;
/** 模板文件 */
@ApiModelProperty(value = \”模板文件\”)
private MultipartFile multipartFile;
}
package cn.xxx.platform.fr.print.vo;
import java.io.Serializable;
import cn.xxx.platform.fr.print.dao.entity.FrPrintGrfManage;
import lombok.Getter;
import lombok.Setter;
/**
* grf模板管理表vo
*
* @author xxx
* @date: 2024-05-28 14:00:47
* @Copyright: Copyright (c) 2006 – 2024
* @Company: xxx公司
* @Version: V1.0
*/
@Getter
@Setter
public class FrPrintGrfManageVo extends FrPrintGrfManage implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
}
4.4. 接口返回结果对象
package cn.xxx.platform.common.core.result;
import cn.xxx.platform.cloud.common.core.constant.Constants;
import io.swagger.annotations.ApiMod
评论前必须登录!
注册