当前位置: 首页 > news >正文

庆阳网站设计厂家做苗木免费网站

庆阳网站设计厂家,做苗木免费网站,自己买个服务器做网站,服务器网站带宽目录 需求一、准备模板文件二、引入Poi-tl、Apache POI依赖三、创建实体类#xff08;用于保存向Word中写入的数据#xff09;四、实现Service接口五、Controller层实现 需求 在服务端提前准备好Word模板文件#xff0c;并在用户请求接口时服务端动态获取图片。数据等信息插… 目录 需求一、准备模板文件二、引入Poi-tl、Apache POI依赖三、创建实体类用于保存向Word中写入的数据四、实现Service接口五、Controller层实现 需求 在服务端提前准备好Word模板文件并在用户请求接口时服务端动态获取图片。数据等信息插入到模板当中然后返回包含数据信息的Word文件流。 一、准备模板文件 在需要插入图片的地方使用{{参数名}}文本信息使用{{参数名}}进行占位占位格式将会被保留经过处理后格式不变 将准备好的模板文件放在resources目录下 二、引入Poi-tl、Apache POI依赖 poi-tlpoi template language是Word模板引擎基于Apache POI提供更友好的API使用起来更加简单 版本对应关系参考Poi-tl官网 !-- 替换自己使用的版本 -- dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion4.1.*/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.1.*/version /dependency !-- Word模板引擎 -- dependencygroupIdcom.deepoove/groupIdartifactIdpoi-tl/artifactIdversion1.7.*/version /dependency 三、创建实体类用于保存向Word中写入的数据 参数名必须同Word模板中的参数名称保持一致 import com.deepoove.poi.data.PictureRenderData;Data public class DownloadDate {//图片使用PictureRenderData类型private PictureRenderData image;private String name;private String a;private String b;private String c;private String d;private String e;private String f;private String g;private String h;private String i; }四、实现Service接口 public interface DownloadService {void download(HttpServletResponse response, DownloadDTO downloadDTO) throws IOException; }Service Slf4j public class DownloadServiceImpl implements DownloadService {Resource//远程调用服务private FeignService feignService;Overridepublic void download(HttpServletResponse response, DownloadDTO downloadDTO) throws IOException {BufferedImage、字节数组Base64可以转字节数组后使用//通过调用其它接口获取待写入的数据信息WordData wordData feignService.getData(downloadDTO);/** * 图片可以是多种格式------------------------* 图片路径PictureRenderData(int width, int height, String path)* FilePictureRenderData(int width, int height, File picture)* InputStreamPictureRenderData(int width, int height, String format, InputStream input)* BufferedImagePictureRenderData(int width, int height, String format, BufferedImage image)* 字节数组PictureRenderData(int width, int height, String format, byte[] data)* Base64可以转字节数组后使用*///以Base64为例先获取图片的Base64编码wordData.getImg是原始图片Base64数据String base64ImageData wordData.getImg.substring(data.indexOf(,) 1);//获取图片类型String format getBase64Type(base64ImageData);// 将base64数据转为字节数组byte[] imageBytes Base64.getDecoder().decode(base64ImageData);// 将字节数组包装成PictureRenderDataPictureRenderData pictureRenderData new PictureRenderData(690,530,format,imageBytes);//待写入Word的数据DownloadDate downloadDate new DownloadDate();//图片信息downloadDate.setImage(pictureRenderData);//其它信息downloadDate.setName(wordData.getName());//...XWPFTemplate template null;BufferedOutputStream bufferedOutputStream null;ServletOutputStream outputStream null;try {/** * 该方法会导致在部分环境中资源找不到的情况不推荐使用*///获得resource路径模板路径//String path Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource()).getPath() word/template.docx;// 读取Word模板//FileInputStream templateInputStream new FileInputStream(path);// 模板绑定数据//template XWPFTemplate.compile(templateInputStream).render(imageDownloadDate);// 从资源中加载Word模板try (InputStream templateInputStream getClass().getClassLoader().getResourceAsStream(word/template.docx)) {if (templateInputStream ! null) {// 模板绑定数据template XWPFTemplate.compile(templateInputStream).render(imageDownloadDate);} else {// 处理模板资源未找到的情况log.error(Word模板资源未找到);response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);return;}}//文件名String encodedFileName URLEncoder.encode(System.currentTimeMillis(), utf-8);//设置响应信息response.setHeader(Content-Disposition, attachment;filename encodedFileName .docx);response.setContentType(application/vnd.openxmlformats-officedocument.wordprocessingml.document);response.setCharacterEncoding(utf-8);outputStream response.getOutputStream();bufferedOutputStream new BufferedOutputStream(outputStream);template.write(bufferedOutputStream);//清空流bufferedOutputStream.flush();outputStream.flush();} catch (Exception e) {log.info(e.getMessage());response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);} finally {//关闭资源PoitlIOUtils.closeQuietlyMulti(template, bufferedOutputStream, outputStream);}}//根据base64编码获取图片格式信息private String getBase64Type(String base64) {byte[] b Base64.getDecoder().decode(base64);String type .png;if (0x424D ((b[0] 0xff) 8 | (b[1] 0xff))) {type .bmp;} else if (0x8950 ((b[0] 0xff) 8 | (b[1] 0xff))) {type .png;} else if (0xFFD8 ((b[0] 0xff) 8 | (b[1] 0xff))) {type .jpg;} else if (0x49492A00 ((b[0] 0xff) 24 | (b[1] 0xff) 16 | (b[2] 0xff) 8 | (b[3] 0xff))) {type .tif;}return type;}}五、Controller层实现 RestController RequestMapping(/test) Api(tags 获取商品图片) public class GetImageController {ResourceDownloadService downloadService;PostMapping(/download)ApiOperation(value 下载Word)void download(HttpServletResponse response,RequestBody DownloadDTO downloadDTO) throws IOException {//鉴权或其它处理//....downloadService.download(response,downloadDTO);}}
http://www.hkea.cn/news/14317497/

