Highcharts使用phantomjs匯出圖片
Highcharts使用phantomjs匯出圖片
描述
在用Highcharts這個強大的圖示元件時,你一定在某些時刻想把畫出來的圖示匯出為一個圖片並下載到本地。Highcharts本身提供了匯出功能,只需要匯入exporting.js檔案,就可以在圖表右上角找到匯出按鈕了。這已經基本滿足的大多數情況我們的需求。但是這原始到匯出是傳送請求到Highcharts的伺服器上進行轉化的,很多時候我們並不想把我們的資料資訊暴露給他們,所以我們必須在我們自己的伺服器上完成轉化的服務。
步驟一:phantomjs
Highcharts的下載檔案中有個exporting-server資料夾,裡面是Highcharts提供的一系列轉換方案,有java,phantomjs和php的。在這裡,只講述nodejs+phantomjs的方案。
什麼是phantomjs?
phantomjs可以看做是一個不帶gui的瀏覽器,他的核心也是webkit,我們一般用它來載入網頁去解析dom並獲取資料,或者是利用他來對網頁進行截圖。下載完phantomjs並解壓後,將exporting-server資料夾中的phantomjs資料夾拷貝到解壓後的根目錄下。並執行命令
1
|
phantomjs ./phantomjs/highcharts-convert.js -host 127.0.0.1 -port 3003
|
執行上面的程式碼後,會開啟一個伺服器並監聽3003埠。這個伺服器用來接收我們傳送的圖表資料,並最終將生成的圖片路徑放回給我們。
步驟二:獲取svg資料併傳送給nodejs Server端
瀏覽器端程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
var obj = { infile:$('#container').highcharts().getSVG(), constr:"Chart", //圖表型別 outfile:"E://chart.png" //需要儲存的檔案路徑 }; $.ajax({ url: "http://localhost:3000/highchartsConvert", type: 'POST', dataType: 'json', data: { data:JSON.stringify(obj) } }).done(function(rData){ download(rData); //rData為返回的圖片路徑,如果轉換成功的話,跟outfile的值一樣 //download方法為將檔名或路徑傳遞到後臺,然後nodejs實現檔案下載功能,這裡省略 });
|
nodejs端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
app.post("/highchartsConvert",function(req,res,next){ var reqData = JSON.parse(req.body.data); //傳送到phantomjs轉換伺服器 var options = { hostname: "localhost", port: "3001", path:"", method: "POST", headers: { "Content-Type": 'application/json;charset=utf-8', "Content-Length":reqData.length } }; var req = http.request(options,function(ress){ ress.on('data',function(data){ res.send(data); }); }); req.write(reqData+"\n"); req.end(); });
|
總結
整個轉換過程走了兩個伺服器,首先將圖表資料傳送到nodejs端,然後再轉發到phantomjs的伺服器。中間用node中轉一下是因為要進行某些驗證。
下面是可以傳的引數列表:
- infile:圖表的svg程式碼或者options
- outfile:輸出圖片的路徑+檔名
- constr:圖表型別
- width:圖表在phantomjs中渲染的寬度
- height:圖表在phantomjs中渲染的高度
- callback:圖表在phantomjs中渲染完成後執行
更多資訊請參考
RENDER
CHARTS ON THE SERVER
IMPROVED
IMAGE EXPORT WITH PHANTOMJS
文章作者:foreverpx
文章原文連結:Highcharts使用phantomjs匯出圖片
相關文章
- Highcharts 實現自定義匯出圖片
- phantomjs技巧之golang後端生成highcharts圖片檔案JSGolang後端
- Laravel maatwebsite/excel 3.1 匯出圖片LaravelWebExcel
- SpringBoot圖文教程10—Excel模板匯出|百萬資料匯出|圖片匯出「easypoi」Spring BootExcel
- html2canvas將指定區域匯出為圖片(js將div匯出為圖片)HTMLCanvasJS
- 【SQL】Oracle BLOB 批量匯入匯出圖片語句SQLOracle
- PhpSpreadsheet 匯出圖片到 ExcelPHPExcel
- PPT圖片高畫質匯出方法
- fastadmin匯出圖片zip檔案AST
- java匯出圖片,拼接多個圖片, 拼接文字和圖片 到一個圖片檔案Java
- 匯入圖片
- win10電腦怎樣匯出系統聚焦圖片_win10系統聚焦圖片的匯出教程Win10
- 將treeview控制元件內容匯出圖片View控制元件
- java使用phantomjs進行截圖JavaJS
- 阿里巴巴、微商相簿圖片怎麼匯出來阿里
- pygame 教學 匯入圖片GAM
- Lumen 替換 world 裡面變數並匯出 PDF 圖片變數
- Lumen 替換 Word 裡面變數並匯出 PDF 圖片變數
- 如何將一個PDF檔案裡的圖片批量匯出
- 解鎖canvas匯出圖片跨域的N種姿勢~Canvas跨域
- SSIS: 把儲存在資料庫中的圖片匯出來資料庫
- DcatAdmin 配合 `maatwebsite/excel` 擴充套件 在後臺增加 excel 匯出的功能,並可匯出圖片WebExcel套件
- phantomjs-截圖JS
- pygame 教學 2 —— 匯入圖片GAM
- 3個方法輕鬆將圖片匯出Mac電腦照片程式Mac
- 【20240709】海量圖片匯出需求,shell指令碼指令碼
- HighCharts圖的click事件事件
- Highcharts繪製餅圖
- win7系統下word中如何批量匯出png格式圖片Win7
- win7系統下word中如何批次匯出png格式圖片Win7
- Android:將View的內容對映成Bitmap轉圖片匯出AndroidView
- Highcharts 7.1.1 釋出,製作圖表的純 JS 類庫JS
- 【highcharts應用-雙餅圖】
- web圖片使用Web
- vxe-table v3.10+ 分享匯出 xlsx、支援匯出合併、設定樣式、寬高、邊框、字型、背景、超連結、圖片的使用
- 【freemaker實現匯出word③】詳解將echarts的圖片到出到wordEcharts
- jQuery Highcharts折線圖案例分析jQuery
- HighCharts之圖表背景設定