首页>代码>spring Mvc开发js+ajax的省市地区县街道四级联动弹出框(网上的都是三级联动的哦)>/EasyWorkFrame/WebContent/common/js/Highcharts-3.0.1/exporting-server/java/highcharts-export/src/main/java/com/highcharts/export/util/SVGRasterizer.java
/** * @license Highcharts JS v2.3.3 (2012-11-02) * * (c) 20012-2014 * * Author: Gert Vaartjes * * License: www.highcharts.com/license */ package com.highcharts.export.util; import java.io.ByteArrayOutputStream; import java.io.StringReader; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.batik.transcoder.SVGAbstractTranscoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.image.JPEGTranscoder; import org.apache.batik.transcoder.image.PNGTranscoder; import org.apache.fop.svg.PDFTranscoder; import org.apache.log4j.Logger; public class SVGRasterizer { protected static Logger logger = Logger.getLogger("rasterizer"); private static final SVGRasterizer INSTANCE = new SVGRasterizer(); public static final SVGRasterizer getInstance() { return INSTANCE; } private SVGRasterizer() { } public synchronized ByteArrayOutputStream transcode( ByteArrayOutputStream stream, String svg, MimeType mime, Float width, Float scale) throws SVGRasterizerException, TranscoderException { TranscoderInput input = new TranscoderInput(new StringReader(svg)); TranscoderOutput transOutput = new TranscoderOutput(stream); // get right Transcoder, this depends on the mime SVGAbstractTranscoder transcoder = SVGRasterizer.getTranscoder(mime); if (width != null) { /* * If the raster image height is not provided (using the * KEY_HEIGHT), the transcoder will compute the raster image height * by keeping the aspect ratio of the SVG document. */ transcoder.addTranscodingHint(SVGAbstractTranscoder.KEY_WIDTH, width); } if (width == null && scale != null && scale != 0.00) { Float svgWidth = getWidthFromSvg(svg); // calculate width from svg if (svgWidth != null) { transcoder.addTranscodingHint(SVGAbstractTranscoder.KEY_WIDTH, svgWidth * scale); } } transcoder.transcode(input, transOutput); return stream; } public static SVGAbstractTranscoder getTranscoder(MimeType mime) throws SVGRasterizerException { SVGAbstractTranscoder transcoder = null; switch (mime) { case PNG: transcoder = new PNGTranscoder(); break; case JPEG: transcoder = new JPEGTranscoder(); transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(0.9)); break; case PDF: transcoder = new PDFTranscoder(); break; default: // do nothing break; } if (transcoder == null) { throw new SVGRasterizerException("MimeType not supported"); } return transcoder; } public Float getWidthFromSvg(String svg) { Pattern pattern = Pattern.compile("^<svg[^>]*width=\\\"([0-9]+)", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(svg); if (matcher.lookingAt()) { return Float.valueOf(matcher.group(1)); } return null; } }
最近下载更多