java使用highchart生成图片并采用freemark导出到word注意事项

1.highchart生成的图片是svg格式的,获取之后转换成输入输出流,转换成base64,将base64替换freemark中需要生成图片的位置,一般是一堆二维码,导出就可以了
2.多个图片的例子: var svg1= chartLogin.getSVG(); var svg2 = chartSelfUser.getSVG();在from中定义一个隐藏域 Id=”svg” name = “svg”
通过$(“#svg”).val(svgLogin+’_’+svgSelfUser);的方式为隐藏域赋值,通过from提交到后台,
3。后台获取数据后,
public void createAndDownload(HttpServletRequest request, HttpServletResponse response,
String cycleStartExport, String svgCode) throws Exception{

    try {
        WordDocumentUtils handler = new WordDocumentUtils();
        //文档设置值
        Map<String,Object> mapData = new HashMap<String,Object>();
        ByteArrayOutputStream array = new ByteArrayOutputStream();
        String svg[] = svgCode.split("_");
        for (int i = 0; i < svg.length; i++) {
            byte[] bytes = HtmlUtils.htmlUnescape(svg[i]).getBytes("UTF-8");
            PNGTranscoder t = new PNGTranscoder();
            TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(bytes));
            TranscoderOutput output = new TranscoderOutput(array);
            t.transcode(input, output);
            byte[] data = array.toByteArray();
            BASE64Encoder encoder = new BASE64Encoder();
            String img = null;
            if(data!=null && data.length>0){
                img = encoder.encode(data);
            }
            mapData.put("imgStr"+i, img);
        }


        handler.setDataByMap(mapData);
        //Configuration cfg = new Configuration();
        //cfg.setClassicCompatible(true);
        //文档生成名设置
        handler.createDoc(reportTemplate, reportFileName);
        //导出文档
        //handler.download(reportFileName,response);
        download(GlobalConfigure.getWordOutDir(),reportFileName,response,request);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

4.freemark中处理${imgStr0!}




需要注意的地方是前台传到后台的< > ” “会自动转换成网页的形式,所以要使用HtmlUtils.htmlUnescape进行转换
项目中需要引入的jar包为xml-apis-ext-1.3.04.jar batik-all-1.7.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值