使用freemarker將echarts圖片儲存到word中
使用freemarker將echarts圖片儲存到word中
在某已領域的業務中,經常需要對一類資料進行統計,生成echarts圖表並且附帶相應的描述材料匯出:
將echarts儲存到本地
java讀取圖片進行base64編碼
製作freemarker模板
填充freemarker模板
下載word
將echarts儲存到本地
使用js傳送相應的請求:
//讓圖片先載入一會兒
setTimeout(exportImage, 2000);
function exportImage(){
var data = "a="+encodeURIComponent(myChart.getDataURL("png"));
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","<%=path%>/servlet/saveImage",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert("儲存成功");
}
}
xmlhttp.send(data);
}
}
);
java端程式碼如下:
String a = request.getParameter("a");
try {
String[] url = a.split(",");
String u = url[1];
// Base64解碼
byte[] b = new BASE64Decoder().decodeBuffer(u);
WordUtil wordUtil = new WordUtil();
String fileStr = wordUtil.saveFile();
// 生成圖片
OutputStream out = new FileOutputStream(new File(fileStr+"\\test.png"));
out.write(b);
out.flush();
out.close();
java讀取圖片進行base64編碼
將檔案轉換為byte陣列在進行base64編碼,程式碼如下
public String getImageStr(String imgFile) {
InputStream in = null;
byte[] data = null;
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
製作freemarker模板
製作freemarker模板很簡單,注意word的版本:
將word文件進行排版,圖片,文字等進行排版固定, 使用office將word另存為xml檔案,開啟xml檔案使用${*}將文字和圖片替換,儲存xml,將字尾修改為ftl。
這樣我們的模板就做好了,接下來呼叫工具類將內容填充到模板中,程式碼如下:
public class TemplateTool {
private Configuration configuration = null;
public TemplateTool(){
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
}
// 引數:模板路徑、模板名稱、生成檔案路徑、要加入的資料map
public void createFile(String temPath, String temName, String filePath, Map dataMap){
configuration.setClassForTemplateLoading(this.getClass(), temPath);
Template tl = null;
try{
tl = configuration.getTemplate(temName);
}catch (IOException e){
e.printStackTrace();
}
File outFile = new File(filePath);
Writer out = null;
try{
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
}catch(FileNotFoundException e1){
e1.printStackTrace();
}
try{
tl.process(dataMap, out, ObjectWrapper.BEANS_WRAPPER);
out.flush();
out.close();
}catch (TemplateException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
到這裡,圖文並茂的word已經生成好了,接下來只要提供檔案下載就實現功能了。
相關文章
- 使用Java將圖片生成sequence file並儲存到HBaseJava
- 將ECharts圖表插入到Word文件中Echarts
- 將echarts生成的圖表變為圖片儲存起來Echarts
- 短視訊平臺開發,將圖片、視訊儲存到本地的相簿中
- 諮詢數學公式儲存到mysql中 非圖片形式儲存公式MySql
- 原生JS實現base64圖片下載-圖片儲存到本地JS
- Matplotlib中將繪圖儲存到Numpy陣列的2種方法繪圖陣列
- python入門012~使用requests爬取網路圖片並儲存到本地Python
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- 使用 JDAudioCrawler 將下載的音訊儲存到本地儲存音訊
- 將ebay易貝網上的多款商品圖片儲存到電腦要怎麼操作
- 微信小程式--通過canvas生成圖片並儲存到本地微信小程式Canvas
- 我是如何使用freemarker生成Word檔案的?
- Python 將Word轉換為JPG、PNG、SVG圖片PythonSVG
- 種草丨小紅書圖片如何儲存到手機?高畫質無水印圖片!(收藏)
- rust 截圖儲存到檔案Rust
- 如何將圖片轉word?圖文轉換選轉易俠
- word備忘【圖片】
- 安卓上傳圖片到伺服器並儲存到電腦本地安卓伺服器
- 透過spark將資料儲存到elasticsearchSparkElasticsearch
- 在微信小程式中使用 echarts 圖片-例 折線圖微信小程式Echarts
- Java Word中的文字、圖片替換功能Java
- Serverless 使用阿里雲OOS將http檔案轉存到物件儲存Server阿里HTTP物件
- Java使用FreeMarker模版技術動態生成word實踐Java
- .NET 8 使用官方OpenXml SDK,替換Word中的文字和圖片XML
- 直播網站原始碼,上傳圖片到專案目錄並將相對路徑儲存到資料庫網站原始碼資料庫
- 小程式canvan畫布,現兩張圖片合成一張,並儲存到本地
- 如何採集淘寶直通車的所有圖片,並儲存到電腦上
- MATLAB將figure視窗儲存為圖片Matlab
- 一篇文章帶你使用 Python 將 txt 文件內容儲存到 excel 表中PythonExcel
- Java 將PDF轉為HTML時儲存到流JavaHTML
- 使用JavaScript將當前頁面儲存成PDF,支援圖片和文字的儲存JavaScript
- Java 讀取Word表格中的文字和圖片Java
- Vue SpringBoot實現Html和Markdown格式內容(含圖片上傳)儲存到MySQLVueSpring BootHTMLMySql
- python批量ppt轉圖片,pdf轉圖片,word轉圖片指令碼Python指令碼
- 生成二維碼,並且儲存,指定位置的view成圖片,並且儲存到本地相簿View
- win10 1909系統中如何將有格式圖片文字轉為word格式文字Win10
- word貼上圖片到ckeitor