开篇引语
小伙伴在学习java是否有这样的困混不知道反射是干嘛的,不知道注解有什么用。导致很多人看 java基础的时候迷迷糊糊,那是你还没有在实际项目中遇到,不知道该如何使用它们。接下来我会为你们详细讲解实际项目中是如何运用反射和自定义注解的,不管你现在对反射和注解了解多少,这篇博客站在实际应用角度从业务介绍到代码实现每一步都给出了详细贴图和代码竭力为大家讲解,无论你是否感兴趣你都应该先点赞收藏起来方便以后用到了过来查看。
一、业务场景描述
将14天的气象预报数据以PDF的形式展示,现在已有14天预报的数据,如下。


要将上面的14条数据放进下面的这个模板中,最终以PDF的形式生成。效果图如下


二、使用工具准备好模板,最后保存生成PDF
这里需要使用软件工具Adobe Acrobat DC,需要工具的小伙伴可以评论区留言发送:资料。
具体如何使用工具和生成PDF可以看:java使用itex生成PDF-CSDN博客

三、代码实现
实体类展示,这里建议可以大概看一下,先不用看为什么这样设计实体类,以及自定义注解的定义,后面代码具体地方引用了下面的实体类再来看就会清晰很多。
package com.hw.ioz.web.dto;
import com.zye.ioz.common.annotations.ReportFiled;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author:Ttc
* @date 2024/1/22 14:36
* @description: 导出大屏预报数据DTO
*/
@Data
public class ForecastDataDTO {
/**
* 日期
*/
@ApiModelProperty(value = "日期", notes = "")
@ReportFiled(value = "date")
private String formattedDate;
/**
* 天气
*/
@ApiModelProperty(value = "天气", notes = "")
@ReportFiled(value = "weather")
private String weaDay;
/**
* 大屏显示风力等级
*/
@ApiModelProperty(value = "大屏显示风力等级", notes = "")
@ReportFiled(value = "wind")
private String largeScreenWind;
/**
* 最高温度
*/
@ApiModelProperty(value = "最高温度", notes = "")
@ReportFiled(value = "tem_max")
private String tem1;
/**
* 最低温度
*/
@ApiModelProperty(value = "最低温度", notes = "")
@ReportFiled(value = "tem_min")
private String tem2;
}
package com.hw.ioz.web.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @author:Ttc
* @date 2024/1/22 15:40
*/
@Data
@AllArgsConstructor
public class PdfFiledDto {
/**
* 文本域内容
*/
private String val;
/**
* 字体大小
*/
private float fontsize;
/**
* 自定义字体
*/
private String fontPath;
}
package com.hw
最低0.47元/天 解锁文章
3091

被折叠的 条评论
为什么被折叠?