相关文章:

  • 便宜网站建设模板网站公司网站建设多少费用哪里济南兴田德润有活动吗
  • 10m带宽做下载网站网站地图如何制作
  • 企业建设网站目的是什么农资网站建设
  • 织梦做的网站后台wordpress 反广告
  • 虚拟主机和网站空间页面设计公司会招低学历的人吗
  • 个人网站用什么开发wordpress汉化器
  • 西宁网站建设 哪家好wordpress网站目录
  • 网站建设杭州公司软件商城下载
  • 零基础做地方门户网站深圳网站建设维护
  • 营销型企业网站模板免费域名解析网站建设
  • 网站图片上传代码做网站为什么要用php框架
  • 网站的实现怎么写棋牌app开发需要多钱
  • 青岛建设房地产招聘信息网站百度如何把网站做链接
  • 分享设计作品网站网络代运营公司
  • 遵义网站开发哪家便宜大数据和网站开发
  • 宁波网站优化找哪家莱芜网站建设与管理
  • 网站做视频在线观看网址wordpress page模板页
  • 网站公司怎么做推广方案深圳航空股份有限公司
  • 饰品企业网站建设哪家公司做网站便宜
  • 自己建的网站能用吗seo优化6个实用技巧
  • 做可视化图表的网站大型企业名录查询
  • 地产网站建设公司wordpress的介绍
  • 盗号网站怎么做自己网站开发
  • 自助模块化网站建设哪个网站内链建设好
  • 高密市建设局网站如何得到网站后台权限
  • 沧州商城网站开发设计苏州搜索引擎排名优化商家
  • 网站app用什么语言开发如何做自己的视频网站
  • 怎样制作一个自己的网页呢上海网络优化方法
  • 云南手机网站制作怎么建设自己的论坛网站
  • 济宁网站建设公司筑久建筑工程有限公司