将前端svg图片存为字符串,供world模板使用

//向后台提交svg数据
var chartDivArr = $("div.img");
for ( var i = 0; i < chartDivArr.length; i++) {
    var chartDiv = $(chartDivArr[i]);
    var chart_img = chartDiv.highcharts();
    var svg_img = chart_img.getSVG();
    var img_id = chartDiv.attr("id");
    var svg = $(<input type="text" style="display: none;"/>);
    svg.attr("id", img_id);
    svg.attr("name", img_id);
    svg.attr("value", svg_img);
    myform.append(svg);
}
//处理前台传回的图片
Map<String, String> charts = new HashMap<>();
String svgCode = "";
String pngBase64 = "";
Map<String, String[]> parameterMap = request.getParameterMap();
for (Map.Entry<String, String[]> parameter : parameterMap.entrySet()) {
    if (parameter.getKey().startsWith("img")) {
        svgCode = parameter.getValue()[0];
        pngBase64 = SvgPngConverter.convertToPngBytesBase64(svgCode);
        charts.put(parameter.getKey(), pngBase64);
    }
}
/**
 * 把svg图片编码转换为png格式图片的base64编码
 * @param svgCode
 * @return
 */
public static String convertToPngBytesBase64(String svgCode) {
    try {
        byte[] bytes = svgCode.getBytes("UTF-8");
        PNGTranscoder t = new PNGTranscoder();
        t.addTranscodingHint(PNGTranscoder.KEY_DEFAULT_FONT_FAMILY, "宋体");
        t.addTranscodingHint(PNGTranscoder.KEY_LANGUAGE, "zh_cn");
        t.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(1000.0));//只要指定宽度即可,高度自动调整。
        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
        TranscoderInput input = new TranscoderInput(bais);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        TranscoderOutput output = new TranscoderOutput(baos);
        t.transcode(input, output);
        baos.flush();
        byte[] pngBytes = baos.toByteArray();
        byte[] pngBase64Bytes = Base64.encodeBase64Chunked(pngBytes);
        IOUtils.closeQuietly(bais);
        IOUtils.closeQuietly(baos);
        return new String(pngBase64Bytes).trim();
    } catch (Exception e) {
        logger.warn("cover svg to pngbase64 fail", e);
        return null;
    }
}
经验分享 程序员 微信小程序 职场和发展