Spring Boot - 将 html 页面转化为 pdf 文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot - 将 html 页面转化为 pdf 文件相关的知识,希望对你有一定的参考价值。
参考技术A废话不多说,先看效果图。
本示例重要功能点:
技术栈:
进入 http://start.spring.io 创建 Spring Boot 项目,Spring Boot 版本为 2.7.0,选择如下依赖:
访问 http://localhost:9090/view 查看 html 页面效果。访问 http://localhost:9090/downloadPdf 下载 pdf 文件。
Spring boot 定制自己的错误
1)、有模板引擎的情况下;error/状态码; 【将错误页面命名为 错误状态码.html 放在模板引擎文件夹里面的 error文件夹下】,发生此状态码的错误就会来到 对应的页面;
我们可以使用4xx和5xx作为错误页面的文件名来匹配这种类型的所有错误,精确优先(优先寻找精确的状态码.html);
页面能获取的信息;
timestamp:时间戳
status:状态码
error:错误提示
exception:异常对象
message:异常消息
errors:JSR303数据校验的错误都在这里
2)、没有模板引擎(模板引擎找不到这个错误页面),静态资源文件夹下找;
3)、以上都没有错误页面,就是默认来到SpringBoot默认的错误提示页面;
1)、自定义异常处理&返回定制json数据;
@ResponseBody @ExceptionHandler(UserNotExistException.class) public Map<String,Object> handleException(Exception e){ Map<String,Object> map = new HashMap<>(); map.put("code","user.notexist"); map.put("message",e.getMessage()); return map; }
2)、转发到/error进行自适应响应效果处理
@ControllerAdvice public class DemoExceptionHandler { @ExceptionHandler(DemoException.class) public String handleException(Exception e, HttpServletRequest request){ Map<String,Object> map = new HashMap<>(); //传入我们自己的错误状态码 4xx 5xx //Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); //设置成自己的状态码 request.setAttribute("javax.servlet.error.status_code",500); map.put("code","user.notexist"); map.put("message","用户出错啦"); request.setAttribute("ext",map); //转发到 /error由我们的BasicError 来处理返回JSON还是页面.. return "forward:/error"; } }
1、完全来编写一个ErrorController的实现类【或者是编写AbstractErrorController的子类】,放在容器中;
2、页面上能用的数据,或者是json返回能用的数据都是通过errorAttributes.getErrorAttributes得到;
容器中DefaultErrorAttributes.getErrorAttributes();默认进行数据处理的;
自定义ErrorAttributes
//定义自己的错误消息 @Component public class MyErrorAttributes extends DefaultErrorAttributes { @Override public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) { Map<String, Object> map = super.getErrorAttributes(requestAttributes, includeStackTrace); map.put("company", "hh");
//我们的异常处理器携带的数据 requestAttributes为请求域中取数据
Map<String,Object> ext = (Map<String, Object>) requestAttributes.getAttribute("ext", 0);
map.put("ext",ext);
return map; }
}
原因: 如下图,我们放入ErrorAttributes 就会加入数据并返回
最终的效果:响应是自适应的,可以通过定制ErrorAttributes改变需要返回的内容,
以上是关于Spring Boot - 将 html 页面转化为 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章