自動化郵件報告平臺-郵件發送highchart圖表

前段時間參與開發這樣的一個系統,負責前端設計開發,使用人員提出需要在郵件發送的時候自動獲取這些highchart圖表數據,並顯示在平臺頁面上,當發送郵件的時候也把圖表附帶在郵件中。

highchart是一個比較強大的圖表組件,這個圖表組件以svg方式渲染在網頁上,渲染完畢後會在網頁中添加了svg元素,可以通過dom 或者jQuery 把svg內容單獨抽取出來,此svg元素也能夠在網頁上直接顯示,如下圖所示。 
screenshot

但是,在郵箱環境下,這些svg元素不一定能展示在郵件裏面,各種郵箱環境不同,在手機端郵件和pc端郵件環境也有影響,顯然,這不是我們想要的效果。

我們可以通過把svg轉爲圖片格式傳到後臺處理,或者把svg轉爲base64直接添加到郵件中裏面,等方式去處理,當然處理方式肯定很多,但是離不開svg轉圖片格式的過程。 
最後我們使用base64的方式附帶在郵件中,原因如下。 
1.圖表大小比較小。 
2.平臺運行在內部服務器中,不採用把svg轉爲圖片格式單獨放在外部服務器中,避免把信息暴露在外部,同時也避免了增加外部服務器的措施。

最後問題變爲如何把svg轉爲base64的方式顯示在網頁上。

我們可以通過使用 canvg.js 把svg渲染在canvas上,我們知道canvas有一個函數toDataURL能夠把canvas上顯示的內容保存爲base64,所以以後我們發送郵件的時候把base64圖片追加到郵件正文中顯示就可以了。

TIP: 
anvag.js上遇到的小坑:作者官網版本的canvag把含有中文的圖表轉爲圖片格式後中文亂碼,建議使用附件附帶的canvg版本。

附件附帶:通過canvg.js把svg渲染在canvas上的實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章