资讯专栏INFORMATION COLUMN

【freemaker实现导出word③】详解将echarts的图片到出到word

flyer_dev / 2460人阅读

摘要:前面介绍了导出到的代码实现,详见这里,里面有一部分涉及导出图片到,在这里我再另外做一个详细的介绍。在前台用将生成的图片转成编码,提交给后台。

前面介绍了导出到word的代码实现,详见这里,里面有一部分涉及导出图片到word,在这里我再另外做一个详细的介绍。
是这样的,我项目有个功能,里面就涉及到要将echarts形成的柱状图或者地图之类的图表导出到word,在网上找了很久,都是说将图片转成base64编码后传给后台解码,但没有一篇有详细具体的介绍,经过不断的摸索,终于实现了,在这里给大家做个分享。

处理步骤:
(1)图片我们可以在前台将要的图片转成base64编码,然后提交给后台接收
(2)后台接收base64编码后使用工具类将base64解码成图片然后保存到本地中
(3)在要导出word的时候读取下本地存储图片的路径然后把图片导出来就行了。

1、在前台用js将echarts生成的图片转成base64编码,提交给后台。

2、下面就是使用工具类在后台对图片进行处理,工具类如下:

package com.*.util;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import javax.imageio.ImageIO;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;


/**
 * 类名称:ImageUtil
 * 类描述:图片处理工具类
 */
public class ImageUtil {
    
     /**
      * 从path这个地址获取一张图片然后转为base64码
      * @param imgName  图片的名字 如:123.png(是带后缀的)
      * @param path     123.png图片存放的路径
      * @return
      * @throws Exception
      */
     public static String getImageFromServer(String imgName,String path)throws Exception{
      BASE64Encoder encoder = new BASE64Encoder();
      File f = new File(path+imgName);
            if(!f.exists()){
        f.createNewFile();
            }
            BufferedImage bi = ImageIO.read(f);    
            ByteArrayOutputStream baos = new ByteArrayOutputStream();    
            ImageIO.write(bi, "png", baos);    
            byte[] bytes = baos.toByteArray();    
            return encoder.encodeBuffer(bytes).trim();      
     }
     
     /**
      * 将一个base64转换成图片保存在  path文件夹下  ,命名随机
      * @param base64String
      * @param path  是一个文件夹路径
      * @param imgName 图片名字(没有后缀)
      * @throws Exception
      */
     public static String savePictoServer(String base64String,String path)throws Exception{
        
         BASE64Decoder decoder = new BASE64Decoder();
         //要把+在上传时变成的空格再改为+
         base64String = base64String.replaceAll(" ", "+");
         //去掉“data:image/png;base64,”后面才是base64编码,去掉之后才能解析
         base64String = base64String.replace("data:image/png;base64,","");
         //在本地指定位置建立文件夹,path由控制台那边进行定义
         String realPath = path+"/"+"echarts";
         File dir=new File(realPath);
         if(!dir.exists()){
          dir.mkdirs();
         }
         String fileName=path+""+"echarts"+""+UUID.randomUUID().toString()+".png";
         try {  
             byte[] buffer = decoder.decodeBuffer(base64String);  
             OutputStream os = new FileOutputStream(fileName);
             for(int i =0;i

3、最后一步就是控制台方法如何处理图片导出到word了,参照上一篇文章的第三步

到这里我的freemaker导出word系列就分享完毕咯。

感谢各位看官的阅读,本仙女是帅帅的玉米,有什么问题请留言哦,觉得有用的请赏赐个赞!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89304.html

相关文章

  • freemaker实现导出word详解echarts图片出到word

    摘要:前面介绍了导出到的代码实现,详见这里,里面有一部分涉及导出图片到,在这里我再另外做一个详细的介绍。在前台用将生成的图片转成编码,提交给后台。 前面介绍了导出到word的代码实现,详见这里,里面有一部分涉及导出图片到word,在这里我再另外做一个详细的介绍。是这样的,我项目有个功能,里面就涉及到要将echarts形成的柱状图或者地图之类的图表导出到word,在网上找了很久,都是说将图片转...

    endless_road 评论0 收藏0
  • freemaker实现导出word②】代码实现导出word(包括导出list数据和导出图片到wor

    摘要:前面文章已经分享了如何创建导出需要用到的模板了,接下来这里要给大家分享的是如何用后台制作导出的代码工具和实现。可以重,数据库装载。 前面文章已经分享了如何创建导出word需要用到的xml/ftl模板了,接下来这里要给大家分享的是如何用后台制作导出word的代码工具和controller实现。 1、首先是工具类,没有工具,谈何实现呢?下面贴我这边导出word的utils,大家可以直接复制...

    bitkylin 评论0 收藏0
  • freemaker实现导出word①】创建xml/ftl模板

    摘要:在项目中,往往很多时候需要我们实现将数据导出到文档中,但是导出首要做法就是创建模板,没有模板,请求出来的数据就没有可以存放和显示的地方。代码实现导出请看后续文章。 在javaweb项目中,往往很多时候需要我们实现将数据导出到word文档中,但是导出word首要做法就是创建模板,没有模板,请求出来的数据就没有可以存放和显示的地方。导出的模板需要xml或者ftl格式的文件。 新建word文...

    Kross 评论0 收藏0
  • [原]文档定义应用:数据科学文档革命

    摘要:对于数据科学的研究可以说已经是本文我将介绍如何以文档定义应用的方式成为数据科学中的标准交付。参考前文解密的数据科学部门如果构建知识仓库,作为一个谢大大的死忠,我很自然选择了作为我文档输出的首选工具。 showImg(https://segmentfault.com/img/remote/1460000006760433?w=423&h=426); 概述 随着近年来,Rstudio 通过...

    wh469012917 评论0 收藏0
  • python综合程序设计——做一个可视化大屏

    摘要:完成可视化热搜榜和国内疫情新增图,提高学生的编程能力和分析问题解决问题的能力。下图为百度微博知乎三大平台的热搜词频统计图。后续我会补上薄弱项,为争取做一名全栈技术人员而奋斗。 ...

    _Dreams 评论0 收藏0

发表评论

0条评论

flyer_dev

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<