在前端通过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后端生成Highcharts图表,我们可以使用“highcharts-serverside-export-master”这个压缩包中的资源。这个项目可能是对Highcharts的一个后端实现,允许我们在Java环境中解析Highcharts的配置和数据,然后...
Highcharts在Java后台导出图片到PDF和EXCEL文件中示例代码,程序放到MyEclipse8.6中编译后可直接放到Tomcat6及以上版本运行,程序中含有jar包,下载后不用操心到处找jar包,在MyEclipse8.6里建立普通的Web工程就可以...
通过Java后台实现将前端页面的Highcharts图表导出至生成的Excel文件中。使用于报表页面导出类功能。 2. 解释 前端页面将图表的SVG信息字符串作为参数传递后台,使用Batik工具包生成图片,使用POI工具包操作Excel。...
在这个"Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子"中,我们将探讨如何结合Java后端和JSON数据格式,通过AJAX技术在网页上展示动态曲线报表。 首先,`index_lineAjax.htm`是前端HTML文件,它包含了...
**Java HighCharts 实例详解** ...无论是在后台生成静态图表,还是在前端通过AJAX动态更新,都能提供出色的用户体验。通过深入学习和实践,你可以充分利用HighCharts的功能,创建出满足需求的可视化解决方案。
在Java编程环境中,Highcharts是一个...Java负责处理后端逻辑和数据生成,Ajax负责异步数据请求,而Highcharts则用于前端的图表展示。通过熟练掌握这些技术,开发者可以构建出交互性强、用户体验良好的数据可视化应用。
1,将java后台获取的数据写入word文档并导出 2,将图片导入word文档并导出(注意:导出图片在word模板上需要先随便找张图片先放入指定位置,另存为xml之后打开,将先前放入的图片xml删掉,做个标识符(例如:${abc}))
1. Servlet与JSP:在Java Web中,Servlet处理后台逻辑,JSP用于生成动态HTML。Servlet可以计算数据并传递给JSP,JSP通过内置的JSTL标签库或EL表达式来显示图表。 2. AJAX:通过AJAX异步请求,可以从服务器获取新数据...
5. **数据分析与图表**:项目可能包含了如JFreeChart、Apache ECharts或Highcharts等Java图表库,用于将数据可视化。这些库可以生成各种图表类型,如柱状图、折线图、饼图等,帮助用户直观理解数据趋势和模式。 6. ...
5. **后台技术**:虽然主要强调的是前端模板,但后台一般会使用Java Spring Boot或Spring MVC等技术,配合数据库如MySQL,进行数据处理和业务逻辑的实现。这部分虽然不在描述中,但在实际应用中不可或缺。 6. **...
5. **服务器端渲染**:Highcharts支持服务器端渲染,能在后端生成图表图像,提高网页加载速度。 在描述中提到的"EchartsForSpring"可能是一个集成Echarts和Spring框架的项目示例。Spring是一个广泛使用的Java企业级...
Highcharts内置了导出和打印功能,用户可以直接将图表导出为图片文件或打印出来,非常方便。 **2.12 缩放功能** Highcharts允许用户对图表的部分区域进行缩放,以便更详细地查看特定数据段。 **2.13 载入外部数据...
在JSP中,可以将后台处理的数据通过Ajax异步请求传递给前端,前端再利用这些数据动态生成Highcharts图表。C#开发者则可以借助ASP.NET或其他框架,将数据序列化为JSON格式并发送到客户端,同样实现数据可视化。 集成...
4. **图表库**:生成饼状图通常需要借助第三方库,如JFreeChart、ECharts、Highcharts等。在这个项目中,很可能是使用了JFreeChart,它是一个强大的Java图表库,可以方便地创建各种类型的图表,包括饼状图。...
Java教育后台管理子系统是一个基于Java编程语言开发的软件应用,主要用于教育行业的后台管理。这个系统的核心目标是提供一个高效、稳定且功能丰富的平台,帮助教育机构或在线学习平台进行资源管理、用户管理、课程...
在后端,`chartBean`是一个 Managed Bean,负责处理数据并生成Highcharts配置对象。配置对象会被传递回JavaScript函数,并在页面加载时调用`drawChart`函数绘制图表。 在`chartBean`中,你可以使用如下的代码生成...
在SSH项目中,highcharts可以用于展示数据统计结果,通过JavaScript与后台Java代码交互,获取数据后动态生成图表。开发者需要理解highcharts的API,设置图表类型、数据源、样式等参数,以满足不同场景下的数据可视化...
1. **JSP(JavaServer Pages)**:JSP是一种基于Java的技术,用于动态生成web页面。开发者可以在HTML或XML文档中嵌入Java代码,使得服务器端能够处理用户请求,动态生成响应内容。在本案例中,JSP被用来实现用户登录...
Java企业网站后台管理系统是一款基于Java技术开发的管理平台,它主要用于实现企业级网站的后台功能,包括用户管理、权限控制、内容发布、数据处理等多种核心业务。本系统通常由多个模块组成,如用户模块、权限模块、...
关于后台数据的处理,这通常涉及到服务器端编程,如Python的Flask或Django,Java的Spring Boot等。后端会根据请求返回JSON数据,前端通过Ajax或者Fetch API获取并解析这些数据,然后更新图表。 在实践项目"Practice...