`
lijiejava
  • 浏览: 259678 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

java后台生成HighCharts图片

 
阅读更多
在前端通过HighCharts获取svgCode,再根据svgCode生成图片。生成的图片在插入到word文档中 freemarker, BASE64Encoder

http://www.muxuanli.com:8888/lmx/blog/10

1. 获取svgCode

var chart = $("#container").highcharts();
var svgCode = chart.getSVG();


2. 根据svgCode生成图片

String svgImgPath = uploadFilePathService.getUploadFilePath()+"svg/"+salivaBox.getBarCode()+"_"+m+".png";
String svgCode = svgCodeList.get(m).replace("Highcharts.com.cn","");
SvgPngConverter.convertToPng(svgCode, svgImgPath);
params.put("image"+(m+1), SvgPngConverter.getImageBASE64Encoder(svgImgPath));


3. SvgPngConverter

import java.io.*;

import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.PNGTranscoder;
import sun.misc.BASE64Encoder;

/**
 * Created by lijie on 17/6/5.
 */
public class SvgPngConverter {

    /**
     *@Description: 将svg字符串转换为png
     *@Author:
     *@param svgCode svg代码
     *@param pngFilePath  保存的路径
     *@throws IOException io异常
     *@throws TranscoderException svg代码异常
     */
    public static void convertToPng(String svgCode,String pngFilePath) throws IOException,TranscoderException{

        File file = new File (pngFilePath);

        FileOutputStream outputStream = null;
        try {
            file.createNewFile ();
            outputStream = new FileOutputStream (file);
            convertToPng (svgCode, outputStream);
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close ();
                } catch (IOException e) {
                    e.printStackTrace ();
                }
            }
        }
    }

    /**
     *@Description: 将svgCode转换成png文件,直接输出到流中
     *@param svgCode svg代码
     *@param outputStream 输出流
     *@throws TranscoderException 异常
     *@throws IOException io异常
     */
    public static void convertToPng(String svgCode,OutputStream outputStream) throws TranscoderException,IOException{
        try {
            byte[] bytes = svgCode.getBytes ("UTF-8");
            PNGTranscoder t = new PNGTranscoder ();
            TranscoderInput input = new TranscoderInput (new ByteArrayInputStream (bytes));
            TranscoderOutput output = new TranscoderOutput (outputStream);
            t.transcode (input, output);
            outputStream.flush ();
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close ();
                } catch (IOException e) {
                    e.printStackTrace ();
                }
            }
        }
    }

    public static String getImageBASE64Encoder(String imagePath) {
        InputStream in = null;
        byte[] data = null;
        try {
            in = new FileInputStream(imagePath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }

}

分享到:
评论

相关推荐

    java后端调用hightchars生成图片

    Highcharts的java后台生成各种图片,经过测试生成图片时间比较长,大概的3-7秒。直接运行demo,SimpleExport测试类,直接测试

    Highcharts在Java后台导出图片到PDF和EXCEL文件中示例代码

    Highcharts在Java后台导出图片到PDF和EXCEL文件中示例代码,程序放到MyEclipse8.6中编译后可直接放到Tomcat6及以上版本运行,程序中含有jar包,下载后不用操心到处找jar包,在MyEclipse8.6里建立普通的Web工程就可以...

    Java将数据和图片导入word文档以及html5绘图(highcharts,exporting.js;服务端导出)

    1,将java后台获取的数据写入word文档并导出 2,将图片导入word文档并导出(注意:导出图片在word模板上需要先随便找张图片先放入指定位置,另存为xml之后打开,将先前放入的图片xml删掉,做个标识符(例如:${abc}))

    毕业设计,基于springboot+mysql+bootstrap开发的电商书城系统,内含Java完整源代码,数据库脚本等

    基于springboot的bookstore电商书城系统 - 后台主要是springboot+mybatis+shiro+jsp,前端界面主要使用bootstrap框架搭建,并使用了ueditor富文本编辑器、highcharts图表库 一、系统介绍 后台管理员登录包含以下...

    spring+struts+hibernate半自动开发.zip

    JAVA代码有很多重复机械代码, 生成器可以帮助解决50%的重复工作,让开发更多关注业务逻辑, 从而实现代码生成+手工merge的半智 能开发! JEECG敏捷框架可以有效解决信息孤岛问题,生成统一代码、统一规范、统一设计...

    jeecg-framework 源代码

    JAVA编程有很多重复机械代码, 生成器可以帮助解决50%的重复工作,让开发更多关注业务逻辑, 从而实现代码生成+手工merge的半智能开发!JEECG敏捷框架可以有效解决信息孤岛问题,生成统一代码、统一规范、统一设计思路...

    jeecg-framework-v2.0 (最新源码)

    JAVA编程有很多重复机械代码, 生成器可以帮助解决50%的重复工作,让开发更多关注业务逻辑, 从而实现代码生成+手工merge的半智能开发!JEECG智能框架可以有效解决信息孤岛问题,生成统一代码、统一规范、统一设计思路...

    MF00478-sprignboot电商书城源码.zip

    后台主要是为商家服务,实现了权限,店铺,商品和订单等的管理,以及生成一些简单的报表信息。访 问 /admin 进入后台 运行环境: jdk1.8,maven,mysql 项目技术: 后台主要是springboot+mybatis+shiro+jsp,前端...

    springboot+mybatis+shiro的电商书城系统.zip

    后台主要是springboot+mybatis+shiro+jsp(jsp已过时)...,前端界面主要使用bootstrap框架搭建,并使用了ueditor富文本编辑器、highcharts图表库 系统划分与功能 该系统分为前台展示和后台管理两大模块。 前台主要是...

    CMS轻量级系统

    天梯是一个用 Java 相关技术搭建的后台 CMS 解决方案,用户可以结合自身业务进行相应扩展,同时提供了针对 dao、service 等的代码生成工具。技术选型:Spring Data JPA、Hibernate、Shiro、 Spring MVC、Layer、...

    大数据离线分析项目(Hadoop).pdf

    2. Java SDK:后台服务日志生成与发送工具,特点是代码简单,可以打成jar包或者直接拷贝类到具体的项目中。 3. Nginx:web服务器软件,特点是小巧而高效,基于事件的,内存使用很低,系统资源消耗小。 4. Shell脚本...

Global site tag (gtag.js) - Google Analytics