程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Highcharts結合PhantomJS在服務端生成高質量的圖表圖片

Highcharts結合PhantomJS在服務端生成高質量的圖表圖片

編輯:關於ASP.NET

項目背景

最近忙著給部門開發一套交互式的報表系統,來替換原有的靜態報表系統。

老系統是基於dotnetCHARTING開發的,dotnetCHARTING的優勢是圖表類型豐富,接口調用簡單,使用時只 需綁定數據源即可(指定連接字符和sql語句,簡單的配置一下就能出圖),支持生成靜態圖表圖片;缺點就 是生成好的圖是圖片,傳到了前台就失去了交互性(當然它還提供了一個jsCharting,不過感覺交互性做的還 是不夠好),再有就是這東東是收費的呀,用的話需要折騰破解版本。

我最終選擇了Highcharts(Interactive JavaScript charts for your webpage)來展現前台圖表,通過 Highcharts良好的交互性實現與服務端的數據交互,將數據可視化。

dotnetCHARTING在數據加載的設計上做的還是很不錯的,我在開發過程中借鑒了其處理思想,自己實現了 一套數據加載方案,能夠很方便的把數據傳給Highcharts。這套數據加載方案,簡單的說就是指定好數據庫連 接信息和sql查詢信息,服務端采用ADO.NET執行查詢生成DataSet,然後分析DataSet將數據轉換為Highcharts 能夠直接使用的json格式。

報表的處理細節還是蠻多的,這裡就不在一一討論了,如題,接下來重點跟大家分享一下,服務端生成圖 表圖片那部分的處理細節。

Highcharts服務端生成圖表圖片流程簡介

生成圖片的數據流向倒是比較簡單,如下圖所示:

ASP.NET在服務端生成圖表圖片的方式

根據上述生成圖片的步驟,核心其實就是對第二步的處理,也就是如何將SVG數據在服務端做處理,生成圖 表圖片。

這樣的話,我們的處理思路就很清晰了,直接在服務端把SVG處理為圖片不就可以了,這麼想,也就這麼做 ,剛好網上也有人這麼弄過,於是也就直接借鑒了其代碼,代碼不上了,介紹下用到的dll:

在nuget中搜索svg,可以找到一個SVG Rendering Library的包,可以用這個包將SVG格式的數據保存為圖 片,用法也比較簡單,大家可以到其官網查閱使用方法。

這個大家不必自己去實現,因為highcharts官網已經給出了第三方的ASP.NET導出圖表的模塊(他就是基於 這個SVG Rendering Library實現的):

https://github.com/imclem/Highcharts-export-module-asp.net

SVG Rendering Library的問題

在使用SVG Rendering Library服務端生成圖表圖片的過程中,發現一些問題:

生成的圖片中文字體模糊發虛,整體圖片質量差,跟實際在網頁中顯示的效果差別還真不小

圖表上數據點的dataLabel無法顯示(一開始以為是highcharts配置的問題,後來鑒定是SVG Rendering Library的問題,這個必須修改svg.dll才能解決)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved